Estoy trabajando con una gran biblioteca de C donde algunos índices de matriz se calculan usando int
. Necesito encontrar una manera de atrapar desbordamientos enteros en el tiempo de ejecución de forma tal que se reduzca a una línea problemática de código. Libc manual indica:Detectar desbordamiento de enteros
FPE_INTOVF_TRAP Desbordamiento de enteros (imposible en un programa de C a menos que le permiten atrapar desbordamiento de un modo específico del hardware).
Sin embargo, la opción gcc -ffpe-trap
sugiere que solo se aplican a los números FP?
Entonces, ¿cómo habilito la trampa de desbordamiento de enteros? Mi sistema es Xeon/Core2, gcc-4.x, Linux 2.6
He examinado las preguntas similares, pero todas se reducen a la modificación del código. Sin embargo, necesito saber qué código es problemático en primer lugar.
Si Xeons no puede atrapar desbordamientos, ¿qué procesadores pueden? También tengo acceso a máquinas que no son de emt64.
He encontrado una herramienta diseñada para llvm mientras tanto: http://embed.cs.utah.edu/ioc/ ¿No parece haber un equivalente para gcc/icc?
Hasta donde yo sé, ningún procesador x86 admite el atrapamiento en el desbordamiento de enteros. Muchos RISC cpus do (al igual que power y sparc), así como antiguas CPUs de mini/mainframe (como VAX) –
Podría probar Power, sin VAX por ahí. – Anycorn