1 # intdiv0.m4 serial 1 (gettext-0.11.3) 2 dnl Copyright (C) 2002 Free Software Foundation, Inc. 3 dnl This file is free software; the Free Software Foundation 4 dnl gives unlimited permission to copy and/or distribute it, 5 dnl with or without modifications, as long as this notice is preserved. 6 7 dnl From Bruno Haible. 8 9 AC_DEFUN([gt_INTDIV0], 10 [ 11 AC_REQUIRE([AC_PROG_CC])dnl 12 AC_REQUIRE([AC_CANONICAL_HOST])dnl 13 14 AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], 15 gt_cv_int_divbyzero_sigfpe, 16 [ 17 AC_TRY_RUN([ 18 #include <stdlib.h> 19 #include <signal.h> 20 21 static void 22 #ifdef __cplusplus 23 sigfpe_handler (int sig) 24 #else 25 sigfpe_handler (sig) int sig; 26 #endif 27 { 28 /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ 29 exit (sig != SIGFPE); 30 } 31 32 int x = 1; 33 int y = 0; 34 int z; 35 int nan; 36 37 int main () 38 { 39 signal (SIGFPE, sigfpe_handler); 40 /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ 41 #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) 42 signal (SIGTRAP, sigfpe_handler); 43 #endif 44 /* Linux/SPARC yields signal SIGILL. */ 45 #if defined (__sparc__) && defined (__linux__) 46 signal (SIGILL, sigfpe_handler); 47 #endif 48 49 z = x / y; 50 nan = y / y; 51 exit (1); 52 } 53 ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, 54 [ 55 # Guess based on the CPU. 56 case "$host_cpu" in 57 alpha* | i[34567]86 | m68k | s390*) 58 gt_cv_int_divbyzero_sigfpe="guessing yes";; 59 *) 60 gt_cv_int_divbyzero_sigfpe="guessing no";; 61 esac 62 ]) 63 ]) 64 case "$gt_cv_int_divbyzero_sigfpe" in 65 *yes) value=1;; 66 *) value=0;; 67 esac 68 AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, 69 [Define if integer division by zero raises signal SIGFPE.]) 70 ]) 71