Sto lavorando con una libreria C di grandi dimensioni in cui alcuni indici di array sono calcolati utilizzando int
. Ho bisogno di trovare un modo per intrappolare gli overflow integer in fase di runtime in modo tale da restringere a una riga di codice problematica. Libc manuale afferma:Rileva overflow intero
FPE_INTOVF_TRAP Integer Overflow (impossibili in un programma C a meno che non consentono di overflow intrappolare in modo specifico per l'hardware).
tuttavia l'opzione gcc -ffpe-trap
suggerisce che quelli si applicano solo ai numeri FP?
Quindi, come faccio a abilitare il trap trabocco per interi? Il mio sistema è Xeon/Core2, gcc-4.x, Linux 2.6
Ho esaminato domande simili ma tutte si sono decise a modificare il codice. Devo sapere comunque quale codice è problematico in primo luogo.
Se gli Xeon non possono intercettare gli overflow, quali processori possono? Ho accesso anche a macchine non-emt64.
Ho trovato uno strumento progettato per llvm nel frattempo: http://embed.cs.utah.edu/ioc/ Non sembra esserci comunque un equivalente per gcc/icc?
Per quanto ne so, nessun processore x86 supporta il trapping sull'intero overflow. Molti cpus RISC do (almeno lo fanno sia power che sparc), così come le vecchie CPU mini/mainframe (come VAX) –
Potrei provare Power, nessun VAX in giro. – Anycorn