Branch
Hash :
b1fcec6d
Author :
Date :
2025-09-10T23:22:53
Remove support for IRIX. * all-modules: Update comments. * build-aux/install-reloc: Likewise. * build-aux/reloc-ldflags: Likewise. * gnulib-tool: Likewise. * gnulib-tool.py: Likewise. * gnulib-tool.sh: Likewise. * lib/aligned-malloc.h: Likewise. * lib/boot-time.c: Likewise. * lib/c32is-impl.h: Likewise. * lib/c32srtombs-state.c: Likewise. * lib/c32to-impl.h: Likewise. * lib/c32width.c: Likewise. * lib/errno.in.h: Likewise. * lib/euidaccess.c: Likewise. * lib/fbufmode.c: Likewise. * lib/fenv-except-state-get.c: Likewise. * lib/fenv-except-state-set.c: Likewise. * lib/fenv-except-tracking-clear.c: Likewise. * lib/fenv-except-tracking-set.c: Likewise. * lib/fenv-except-tracking-test.c: Likewise. * lib/fenv-except-trapping.c: Likewise. * lib/fenv-round.c: Likewise. * lib/fflush.c: Likewise. * lib/fileblocks.c: Likewise. * lib/forkpty.c: Likewise. * lib/fpending.c: Likewise. * lib/fpurge.c: Likewise. * lib/freadable.c: Likewise. * lib/freadahead.c: Likewise. * lib/freading.c: Likewise. * lib/freadptr.c: Likewise. * lib/freadseek.c: Likewise. * lib/fseeko.c: Likewise. * lib/fseterr.c: Likewise. * lib/fsusage.c: Likewise. * lib/fwritable.c: Likewise. * lib/fwriting.c: Likewise. * lib/getdomainname.c: Likewise. * lib/idpriv-drop.c: Likewise. * lib/idpriv-droptemp.c: Likewise. * lib/limits.in.h: Likewise. * lib/mbrtoc16.c: Likewise. * lib/mbrtoc32.c: Likewise. * lib/mbsrtoc32s-state.c: Likewise. * lib/mbsrtowcs-state.c: Likewise. * lib/mbtowc-lock.h: Likewise. * lib/minmax.h: Likewise. * lib/netdb.in.h: Likewise. * lib/pipe-filter-ii.c: Likewise. * lib/posix_openpt.c: Likewise. * lib/ptsname_r.c: Likewise. * lib/readutmp.c: Likewise. * lib/readutmp.h: Likewise. * lib/resource-ext.h: Likewise. * lib/safe-read.h: Likewise. * lib/safe-write.h: Likewise. * lib/save-cwd.c: Likewise. * lib/stdbool.in.h: Likewise. * lib/striconv.c: Likewise. * lib/striconveh.c: Likewise. * lib/termcap.h: Likewise. * lib/terminfo.h: Likewise. * lib/unistd.in.h: Likewise. * lib/vasnprintf.c: Likewise. * lib/wcrtomb.c: Likewise. * lib/wcsrtombs-state.c: Likewise. * m4/fenv-environment.m4: Likewise. * m4/fenv-exceptions-state.m4: Likewise. * m4/fenv-exceptions-tracking.m4: Likewise. * m4/fenv-rounding.m4: Likewise. * m4/fmod.m4: Likewise. * m4/getdomainname.m4: Likewise. * m4/getloadavg.m4: Likewise. * m4/getopt.m4: Likewise. * m4/hypot.m4: Likewise. * m4/hypotf.m4: Likewise. * m4/hypotl.m4: Likewise. * m4/iconv.m4: Likewise. * m4/intl-thread-locale.m4: Likewise. * m4/largefile.m4: Likewise. * m4/libdl.m4: Likewise. * m4/locale-ja.m4: Likewise. * m4/locale_h.m4: Likewise. * m4/log.m4: Likewise. * m4/log10.m4: Likewise. * m4/log10f.m4: Likewise. * m4/logf.m4: Likewise. * m4/modf.m4: Likewise. * m4/modff.m4: Likewise. * m4/modfl.m4: Likewise. * m4/pthread-rwlock.m4: Likewise. * m4/semaphore.m4: Likewise. * m4/socklen.m4: Likewise. * m4/stdint.m4: Likewise. * m4/strtod.m4: Likewise. * m4/strtof.m4: Likewise. * m4/strtold.m4: Likewise. * modules/sigsegv: Likewise. * posix-modules: Likewise. * pygnulib/GLImport.py: Likewise. * tests/init.sh: Likewise. * tests/test-echo.sh: Likewise. * tests/test-isatty.c: Likewise. * tests/test-math-h.c: Likewise. * tests/test-nonblocking-pipe.h: Likewise. * tests/test-nonblocking-socket.h: Likewise. * tests/test-strtod.h: Likewise. * tests/test-strtof.h: Likewise. * tests/test-strtold.h: Likewise. * tests/test-vasnprintf.c: Likewise. * tests/test-vasnwprintf.c: Likewise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
# fenv-exceptions-tracking.m4
# serial 5
dnl Copyright (C) 2023-2025 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This file is offered as-is, without any warranty.
AC_DEFUN_ONCE([gl_FENV_EXCEPTIONS_TRACKING],
[
AC_REQUIRE([gl_FENV_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
gl_MATHFUNC([feraiseexcept], [int], [(int)], [#include <fenv.h>])
if test $gl_cv_func_feraiseexcept_no_libm = yes \
|| test $gl_cv_func_feraiseexcept_in_libm = yes; then
dnl On glibc 2.19/arm, feraiseexcept does not detect failures.
dnl Fixed through
dnl <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=1a2f40e5d14ed6450696feacf04fca5eeceae7ef>.
dnl On Cygwin 3.4.6/x86_64, feraiseexcept does not trigger traps.
dnl See <https://sourceware.org/pipermail/cygwin/2023-October/254667.html>.
dnl On musl libc, on those CPUs where fenv-except-tracking-raise.c
dnl uses the "generic" approach, feraiseexcept does not trigger traps
dnl because it merely manipulates flags in the control register.
dnl On NetBSD 9.3/x86_64, fetestexcept clears the exception trap bits,
dnl causing the fenv-environment tests to fail.
case "$host" in
arm*-*-linux*)
AC_CACHE_CHECK([whether feraiseexcept works],
[gl_cv_func_feraiseexcept_works],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#ifdef __SOFTFP__
#include <string.h> /* for __GNU_LIBRARY__ */
#ifdef __GNU_LIBRARY__
#include <features.h>
#if __GLIBC__ == 2 && __GLIBC_MINOR__ <= 19
Unlucky user
#endif
#endif
#endif
]],
[])],
[gl_cv_func_feraiseexcept_works="guessing yes"],
[gl_cv_func_feraiseexcept_works="guessing no"])
])
case "$gl_cv_func_feraiseexcept_works" in
*yes) ;;
*) REPLACE_FERAISEEXCEPT=1 ;;
esac
;;
x86_64-*-cygwin*)
AC_CACHE_CHECK([whether feraiseexcept works],
[gl_cv_func_feraiseexcept_works],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
#include <fenv.h>
]],
[[feclearexcept (FE_INVALID);
feenableexcept (FE_INVALID);
feraiseexcept (FE_INVALID);
return 0;
]])
],
[gl_cv_func_feraiseexcept_works=no],
[gl_cv_func_feraiseexcept_works=yes],
[gl_cv_func_feraiseexcept_works="guessing no"])
])
case "$gl_cv_func_feraiseexcept_works" in
*yes) ;;
*) REPLACE_FERAISEEXCEPT=1 ;;
esac
;;
*-*-*-musl* | *-*-midipix*)
dnl This is only needed when the module 'fenv-exceptions-trapping' is
dnl in use.
m4_ifdef([g][l_FENV_EXCEPTIONS_TRAPPING], [
AC_CACHE_CHECK([whether feraiseexcept works],
[gl_cv_func_feraiseexcept_works],
[case "$host_cpu" in
aarch64* | loongarch* | m68k* | s390* | sh4* | *86* | sparc*)
gl_cv_func_feraiseexcept_works="guessing no" ;;
*)
gl_cv_func_feraiseexcept_works="guessing yes" ;;
esac
])
case "$gl_cv_func_feraiseexcept_works" in
*yes) ;;
*) REPLACE_FERAISEEXCEPT=1 ;;
esac
])
;;
powerpc*-*-aix*)
dnl On AIX, the unit test test-fenv-except-state-1 fails if we don't
dnl override feraiseexcept. XXX Not reproducible any more.
dnl REPLACE_FERAISEEXCEPT=1
;;
*86*-*-mingw* | *86*-*-windows*)
dnl On MSVC 14/clang, without this override, there are test failures
dnl (but not with MSVC 14 itself). Maybe fetestexcept does not consider
dnl the exception flags in the SSE unit? It's not clear.
AC_CACHE_CHECK([whether fetestexcept works],
[gl_cv_func_fetestexcept_works],
[AC_EGREP_CPP([Problem], [
#ifndef __MINGW32__
Problem
#endif
],
[gl_cv_func_fetestexcept_works="guessing no"],
[gl_cv_func_fetestexcept_works="guessing yes"])
])
case "$gl_cv_func_fetestexcept_works" in
*yes) ;;
*) REPLACE_FERAISEEXCEPT=1 ;;
esac
;;
x86_64-*-netbsd*)
dnl On NetBSD 9.3/x86_64, fetestexcept is broken: it clears the
dnl floating-point exception trap bits (because it uses an
dnl 'fnstenv' instruction without subsequent 'fldenv' or 'fldcw').
REPLACE_FETESTEXCEPT=1
;;
mips*-*-openbsd*)
dnl On OpenBSD 7.4/mips64, the feclearexcept function does not work:
dnl it misses to clear the "cause bits".
REPLACE_FECLEAREXCEPT=1
;;
*86*-*-minix*)
dnl On Minix 3.3, both the feclearexcept and fetestexcept functions
dnl need to be overridden; otherwise we get unit test failures.
REPLACE_FECLEAREXCEPT=1
REPLACE_FETESTEXCEPT=1
;;
esac
if test $REPLACE_FECLEAREXCEPT = 1 \
&& test $REPLACE_FETESTEXCEPT = 1 \
&& test $REPLACE_FERAISEEXCEPT = 1; then
FENV_EXCEPTIONS_TRACKING_LIBM=
else
dnl It needs linking with -lm on
dnl glibc, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, Solaris, Android.
if test $gl_cv_func_feraiseexcept_no_libm = yes; then
FENV_EXCEPTIONS_TRACKING_LIBM=
else
FENV_EXCEPTIONS_TRACKING_LIBM=-lm
fi
fi
else
HAVE_FECLEAREXCEPT=0
HAVE_FETESTEXCEPT=0
HAVE_FERAISEEXCEPT=0
case "$host" in
alpha*-*-linux*)
dnl For feraiseexcept, which we take from libm.
FENV_EXCEPTIONS_TRACKING_LIBM=-lm
;;
*)
FENV_EXCEPTIONS_TRACKING_LIBM=
;;
esac
fi
if { test $HAVE_FECLEAREXCEPT = 0 || test $REPLACE_FECLEAREXCEPT = 1; } \
|| { test $HAVE_FETESTEXCEPT = 0 || test $REPLACE_FETESTEXCEPT = 1; }; then
gl_PREREQ_FENV_EXCEPTIONS
dnl Possibly need -lm for fpgetsticky(), fpsetsticky().
if test $gl_cv_func_fpsetsticky_no_libm = no \
&& test $gl_cv_func_fpsetsticky_in_libm = yes \
&& test -z "$FENV_EXCEPTIONS_TRACKING_LIBM"; then
FENV_EXCEPTIONS_TRACKING_LIBM=-lm
fi
fi
AC_SUBST([FENV_EXCEPTIONS_TRACKING_LIBM])
])