1# intdiv0.m4 serial 2 (gettext-0.17) 2dnl Copyright (C) 2002, 2007 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 gt_cv_int_divbyzero_sigfpe= 18changequote(,)dnl 19 case "$host_os" in 20 macos* | darwin[6-9]* | darwin[1-9][0-9]*) 21 # On MacOS X 10.2 or newer, just assume the same as when cross- 22 # compiling. If we were to perform the real test, 1 Crash Report 23 # dialog window would pop up. 24 case "$host_cpu" in 25 i[34567]86 | x86_64) 26 gt_cv_int_divbyzero_sigfpe="guessing yes" ;; 27 esac 28 ;; 29 esac 30changequote([,])dnl 31 if test -z "$gt_cv_int_divbyzero_sigfpe"; then 32 AC_TRY_RUN([ 33#include <stdlib.h> 34#include <signal.h> 35 36static void 37sigfpe_handler (int sig) 38{ 39 /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ 40 exit (sig != SIGFPE); 41} 42 43int x = 1; 44int y = 0; 45int z; 46int nan; 47 48int main () 49{ 50 signal (SIGFPE, sigfpe_handler); 51/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ 52#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) 53 signal (SIGTRAP, sigfpe_handler); 54#endif 55/* Linux/SPARC yields signal SIGILL. */ 56#if defined (__sparc__) && defined (__linux__) 57 signal (SIGILL, sigfpe_handler); 58#endif 59 60 z = x / y; 61 nan = y / y; 62 exit (1); 63} 64], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, 65 [ 66 # Guess based on the CPU. 67changequote(,)dnl 68 case "$host_cpu" in 69 alpha* | i[34567]86 | x86_64 | m68k | s390*) 70 gt_cv_int_divbyzero_sigfpe="guessing yes";; 71 *) 72 gt_cv_int_divbyzero_sigfpe="guessing no";; 73 esac 74changequote([,])dnl 75 ]) 76 fi 77 ]) 78 case "$gt_cv_int_divbyzero_sigfpe" in 79 *yes) value=1;; 80 *) value=0;; 81 esac 82 AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, 83 [Define if integer division by zero raises signal SIGFPE.]) 84]) 85