Как сделать работу gcc ftrapv?

Я компилирую код ниже как

$ gcc -Wall  -ftrapv test.c

Однако выполнение сгенерированного исполняемого файла всегда печатает-2147483648, что не то, что я ожидал. Я запускаю gcc версии 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5).

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <limits.h>
  4 #include <signal.h>
  5 
  6 void h(int signal)
  7 {
  8         printf("caught signal exiting\n");
  9         exit(1);
 10 }
 11 
 12 int main(void)
 13 {
 14         int x = INT_MAX;
 15         int y;
 16 
 17         signal(SIGABRT,h);
 18         y = x+1;
 19         printf("%d\n",y);
 20         return 0;
 21 }

Добавлено позже: компиляция с clang и смена SIGABRT на SIGILL работает, но пока не удача с gcc.

Ответы

Ответ 1

Похоже, что поддержка -ftrapv в GCC несколько сломана, у них есть открытая ошибка Bug-35412 в их Bugzilla с 2008 года кажется, чтобы покрыть его.