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 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
# fenv-exceptions-state.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([gl_FENV_EXCEPTIONS_STATE],
[
AC_REQUIRE([gl_FENV_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
gl_MATHFUNC([fesetexceptflag], [int], [(fexcept_t const *, int)],
[#include <fenv.h>
fexcept_t fx_ret;
])
if test $gl_cv_func_fesetexceptflag_no_libm = yes \
|| test $gl_cv_func_fesetexceptflag_in_libm = yes; then
dnl It needs linking with -lm on
dnl glibc, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, Solaris, Android.
if test $gl_cv_func_fesetexceptflag_no_libm = yes; then
FENV_EXCEPTIONS_STATE_LIBM=
else
FENV_EXCEPTIONS_STATE_LIBM=-lm
fi
dnl On glibc 2.19/s390,s390x, fegetexceptflag is not consistent with the
dnl generic implementation of fetestexceptflag, leading to a failure of
dnl test-fenv-except-state-3. Fixed through
dnl <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5d96fe8c0dc3450bafe6c2aae2dabc76819df3e0>.
case "$host" in
s390*-*-linux*)
AC_CACHE_CHECK([whether fegetexceptflag works],
[gl_cv_func_fegetexceptflag_works],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#include <string.h> /* for __GNU_LIBRARY__ */
#ifdef __GNU_LIBRARY__
#include <features.h>
#if __GLIBC__ == 2 && __GLIBC_MINOR__ <= 22
Unlucky user
#endif
#endif
]],
[])],
[gl_cv_func_fegetexceptflag_works="guessing yes"],
[gl_cv_func_fegetexceptflag_works="guessing no"])
])
case "$gl_cv_func_fegetexceptflag_works" in
*yes) ;;
*)
REPLACE_FEGETEXCEPTFLAG=1
REPLACE_FESETEXCEPTFLAG=1
;;
esac
;;
esac
if test $REPLACE_FESETEXCEPTFLAG = 0; then
dnl Persuade glibc <fenv.h> to declare feenableexcept().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
gl_MATHFUNC([feenableexcept], [int], [(int)], [#include <fenv.h>])
dnl On glibc 2.37 for PowerPC, i386, x86_64, fesetexceptflag may raise
dnl traps. Likewise on Mac OS X 10.5.8 on i386, x86_64, on mingw, and
dnl on Haiku on i386, x86_64.
AC_CACHE_CHECK([whether fesetexceptflag is guaranteed non-trapping],
[gl_cv_func_fesetexceptflag_works1],
[if test $gl_cv_func_feenableexcept_no_libm = yes \
|| test $gl_cv_func_feenableexcept_in_libm = yes; then
dnl A platform that has feenableexcept.
saved_LIBS="$LIBS"
if test $gl_cv_func_feenableexcept_no_libm != yes; then
LIBS="$LIBS -lm"
fi
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
#include <fenv.h>
static volatile double a, b;
static volatile long double al, bl;
]],
[[fexcept_t saved_flags;
if (feraiseexcept (FE_INVALID) == 0
&& fegetexceptflag (&saved_flags, FE_INVALID) == 0
&& feclearexcept (FE_INVALID) == 0
&& feenableexcept (FE_INVALID) == 0
&& fesetexceptflag (&saved_flags, FE_INVALID) == 0)
{
a = 1.0; b = a + a;
al = 1.0L; bl = al + al;
}
return 0;
]])
],
[gl_cv_func_fesetexceptflag_works1=yes],
[dnl On OpenBSD 7.4/mips64 this test fails because feclearexcept
dnl is buggy, not because of fesetexceptflag.
case "$host" in
mips*-*-openbsd*)
gl_cv_func_fesetexceptflag_works1="guessing yes"
;;
*)
gl_cv_func_fesetexceptflag_works1=no
;;
esac
],
[case "$host_os" in
# Guess yes or no on glibc systems, depending on CPU.
*-gnu*)
case "$host_cpu" in
changequote(,)dnl
powerpc* | i[34567]86 | x86_64)
changequote([,])dnl
gl_cv_func_fesetexceptflag_works1="guessing no" ;;
*)
gl_cv_func_fesetexceptflag_works1="guessing yes" ;;
esac
;;
# If we don't know, obey --enable-cross-guesses.
*) gl_cv_func_fesetexceptflag_works1="$gl_cross_guess_normal" ;;
esac
])
LIBS="$saved_LIBS"
else
case "$host_os" in
# Guess no on musl libc.
# In musl/src/fenv/fesetexceptflag.c, fesetexceptflag() explicitly
# invokes feraiseexcept(). It's mentioned in
# <https://wiki.musl-libc.org/functional-differences-from-glibc.html>.
*-musl* | midipix*)
gl_cv_func_fesetexceptflag_works1="guessing no"
;;
# Guess no on macOS.
darwin*)
gl_cv_func_fesetexceptflag_works1="guessing no"
;;
# Guess no on mingw.
mingw* | windows*)
AC_EGREP_CPP([Problem], [
#ifdef __MINGW32__
Problem
#endif
],
[gl_cv_func_fesetexceptflag_works1="guessing no"],
[gl_cv_func_fesetexceptflag_works1="guessing yes"])
;;
# Guess no on Haiku.
haiku*)
gl_cv_func_fesetexceptflag_works1="guessing no"
;;
*) gl_cv_func_fesetexceptflag_works1="guessing yes" ;;
esac
fi
])
dnl On glibc 2.37 for alpha, fesetexceptflag clears too many flag bits.
AC_CACHE_CHECK([whether fesetexceptflag obeys its arguments],
[gl_cv_func_fesetexceptflag_works2],
[saved_LIBS="$LIBS"
LIBS="$LIBS $FENV_EXCEPTIONS_STATE_LIBM"
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
#include <fenv.h>
]],
[[fexcept_t f1, f2;
if (feraiseexcept (FE_DIVBYZERO | FE_OVERFLOW | FE_INEXACT) == 0
&& fegetexceptflag (&f1, FE_DIVBYZERO | FE_OVERFLOW | FE_INEXACT) == 0
&& feclearexcept (FE_OVERFLOW | FE_INEXACT) == 0
&& fegetexceptflag (&f2, FE_OVERFLOW) == 0
&& fesetexceptflag (&f1, FE_DIVBYZERO | FE_OVERFLOW) == 0
&& fesetexceptflag (&f2, FE_OVERFLOW) == 0
&& fetestexcept (FE_DIVBYZERO) != FE_DIVBYZERO)
return 1;
return 0;
]])
],
[gl_cv_func_fesetexceptflag_works2=yes],
[gl_cv_func_fesetexceptflag_works2=no],
[case "$host_os" in
# Guess yes or no on glibc systems, depending on CPU.
*-gnu*)
case "$host_cpu" in
alpha*)
gl_cv_func_fesetexceptflag_works2="guessing no" ;;
*)
gl_cv_func_fesetexceptflag_works2="guessing yes" ;;
esac
;;
# If we don't know, obey --enable-cross-guesses.
*) gl_cv_func_fesetexceptflag_works2="$gl_cross_guess_normal" ;;
esac
])
LIBS="$saved_LIBS"
])
case "$gl_cv_func_fesetexceptflag_works1" in
*yes) ;;
*) REPLACE_FESETEXCEPTFLAG=1 ;;
esac
case "$gl_cv_func_fesetexceptflag_works2" in
*yes) ;;
*) REPLACE_FESETEXCEPTFLAG=1 ;;
esac
dnl Additionally, on FreeBSD/powerpc64 and NetBSD/powerpc, the unit test
dnl test-fenv-except-state-2 fails if we don't override fesetexceptflag.
dnl The function fesetexceptflag apparently fails to restore the
dnl FE_INVALID flag.
case "$host" in
powerpc*-*-freebsd* | powerpc*-*-netbsd*)
REPLACE_FESETEXCEPTFLAG=1
;;
esac
dnl Additionally, on AIX, the unit test test-fenv-except-state-1 fails
dnl if we don't override fesetexceptflag.
case "$host" in
powerpc*-*-aix*)
REPLACE_FESETEXCEPTFLAG=1
;;
esac
dnl Additionally, on MSVC, we want the bits in the saved state to be
dnl identified by the FE_* macros, so that the fetestexceptflag function
dnl can be implemented like on other platforms. This requires conversions
dnl (exceptions_to_x86hardware, x86hardware_to_exceptions) in both
dnl of the fegetexceptflag, fesetexceptflag functions.
case "$host_os" in
mingw* | windows*)
AC_EGREP_CPP([Problem], [
#ifndef __MINGW32__
Problem
#endif
],
[REPLACE_FEGETEXCEPTFLAG=1; REPLACE_FESETEXCEPTFLAG=1],
[])
;;
esac
fi
else
HAVE_FEGETEXCEPTFLAG=0
HAVE_FESETEXCEPTFLAG=0
FENV_EXCEPTIONS_STATE_LIBM=
fi
if { test $HAVE_FEGETEXCEPTFLAG = 0 || test $REPLACE_FEGETEXCEPTFLAG = 1; } \
|| { test $HAVE_FESETEXCEPTFLAG = 0 || test $REPLACE_FESETEXCEPTFLAG = 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_STATE_LIBM"; then
FENV_EXCEPTIONS_STATE_LIBM=-lm
fi
fi
AC_SUBST([FENV_EXCEPTIONS_STATE_LIBM])
])