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
# strtof.m4
# serial 5
dnl Copyright (C) 2002-2003, 2006-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_FUNC_STRTOF],
[
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
dnl Test whether strtof is declared.
dnl Don't call AC_FUNC_STRTOF, because it does not have the right guess
dnl when cross-compiling.
dnl Don't call AC_CHECK_FUNCS([strtof]) because it would collide with the
dnl ac_cv_func_strtof variable set by the AC_FUNC_STRTOF macro.
AC_CHECK_DECLS_ONCE([strtof])
if test $ac_cv_have_decl_strtof != yes; then
HAVE_STRTOF=0
fi
if test $HAVE_STRTOF = 1; then
AC_DEFINE([HAVE_STRTOF], [1],
[Define to 1 if you have the 'strtof' function.])
AC_CACHE_CHECK([whether strtof obeys C99], [gl_cv_func_strtof_works],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([[
#include <stdlib.h>
#include <float.h>
#include <math.h>
#include <errno.h>
/* Compare two numbers with ==.
This is a separate function in order to disable compiler optimizations. */
static int
numeric_equal (float x, float y)
{
return x == y;
}
]], [[
int result = 0;
{
/* In some old versions of Linux (2000 or before), strtof mis-parses
strings with leading '+'. */
const char *string = " +69";
char *term;
float value = strtof (string, &term);
if (value != 69 || term != (string + 4))
result |= 1;
}
{
/* Under Solaris 2.4, strtof returns the wrong value for the
terminating character under some conditions. */
const char *string = "NaN";
char *term;
strtof (string, &term);
if (term != string && *(term - 1) == 0)
result |= 1;
}
{
/* Older glibc and Cygwin mis-parse "-0x". */
const char *string = "-0x";
char *term;
float value = strtof (string, &term);
float zero = 0.0f;
if (1.0f / value != -1.0f / zero || term != (string + 2))
result |= 2;
}
{
/* Many platforms do not parse hex floats. */
const char *string = "0XaP+1";
char *term;
float value = strtof (string, &term);
if (value != 20.0f || term != (string + 6))
result |= 4;
}
{
/* Many platforms do not parse infinities. HP-UX 11.31 parses inf,
but mistakenly sets errno. */
const char *string = "inf";
char *term;
float value;
errno = 0;
value = strtof (string, &term);
if (value != HUGE_VAL || term != (string + 3) || errno)
result |= 8;
}
{
/* In mingw 5.0 without __USE_MINGW_ANSI_STDIO and __USE_MINGW_STRTOX,
strtof does not set errno upon overflow. */
const char *string = "1e50";
char *term;
float value;
errno = 0;
value = strtof (string, &term);
if (value != HUGE_VAL || term != (string + 4) || errno != ERANGE)
result |= 8;
}
{
/* glibc 2.7 and cygwin 1.5.24 misparse "nan()". */
const char *string = "nan()";
char *term;
float value = strtof (string, &term);
if (numeric_equal (value, value) || term != (string + 5))
result |= 16;
}
{
/* Darwin 10.6.1 (macOS 10.6.6) misparses "nan(". */
const char *string = "nan(";
char *term;
float value = strtof (string, &term);
if (numeric_equal (value, value) || term != (string + 3))
result |= 16;
}
#ifndef _MSC_VER /* On MSVC, this is expected behaviour. */
{
/* In Cygwin 2.9 and mingw 5.0, strtof does not set errno upon
gradual underflow. */
const char *string = "1e-40";
char *term;
float value;
errno = 0;
value = strtof (string, &term);
if (term != (string + 5)
|| (value > 0.0f && value <= FLT_MIN && errno != ERANGE))
result |= 32;
}
#endif
{
/* In Cygwin 2.9 and mingw 5.0, strtof does not set errno upon
flush-to-zero underflow. */
const char *string = "1E-100000";
char *term;
float value;
errno = 0;
value = strtof (string, &term);
if (term != (string + 9) || (value == 0.0L && errno != ERANGE))
result |= 64;
}
return result;
]])],
[gl_cv_func_strtof_works=yes],
[result=$?
if expr $result '>=' 64 >/dev/null; then
gl_cv_func_strtof_works="no (underflow problem)"
else
if expr $result '>=' 32 >/dev/null; then
gl_cv_func_strtof_works="no (gradual underflow problem)"
else
gl_cv_func_strtof_works=no
fi
fi
],
[dnl The last known bugs in glibc strtof(), as of this writing,
dnl were fixed in version 2.8
AC_EGREP_CPP([Lucky user],
[
#include <features.h>
#ifdef __GNU_LIBRARY__
#if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8) || (__GLIBC__ > 2)) \
&& !defined __UCLIBC__
Lucky user
#endif
#endif
],
[gl_cv_func_strtof_works="guessing yes"],
[case "$host_os" in
# Guess yes on musl systems.
*-musl* | midipix*) gl_cv_func_strtof_works="guessing yes" ;;
# Guess 'no (underflow problem)' on Cygwin.
cygwin*) gl_cv_func_strtof_works="guessing no (underflow problem)" ;;
# Guess 'no (underflow problem)' on mingw.
# (Although the results may vary depending on
# __USE_MINGW_ANSI_STDIO and __USE_MINGW_STRTOX.)
mingw* | windows*) gl_cv_func_strtof_works="guessing no (underflow problem)" ;;
*) gl_cv_func_strtof_works="$gl_cross_guess_normal" ;;
esac
])
])
])
case "$gl_cv_func_strtof_works" in
*yes) ;;
*)
REPLACE_STRTOF=1
case "$gl_cv_func_strtof_works" in
*"no (underflow problem)")
AC_DEFINE([STRTOF_HAS_UNDERFLOW_BUG], [1],
[Define to 1 if strtof does not set errno upon flush-to-zero underflow.])
;;
*"no (gradual underflow problem)")
AC_DEFINE([STRTOF_HAS_GRADUAL_UNDERFLOW_PROBLEM], [1],
[Define to 1 if strtof does not set errno upon gradual underflow.])
;;
esac
;;
esac
fi
])
# Prerequisites of lib/strtof.c.
AC_DEFUN([gl_PREREQ_STRTOF], [
AC_REQUIRE([gl_CHECK_LDEXPF_NO_LIBM])
if test $gl_cv_func_ldexpf_no_libm = yes; then
AC_DEFINE([HAVE_LDEXPF_IN_LIBC], [1],
[Define if the ldexpf function is available in libc.])
fi
gl_CHECK_FUNCS_ANDROID([nl_langinfo], [[#include <langinfo.h>]])
])