1# intdiv0.m4 serial 5 (gettext-0.18.2) 2dnl Copyright (C) 2002, 2007-2008, 2010-2011 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_RUN_IFELSE( 33 [AC_LANG_SOURCE([[ 34#include <stdlib.h> 35#include <signal.h> 36 37static void 38sigfpe_handler (int sig) 39{ 40 /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ 41 exit (sig != SIGFPE); 42} 43 44int x = 1; 45int y = 0; 46int z; 47int nan; 48 49int main () 50{ 51 signal (SIGFPE, sigfpe_handler); 52/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ 53#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) 54 signal (SIGTRAP, sigfpe_handler); 55#endif 56/* Linux/SPARC yields signal SIGILL. */ 57#if defined (__sparc__) && defined (__linux__) 58 signal (SIGILL, sigfpe_handler); 59#endif 60 61 z = x / y; 62 nan = y / y; 63 exit (2); 64} 65]])], 66 [gt_cv_int_divbyzero_sigfpe=yes], 67 [gt_cv_int_divbyzero_sigfpe=no], 68 [ 69 # Guess based on the CPU. 70changequote(,)dnl 71 case "$host_cpu" in 72 alpha* | i[34567]86 | x86_64 | m68k | s390*) 73 gt_cv_int_divbyzero_sigfpe="guessing yes";; 74 *) 75 gt_cv_int_divbyzero_sigfpe="guessing no";; 76 esac 77changequote([,])dnl 78 ]) 79 fi 80 ]) 81 case "$gt_cv_int_divbyzero_sigfpe" in 82 *yes) value=1;; 83 *) value=0;; 84 esac 85 AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], 86 [Define if integer division by zero raises signal SIGFPE.]) 87]) 88