Ich arbeite mit einer großen C-Bibliothek, wo einige Array-Indizes mit int
berechnet werden. Ich muss einen Weg finden, Integer-Überläufe zur Laufzeit so zu fangen, dass sie sich auf problematische Codezeilen beschränken. Libc Handbuch heißt es:Detect Integer-Überlauf
FPE_INTOVF_TRAP Integer Überlauf (nicht in einem C-Programm, wenn Sie Überlauf ermöglichen, in einer Hardware-spezifische Art und Weise Trapping).
jedoch GCC-Option -ffpe-trap
schlägt vor, dass diese nur für FP-Nummern gelten?
So wie ich Integer Overflow Trap aktivieren? Mein System ist Xeon/Core2, gcc-4.x, Linux 2.6
Ich habe ähnliche Fragen durchgesehen, aber sie alle kochen, um den Code zu ändern. Ich muss jedoch wissen, welcher Code überhaupt problematisch ist.
Wenn Xeons Überläufe nicht abfangen können, welche Prozessoren können? Ich habe auch Zugriff auf Nicht-Emt64-Maschinen.
Ich habe inzwischen ein Tool für llvm gefunden: http://embed.cs.utah.edu/ioc/ Es scheint aber kein Äquivalent für gcc/icc zu sein?
Soweit ich weiß, unterstützt kein x86-Prozessor Trapping auf Integer-Überlauf. Viele RISC-CPUs (mindestens Power und Sparc), sowie ältere Mini/Mainframe-CPUs (wie VAX) –
könnte ich Power ausprobieren, keine VAX herumliegen. – Anycorn