Pracuję z dużą biblioteką C, w której niektóre indeksy tablicowe są obliczane przy użyciu int
. Potrzebuję znaleźć sposób przechwytywania przepełnienia liczby całkowitej w czasie wykonywania w taki sposób, aby zawęzić do problematycznych linii kodu. Libc ręczne stany:Wykrywanie przepełnienia liczby całkowitej
FPE_INTOVF_TRAP Integer overflow (niemożliwe w programie C, chyba że włączysz przepełnienie odłowu w sposób sprzętowy specyficzny).
Jednak opcja gcc -ffpe-trap
sugeruje, że odnoszą się one tylko do numerów FP?
Więc jak mogę włączyć pułapkę przepełnienia typu integer? Mój system to Xeon/Core2, gcc-4.x, Linux 2.6
Przejrzałem podobne pytania, ale wszystkie one chcą zmodyfikować kod. Muszę jednak wiedzieć, który kod jest problematyczny.
Jeśli Xeons nie może przechwycić przepełnień, które procesory mogą? Mam również dostęp do maszyn innych niż emt64.
Znalazłem narzędzie przeznaczone do llvm tymczasem: http://embed.cs.utah.edu/ioc/ Nie wydaje się jednak być odpowiednikiem dla gcc/icc?
O ile mi wiadomo, żaden procesor x86 nie obsługuje zalewkowania na przepełnieniu całkowitym. Wiele procesorów RISC (przynajmniej power i sparc), a także starsze procesory mini/mainframe (takie jak VAX). –
Mogę wypróbować Power, bez układania VAX. – Anycorn