Using feenableexcept() does not really work on linux: it is broken and makes the signal handler be ignored.

This commit is contained in:
Juan Jose Garcia Ripoll 2009-10-08 20:09:36 +02:00
parent ae89c2f09d
commit fad9e444e5
3 changed files with 10 additions and 3 deletions

View file

@ -11,6 +11,11 @@ ECL 9.10.2:
- The package MP is needed also in single-threaded versions (for
mp:with-lock, which is used in CLX).
- In Linux there is a problem with handlers for SIGFPE being totally ignored
by the system. The problem seems to be solved by refusing to use
feenableexcept() and restricting to C99 exception tests. That is bad because
we can not reliably and cheaply detect underflow exceptions.
ECL 9.10.1:
===========

4
src/configure vendored
View file

@ -12988,9 +12988,8 @@ done
for ac_func in nanosleep alarm times select setenv putenv \
lstat mkstemp sigprocmask isatty feenableexcept tzset \
lstat mkstemp sigprocmask isatty tzset \
gettimeofday getrusage
do
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@ -13109,6 +13108,7 @@ done
for ac_func in expf logf sqrtf cosf sinf tanf sinhf coshf tanhf \
floorf ceilf fabsf frexpf ldexpf log1p log1pf log1pl \

View file

@ -653,9 +653,11 @@ AC_CHECK_FUNCS( [floor getcwd gethostbyaddr gethostbyname getpagesize] \
dnl !!! end autoscan
AC_CHECK_FUNCS( [nanosleep alarm times select setenv putenv] \
[lstat mkstemp sigprocmask isatty feenableexcept tzset] \
[lstat mkstemp sigprocmask isatty tzset] \
[gettimeofday getrusage] )
dnl AC_CHECK_FUNCS( [ feenableexcept ] )
AC_CHECK_FUNCS( [expf logf sqrtf cosf sinf tanf sinhf coshf tanhf] \
[floorf ceilf fabsf frexpf ldexpf log1p log1pf log1pl] \
[copysign] )