1# intdiv0.m4 serial 1 (gettext-0.11.3) 2dnl Copyright (C) 2002 Free Software Foundation, Inc. 3dnl This file is free software; the Free Software Foundation 4dnl gives unlimited permission to copy and/or distribute it, 5dnl with or without modifications, as long as this notice is preserved. 6 7dnl From Bruno Haible. 8 9AC_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 21static void 22#ifdef __cplusplus 23sigfpe_handler (int sig) 24#else 25sigfpe_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 32int x = 1; 33int y = 0; 34int z; 35int nan; 36 37int 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