]> Savannah Git Hosting - gnulib.git/log
gnulib.git
17 months agofenv-exceptions-state-c99: Update doc regarding Minix.
Bruno Haible [Mon, 6 Nov 2023 13:09:17 +0000 (14:09 +0100)]
fenv-exceptions-state-c99: Update doc regarding Minix.

* doc/posix-functions/fesetexceptflag.texi: Mention the Minix bug.

18 months agofenv-exceptions-trapping: Avoid test failure on Minix.
Bruno Haible [Sun, 5 Nov 2023 21:47:59 +0000 (22:47 +0100)]
fenv-exceptions-trapping: Avoid test failure on Minix.

* tests/test-fenv-except-trapping-2.c (main): Skip the '4' tests also on
Minix.

18 months agofenv-exceptions-tracking-c99: Fix test failures on Minix.
Bruno Haible [Sun, 5 Nov 2023 22:25:08 +0000 (23:25 +0100)]
fenv-exceptions-tracking-c99: Fix test failures on Minix.

* m4/fenv-exceptions-tracking.m4 (gl_FENV_EXCEPTIONS_TRACKING): On
Minix, set REPLACE_FECLEAREXCEPT and REPLACE_FETESTEXCEPT to 1.
* doc/posix-functions/feclearexcept.texi: Mention the Minix bug.
* doc/posix-functions/fetestexcept.texi: Likewise.

18 months agofenv-exceptions-trapping: Avoid test failure on Haiku/i386.
Bruno Haible [Sun, 5 Nov 2023 21:22:35 +0000 (22:22 +0100)]
fenv-exceptions-trapping: Avoid test failure on Haiku/i386.

* tests/test-fenv-except-trapping-2.c (main): Skip the '4' tests also on
Haiku/i386.

18 months agofenv-exceptions-state: Fix test failure on Haiku/i386 and Haiku/x86_64.
Bruno Haible [Sun, 5 Nov 2023 21:16:38 +0000 (22:16 +0100)]
fenv-exceptions-state: Fix test failure on Haiku/i386 and Haiku/x86_64.

* m4/fenv-exceptions-state.m4 (gl_FENV_EXCEPTIONS_STATE): Arrange to
override fesetexceptflag() on Haiku.
* doc/posix-functions/fesetexceptflag.texi: Mention the Haiku bug.

18 months agofenv: Add C++ tests.
Bruno Haible [Sun, 5 Nov 2023 15:03:46 +0000 (16:03 +0100)]
fenv: Add C++ tests.

* tests/test-fenv-c++.cc: New file.
* modules/fenv-c++-tests: New file.
* modules/fenv-tests (Depends-on): Add it.

18 months agofenv-environment: Add tests.
Bruno Haible [Sun, 5 Nov 2023 14:21:06 +0000 (15:21 +0100)]
fenv-environment: Add tests.

* tests/test-fenv-env-1.c: New file.
* tests/test-fenv-env-2.c: New file.
* tests/test-fenv-env-3.c: New file.
* tests/test-fenv-env-4.c: New file.
* tests/test-fenv-env-5.sh: New file.
* tests/test-fenv-env-5.c: New file.
* modules/fenv-environment-tests: New file.

18 months agofenv-environment: New module.
Bruno Haible [Sun, 5 Nov 2023 14:00:29 +0000 (15:00 +0100)]
fenv-environment: New module.

* lib/fenv.in.h (fenv_t) [hppa]: Remove the __exception field.
(FE_DFL_ENV): Override if <fenv.h> exists but HAVE_FE_DFL_ENV is not
defined.
(fegetenv, fesetenv, feupdateenv, feholdexcept): New declarations.
* lib/fenv-env.c: New file, based on glibc.
* lib/fenv-env-hold.c: New file.
* lib/fenv-env-update.c: New file.
* m4/fenv-environment.m4: New file.
* m4/mathfunc.m4 (gl_MATHFUNC): Handle also the 'fenv_t *' type.
* m4/fenv_h.m4 (gl_FENV_H_DEFAULTS): Initialize REPLACE_FEGETENV,
REPLACE_FEHOLDEXCEPT, REPLACE_FESETENV, REPLACE_FEUPDATEENV.
* modules/fenv (Makefile.am): Substitute REPLACE_FEGETENV,
REPLACE_FEHOLDEXCEPT, REPLACE_FESETENV, REPLACE_FEUPDATEENV.
* modules/fenv-environment: New file.
* doc/posix-functions/fegetenv.texi: Mention the new module and the bugs
on glibc, macOS, AIX.
* doc/posix-functions/feholdexcept.texi: Mention the new module and the
bugs on glibc, musl libc, FreeBSD, AIX, mingw, MSVC.
* doc/posix-functions/fesetenv.texi: Mention the new module and the bugs
on musl libc, FreeBSD, NetBSD, AIX, Solaris, Cygwin, mingw, MSVC.
* doc/posix-functions/feupdateenv.texi: Mention the new module and the
bugs on glibc, musl libc, macOS, FreeBSD, AIX, Solaris, mingw, MSVC.

18 months agofenv-exceptions-tracking-c99 tests: Enhance tests.
Bruno Haible [Sun, 5 Nov 2023 13:50:08 +0000 (14:50 +0100)]
fenv-exceptions-tracking-c99 tests: Enhance tests.

* tests/test-fenv-except-tracking-3.sh: Test not only FE_INVALID, but
also FE_DIVBYZERO, FE_OVERFLOW, FE_UNDERFLOW, FE_INEXACT.
* tests/test-fenv-except-tracking-3.c: Include <stdlib.h>, <string.h>.
Don't include fpe-trapping.h. Assume HAVE_FPE_TRAPPING is 1.
(main): Receive the exception to test as first argument.

18 months agofpe-trapping: Simplify.
Bruno Haible [Sun, 5 Nov 2023 13:34:39 +0000 (14:34 +0100)]
fpe-trapping: Simplify.

* lib/fpe-trapping.h (sigfpe_on_invalid): Remove all platform specific
code. Just rely on feclearexcept and feenableexcept.
* m4/fpe-trapping.m4: Renamed from m4/fpe.m4.
(gl_FPE_TRAPPING): Greatly simplify.
* modules/fpe-trapping (Files): Use m4/fpe-trapping.m4 instead of
m4/fpe.m4. Remove m4/mathfunc.m4, m4/musl.m4.
(Depends-on): Add fenv-exceptions-trapping.
* tests/test-fenv-except-state-2.c (main): Update skip message.
* tests/test-fenv-except-tracking-2.c (main): Likewise.
* tests/test-fenv-except-tracking-3.c (main): Likewise.
* tests/test-fenv-except-tracking-5.c (main): Likewise.
* tests/test-nan-2.c (main): Likewise.
* tests/test-snan-2.c (main): Likewise.

18 months agofpe-tracking: Remove module.
Bruno Haible [Sun, 5 Nov 2023 13:27:47 +0000 (14:27 +0100)]
fpe-tracking: Remove module.

* modules/fpe-tracking: Remove file.
* m4/fpe.m4 (gl_FPE_TRACKING): Remove macro.
(gl_FPE_TRAPPING): Require gl_FENV_EXCEPTIONS_TRACKING instead of
gl_FPE_TRACKING. Use FENV_EXCEPTIONS_TRACKING_LIBM instead of
FPE_TRACKING_LIBM.
* modules/nan-tests (Depends-on): Add fenv-exceptions-tracking-c99.
Remove fpe-tracking.
(Makefile.am): Use FENV_EXCEPTIONS_TRACKING_LIBM instead of
FPE_TRACKING_LIBM.
* modules/snan-tests (Depends-on): Add fenv-exceptions-tracking-c99.
Remove fpe-tracking.
(Makefile.am): Use FENV_EXCEPTIONS_TRACKING_LIBM instead of
FPE_TRACKING_LIBM.
* tests/test-nan-1.c: Assume HAVE_FE_INVALID is 1.
* tests/test-snan-1.c: Likewise.

18 months agofenv-exceptions-trapping: Avoid test failure on NetBSD/sparc.
Bruno Haible [Sun, 5 Nov 2023 12:01:32 +0000 (13:01 +0100)]
fenv-exceptions-trapping: Avoid test failure on NetBSD/sparc.

* tests/test-fenv-except-trapping-2.c (main): Skip the 'long double'
tests also on NetBSD/sparc.

18 months agofenv-exceptions-trapping: Update documentation.
Bruno Haible [Sun, 5 Nov 2023 11:56:24 +0000 (12:56 +0100)]
fenv-exceptions-trapping: Update documentation.

* doc/glibc-functions/feenableexcept.texi: Document the Linux/hppa
problem.

18 months agofenv-exceptions-trapping: Avoid test failure on older systems.
Bruno Haible [Sun, 5 Nov 2023 11:49:43 +0000 (12:49 +0100)]
fenv-exceptions-trapping: Avoid test failure on older systems.

* tests/test-fenv-except-trapping-2.c (main): Skip the test also on x86
systems with gcc < 8.

18 months agofenv-exceptions-trapping: Fix for powerpc* platforms.
Bruno Haible [Sat, 4 Nov 2023 15:54:43 +0000 (16:54 +0100)]
fenv-exceptions-trapping: Fix for powerpc* platforms.

* lib/fenv-except-trapping.c (feenableexcept, fedisableexcept)
[powerpc]: Use the correct bit mask for the trap bits.
* tests/test-fenv-except-trapping-2.c (main): Reenable the '9' tests on
powerpc platforms.

18 months agofenv-exceptions-state-c99: Fix compilation error on FreeBSD.
Bruno Haible [Sat, 4 Nov 2023 15:37:02 +0000 (16:37 +0100)]
fenv-exceptions-state-c99: Fix compilation error on FreeBSD.

* lib/fenv.in.h (fegetexceptflag, fesetexceptflag): On FreeBSD, use an
rpl_ prefix, to avoid a conflict with an inline definition in FreeBSD's
<fenv.h>.

18 months agodoc: Update info about Cygwin feraiseexcept bug.
Bruno Haible [Sat, 4 Nov 2023 15:27:09 +0000 (16:27 +0100)]
doc: Update info about Cygwin feraiseexcept bug.

* doc/posix-functions/feraiseexcept.texi: Update info regarding Cygwin.

18 months agofenv-exceptions-tracking-c99 tests: Avoid test failure on NetBSD/sparc.
Bruno Haible [Sat, 4 Nov 2023 15:23:16 +0000 (16:23 +0100)]
fenv-exceptions-tracking-c99 tests: Avoid test failure on NetBSD/sparc.

* tests/test-fenv-except-tracking-2.c (main): On NetBSD/sparc, skip the
'long double' test.

18 months agofenv-exceptions-tracking-c99: Fix fetestexcept() override for AIX.
Bruno Haible [Sat, 4 Nov 2023 14:29:46 +0000 (15:29 +0100)]
fenv-exceptions-tracking-c99: Fix fetestexcept() override for AIX.

* lib/fenv-except-tracking-test.c (fetestexcept): On AIX, use
fp_read_flag() rather than the fpscr register.

18 months agofenv-exceptions-tracking-c99: Work around a NetBSD/x86_64 bug.
Bruno Haible [Sat, 4 Nov 2023 13:31:37 +0000 (14:31 +0100)]
fenv-exceptions-tracking-c99: Work around a NetBSD/x86_64 bug.

* m4/fenv-exceptions-tracking.m4 (gl_FENV_EXCEPTIONS_TRACKING): On
NetBSD/x86_64, set REPLACE_FETESTEXCEPT to 1.
* doc/posix-functions/fetestexcept.texi: Document the NetBSD bug.

18 months agofenv-rounding: Avoid a test failure on NetBSD/sparc64.
Bruno Haible [Sat, 4 Nov 2023 13:18:28 +0000 (14:18 +0100)]
fenv-rounding: Avoid a test failure on NetBSD/sparc64.

* tests/test-fenv-round.c (test_towardzero, test_upward, test_downward):
Skip the 'long double' tests on NetBSD/sparc64.
* doc/posix-functions/fesetround.texi: Mention the problem with
'long double' operations on some platforms.

18 months agofenv-rounding: Improve code for MSVC.
Bruno Haible [Sat, 4 Nov 2023 13:07:22 +0000 (14:07 +0100)]
fenv-rounding: Improve code for MSVC.

* lib/fenv-round.c (fegetround) [MSVC]: Use the rounding direction from
the SSE unit. Don't assume stable values for FE_UPWARD and FE_DOWNWARD.
(fesetround) [MSVC]: Set the rounding direction only in the SSE unit.
Don't assume stable values for FE_UPWARD and FE_DOWNWARD.

18 months agofenv-rounding et al.: Require AC_CANONICAL_HOST before accessing $host.
Bruno Haible [Sat, 4 Nov 2023 12:54:56 +0000 (13:54 +0100)]
fenv-rounding et al.: Require AC_CANONICAL_HOST before accessing $host.

* m4/fenv-rounding.m4 (gl_FENV_ROUNDING): Require AC_CANONICAL_HOST.
* m4/c32rtomb.m4 (gl_FUNC_C32RTOMB): Likewise.
* m4/getrandom.m4 (gl_FUNC_GETRANDOM): Likewise.
* m4/iswdigit.m4 (gl_FUNC_ISWDIGIT): Likewise.
* m4/iswpunct.m4 (gl_FUNC_ISWPUNCT): Likewise.
* m4/iswxdigit.m4 (gl_FUNC_ISWXDIGIT): Likewise.
* m4/strerrorname_np.m4 (gl_FUNC_STRERRORNAME_NP): Likewise.
* m4/strfmon_l.m4 (gl_FUNC_STRFMON_L): Likewise.
* m4/unlink-busy.m4 (gl_FUNC_UNLINK_BUSY_TEXT): Likewise.
* m4/vasnprintf.m4 (gl_PREREQ_VASNWPRINTF): Likewise.
* m4/wcscmp.m4 (gl_FUNC_WCSCMP): Likewise.
* m4/wcsncmp.m4 (gl_FUNC_WCSNCMP): Likewise.

18 months agofenv: Document an ABI break on MSVC.
Bruno Haible [Sat, 4 Nov 2023 12:22:08 +0000 (13:22 +0100)]
fenv: Document an ABI break on MSVC.

* doc/posix-headers/fenv.texi: Document why fegetround and fesetround
are seemingly broken on MSVC.

18 months agofenv-exceptions-trapping: Add tests.
Bruno Haible [Tue, 31 Oct 2023 20:54:49 +0000 (21:54 +0100)]
fenv-exceptions-trapping: Add tests.

* tests/test-fenv-except-trapping-1.c: New file.
* tests/test-fenv-except-trapping-2.sh: New file.
* tests/test-fenv-except-trapping-2.c: New file.
* modules/fenv-exceptions-trapping-tests: New file.

18 months agofenv-exceptions-trapping: New module.
Bruno Haible [Tue, 31 Oct 2023 20:46:13 +0000 (21:46 +0100)]
fenv-exceptions-trapping: New module.

* lib/fenv.in.h (feenableexcept, fedisableexcept, fegetexcept): New
declarations.
* lib/fenv-except-trapping.c: New file, based on glibc.
* m4/fenv_h.m4 (gl_FENV_H): Test also whether fegetexcept is declared.
* m4/fenv-exceptions-trapping.m4: New file.
* modules/fenv-exceptions-trapping: New file.
* doc/glibc-functions/fegetexcept.texi: Mention the new module.
* doc/glibc-functions/fedisableexcept.texi: Likewise.
* doc/glibc-functions/feenableexcept.texi: Likewise. Mention the glibc,
macOS, FreeBSD bugs.

18 months agofenv-exceptions-state-c99: Fix the x86_64 and i386 case.
Bruno Haible [Mon, 30 Oct 2023 15:26:46 +0000 (16:26 +0100)]
fenv-exceptions-state-c99: Fix the x86_64 and i386 case.

* lib/fenv-except-state-set.c (fesetexceptflag): Make sure to restore
the exception trap bits in all cases.

18 months agofenv-exceptions-state-c23: Add tests.
Bruno Haible [Mon, 30 Oct 2023 15:52:20 +0000 (16:52 +0100)]
fenv-exceptions-state-c23: Add tests.

* tests/test-fenv-except-state-3.c: New file.
* modules/fenv-exceptions-state-c23-tests: New file.

18 months agofenv-exceptions-state-c23: New module.
Bruno Haible [Mon, 30 Oct 2023 15:49:25 +0000 (16:49 +0100)]
fenv-exceptions-state-c23: New module.

* lib/fenv.in.h (fetestexceptflag): New declaration.
* lib/fenv-except-state-test.c: New file, based on glibc.
* m4/fenv-exceptions-state-c23.m4: New file.
* modules/fenv-exceptions-state-c23: New file.
* doc/posix-functions/fetestexceptflag.texi: Mention the new module.

18 months agofenv-exceptions-state-c99: Add tests.
Bruno Haible [Mon, 30 Oct 2023 15:44:26 +0000 (16:44 +0100)]
fenv-exceptions-state-c99: Add tests.

* tests/test-fenv-except-state-1.c: New file.
* tests/test-fenv-except-state-2.c: New file.
* modules/fenv-exceptions-state-c99-tests: New file.

18 months agofenv-exceptions-state-c99: New module.
Bruno Haible [Mon, 30 Oct 2023 15:39:19 +0000 (16:39 +0100)]
fenv-exceptions-state-c99: New module.

* lib/fenv.in.h (fegetexceptflag, fesetexceptflag): New declarations.
* lib/fenv-except-state-get.c: New file, baed on glibc.
* lib/fenv-except-state-set.c: New file, baed on glibc.
* m4/mathfunc.m4 (gl_MATHFUNC): Handle also the 'fexcept_t *' type.
* m4/fenv-exceptions-state.m4: New file.
* modules/fenv-exceptions-state-c99: New file.
* doc/posix-functions/fegetexceptflag.texi: Mention the new module.
* doc/posix-functions/fesetexceptflag.texi: Mention the new module and
the glibc, musl libc, macOS, AIX, mingw bugs.

18 months agofenv-exceptions-tracking-{c99,c23}: Fix the x86_64 and i386 case.
Bruno Haible [Mon, 30 Oct 2023 15:32:30 +0000 (16:32 +0100)]
fenv-exceptions-tracking-{c99,c23}: Fix the x86_64 and i386 case.

* lib/fenv-except-tracking-clear.c (feclearexcept): Make sure to restore
the exception trap bits in all cases.
* lib/fenv-except-tracking-raise.c (feraiseexcept): Likewise.
* lib/fenv-except-tracking-set.c (fesetexcept): Likewise.

18 months agofenv-exceptions-tracking-c23: Add tests.
Bruno Haible [Sun, 29 Oct 2023 21:27:38 +0000 (22:27 +0100)]
fenv-exceptions-tracking-c23: Add tests.

* tests/test-fenv-except-tracking-4.c: New file.
* tests/test-fenv-except-tracking-5.c: New file.
* modules/fenv-exceptions-tracking-c23-tests: New file.

18 months agofenv-exceptions-tracking-c23: New module.
Bruno Haible [Sun, 29 Oct 2023 21:20:02 +0000 (22:20 +0100)]
fenv-exceptions-tracking-c23: New module.

* lib/fenv.in.h (fesetexcept): New declaration.
* lib/fenv-except-tracking-set.c: New file, based on glibc.
* lib/fenv-private.h (_GETMSR, _SETMSR, MSR_FP_EXC_MASK, PR_SET_FPEXC,
PR_FP_EXC_DISABLED, PR_FP_EXC_NONRECOV, PR_FP_EXC_ASYNC,
PR_FP_EXC_PRECISE, prctl) [NetBSD/powerpc]: New macros.
* m4/fenv-exceptions-tracking-c23.m4: New file.
* modules/fenv-exceptions-tracking-c23: New file.
* doc/posix-functions/fesetexcept.texi: Mention the new module and the
glibc bugs.

18 months agofenv-exceptions-tracking-c99: Fix feraiseexcept (FE_OVERFLOW) on MSVC.
Bruno Haible [Sat, 28 Oct 2023 22:29:46 +0000 (00:29 +0200)]
fenv-exceptions-tracking-c99: Fix feraiseexcept (FE_OVERFLOW) on MSVC.

* lib/fenv-except-tracking-raise.c (feraiseexcept): Use the generic
approach for all exceptions.

18 months agofpe-trapping: Always clear the FE_INVALID exception flag first.
Bruno Haible [Sat, 28 Oct 2023 16:42:47 +0000 (18:42 +0200)]
fpe-trapping: Always clear the FE_INVALID exception flag first.

* lib/fpe-trapping.h: Include <fenv.h> on all platforms.
(sigfpe_on_invalid) [AIX, HP-UX, IRIX, Solaris] : Clear the FE_INVALID
exception flag first.
* modules/fpe-trapping (Depends-on): Add fenv-exceptions-tracking-c99.

18 months agofenv-exceptions-tracking-c99: Add tests.
Bruno Haible [Sat, 28 Oct 2023 16:39:32 +0000 (18:39 +0200)]
fenv-exceptions-tracking-c99: Add tests.

* tests/test-fenv-except-tracking-1.c: New file.
* tests/test-fenv-except-tracking-2.sh: New file.
* tests/test-fenv-except-tracking-2.c: New file.
* tests/test-fenv-except-tracking-3.sh: New file.
* tests/test-fenv-except-tracking-3.c: New file.
* modules/fenv-exceptions-tracking-c99-tests: New file.

18 months agofenv-exceptions-tracking-c99: New module.
Bruno Haible [Sat, 28 Oct 2023 16:31:22 +0000 (18:31 +0200)]
fenv-exceptions-tracking-c99: New module.

* lib/fenv.in.h (feclearexcept, feraiseexcept, fetestexcept): New
declarations.
* lib/fenv-except-tracking-clear.c: New file, based on glibc.
* lib/fenv-except-tracking-raise.c: New file, based on glibc.
* lib/fenv-except-tracking-test.c: New file, based on glibc.
* m4/fenv-exceptions-tracking.m4: New file.
* m4/fenv-exceptions.m4: New file.
* modules/fenv-exceptions-tracking-c99: New file.
* doc/posix-functions/feclearexcept.texi: Mention the new module.
* doc/posix-functions/fetestexcept.texi: Likewise.
* doc/posix-functions/feraiseexcept.texi: Likewise. Mention the glibc
and Cygwin bugs.

18 months agofenv-rounding: Add tests.
Bruno Haible [Fri, 27 Oct 2023 18:26:56 +0000 (20:26 +0200)]
fenv-rounding: Add tests.

* tests/test-fenv-round.c: New file.
* modules/fenv-rounding-tests: New file.

18 months agofenv-rounding: New module.
Bruno Haible [Fri, 27 Oct 2023 18:16:50 +0000 (20:16 +0200)]
fenv-rounding: New module.

* lib/fenv.in.h (fegetround, fesetround): New declarations.
* lib/fenv-private.h: New file, based on glibc.
* lib/fenv-round.c: New file, based on glibc.
* m4/mathfunc.m4 (gl_MATHFUNC): Handle also the type fp_rnd.
* m4/fenv-rounding.m4: New file.
* modules/fenv (Depends-on): Add snippet/c++defs.
(Makefile.am): Substitute $(CXXDEFS_H) into fenv.h.
* modules/fenv-rounding: New file.
* doc/posix-functions/fegetround.texi: Mention the new module.
* doc/posix-functions/fesetround.texi: Likewise.

18 months agotests: Use C99 initializer syntax for memory_long_double.
Bruno Haible [Fri, 27 Oct 2023 18:02:27 +0000 (20:02 +0200)]
tests: Use C99 initializer syntax for memory_long_double.

* tests/test-isfinite.c (test_isfinitel): Use '.word = ...' syntax when
initializing memory_long_double variables.
* tests/test-isinf.c (test_isinfl): Likewise.
* tests/test-isnan.c (test_long_double): Likewise.
* tests/test-snprintf-posix.h (test_function): Likewise.
* tests/test-sprintf-posix.h (test_function): Likewise.
* tests/test-vasnprintf-posix.c (test_function): Likewise.
* tests/test-vasnwprintf-posix.c (test_function): Likewise.
* tests/test-vasprintf-posix.c (test_function): Likewise.
* modules/isfinite-tests (Depends-on): Add c99.
* modules/isinf-tests (Depends-on): Likewise.
* modules/isnan-tests (Depends-on): Likewise.
* modules/isnanl-nolibm-tests (Depends-on): Likewise.
* modules/isnanl-tests (Depends-on): Likewise.
* modules/pipe-filter-gi-tests (Depends-on): Likewise.
* modules/pipe-filter-ii-tests (Depends-on): Likewise.
* modules/snprintf-posix-tests (Depends-on): Likewise.
* modules/sprintf-posix-tests (Depends-on): Likewise.
* modules/vasnprintf-posix-tests (Depends-on): Likewise.
* modules/vasnwprintf-posix-tests (Depends-on): Likewise.
* modules/vasprintf-posix-tests (Depends-on): Likewise.
* modules/vsnprintf-posix-tests (Depends-on): Likewise.
* modules/vsprintf-posix-tests (Depends-on): Likewise.

18 months agobase32, base64: disallow non-canonical encodings
Pádraig Brady [Thu, 26 Oct 2023 15:25:03 +0000 (16:25 +0100)]
base32, base64: disallow non-canonical encodings

Unconditionally disallow encodings that don't have
appropriate zero bits before padding characters.
This handles one class of encoding variations discussed at:
https://eprint.iacr.org/2022/361.pdf
Note the other variations discussed there, due to optional
padding characters are already disallowed.

* lib/base32.c: Check that discarded bits in the encoding are zero.
* lib/base64.c: Likewise.
* tests/test-base32.c: Add test cases.
* tests/test-base64.c: Likewise.

18 months agofenv: Add tests.
Bruno Haible [Fri, 27 Oct 2023 01:46:25 +0000 (03:46 +0200)]
fenv: Add tests.

* tests/test-fenv.c: New file.
* modules/fenv-tests: New file.

18 months agofenv: New module.
Bruno Haible [Fri, 27 Oct 2023 01:43:15 +0000 (03:43 +0200)]
fenv: New module.

* lib/fenv.in.h: New file, based on glibc.
* m4/fenv_h.m4: New file.
* modules/fenv: New file.
* doc/posix-headers/fenv.texi: Mention the new module.

18 months agobase32: fix typo in previous commit
Paul Eggert [Wed, 25 Oct 2023 21:38:10 +0000 (14:38 -0700)]
base32: fix typo in previous commit

* lib/base32.c (BASE32_INLINE): Rename from BASE64_INLINE.

18 months agobase32: new function isubase32; also, tune.
Paul Eggert [Wed, 25 Oct 2023 21:14:15 +0000 (14:14 -0700)]
base32: new function isubase32; also, tune.

* lib/base32.c (BASE32_INLINE): Define.
(base32_to_int): Rename from b32 and make it extern.  All uses changed.
(uchar_in_range): Remove.  All uses removed.
(isbase32, base32_decode_ctx_init):
Move to lib/base32.h and make inline.
* lib/base32.h: Ignore -Wtype-limits, so that we needn’t
worry about uchar_in_range.
(BASE32_INLINE): Define, and use _GL_INLINE_HEADER_BEGIN.
(isubase32): New function, useful as it as a different signature.
(isbase32): Define in terms of isubase32.
* modules/base32 (Depends-on): Add extern-inline.

18 months agobase64: new function isubase64; also, tune.
Paul Eggert [Wed, 25 Oct 2023 21:00:40 +0000 (14:00 -0700)]
base64: new function isubase64; also, tune.

* lib/base64.c (BASE64_INLINE): Define.
(base64_to_int): Rename from b64 and make it extern.  All uses changed.
(uchar_in_range): Remove.  All uses removed.
(isbase64, base64_decode_ctx_init):
Move to lib/base64.h and make inline.
* lib/base64.h: Ignore -Wtype-limits, so that we needn’t
worry about uchar_in_range.
(BASE64_INLINE): Define, and use _GL_INLINE_HEADER_BEGIN.
(isubase64): New function, useful as it as a different signature.
(isbase64): Define in terms of isubase64.
* modules/base64 (Depends-on): Add extern-inline.

18 months agotests/unistr/u16-chr-tests: pacify -Wcast-align
Paul Eggert [Wed, 25 Oct 2023 01:40:07 +0000 (18:40 -0700)]
tests/unistr/u16-chr-tests: pacify -Wcast-align

* tests/unistr/test-chr.h (main): Redo types to pacify
gcc -Wcast-align.

18 months agoisnanl-tests, stdio-tests: pacify GCC -Wshadow
Paul Eggert [Wed, 25 Oct 2023 01:37:37 +0000 (18:37 -0700)]
isnanl-tests, stdio-tests: pacify GCC -Wshadow

* tests/test-isnanl.h (NWORDS): Remove.
(memory_long_double): Do not redefine in an inner scope.
All uses changed to use the snan.h memory_long_double.
* tests/test-stdio.c (NWORDS): Remove.
(memory_long_double): Do not redefine in an inner scope.
The snan.h memory_long_double is fine here.

18 months agoexplicit_bzero-tests: pacify GCC 13.2.1
Paul Eggert [Wed, 25 Oct 2023 01:33:44 +0000 (18:33 -0700)]
explicit_bzero-tests: pacify GCC 13.2.1

* tests/test-explicit_bzero.c:
* tests/test-memset_explicit.c:
Ignore -Wdangling pointer.

18 months agomemset_explicit, explicit_bzero tests: Fix test failures with new gcc.
Bruno Haible [Mon, 23 Oct 2023 00:04:03 +0000 (02:04 +0200)]
memset_explicit, explicit_bzero tests: Fix test failures with new gcc.

Reported by Sam James <sam@gentoo.org> in
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111904>.

Fix by Alexandre Oliva <aoliva@gcc.gnu.org>.

* tests/test-memset_explicit.c (do_secret_stuff): Declare with
attributes 'noclone' and 'noipa'.
* tests/test-explicit_bzero.c (do_secret_stuff): Likewise.

18 months agonet_if tests: Fix gcc warning.
Bruno Haible [Sun, 15 Oct 2023 21:15:55 +0000 (23:15 +0200)]
net_if tests: Fix gcc warning.

* tests/test-net_if.c: Include <string.h>.

18 months agombspbrk: Fix gcc warning (regression 2023-09-26).
Bruno Haible [Sun, 15 Oct 2023 21:12:44 +0000 (23:12 +0200)]
mbspbrk: Fix gcc warning (regression 2023-09-26).

* lib/mbspbrk.c (mbspbrk): Fix gcc warning in GNULIB_MCEL_PREFER mode.

18 months agopthread-spin: Fix warnings on FreeBSD 5.2.1/i386.
Bruno Haible [Sun, 15 Oct 2023 21:03:59 +0000 (23:03 +0200)]
pthread-spin: Fix warnings on FreeBSD 5.2.1/i386.

* lib/pthread.in.h (pthread_spinlock_t): Override if <pthread.h> defines
pthread_spinlock_t but we need to approximate spinlocks with mutexes.
* m4/pthread-spin.m4 (gl_PTHREAD_SPIN): When the pthread_spin_*
functions are declared but don't exist, mark them as REPLACEd.

18 months agopthread-spin: Fix link errors on FreeBSD 5.2.1/i386.
Bruno Haible [Sun, 15 Oct 2023 20:00:04 +0000 (22:00 +0200)]
pthread-spin: Fix link errors on FreeBSD 5.2.1/i386.

* m4/pthread-spin.m4 (gl_PTHREAD_SPIN): Test not only whether
<pthread.h> defines the pthread_spinlock_t type, but also whether the
function pthread_spin_init is actually defined.

18 months agopthread_mutex_timedlock: Fix link errors on FreeBSD 5.2.1/i386.
Bruno Haible [Sun, 15 Oct 2023 19:57:26 +0000 (21:57 +0200)]
pthread_mutex_timedlock: Fix link errors on FreeBSD 5.2.1/i386.

* m4/pthread_mutex_timedlock.m4 (gl_FUNC_PTHREAD_MUTEX_TIMEDLOCK): Test
not only whether pthread_mutex_timedlock is declared, but also whether
it is actually defined.

18 months agothreadlib: Fix link errors on FreeBSD 5.2.1/i386.
Bruno Haible [Sun, 15 Oct 2023 19:55:28 +0000 (21:55 +0200)]
threadlib: Fix link errors on FreeBSD 5.2.1/i386.

* m4/threadlib.m4 (gl_PTHREADLIB_BODY): When pthread_kill could not be
found in -lpthread, try -lthr.

18 months agolock: Make Autoconf macro more robust.
Bruno Haible [Sun, 15 Oct 2023 17:10:29 +0000 (19:10 +0200)]
lock: Make Autoconf macro more robust.

* m4/pthread_rwlock_rdlock.m4 (gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER):
Require gl_THREADLIB, not gl_THREADLIB_EARLY. Needed to get the value of
LIBMULTITHREAD.

18 months agototalorder-bench-tests: New module.
Bruno Haible [Sun, 15 Oct 2023 13:54:11 +0000 (15:54 +0200)]
totalorder-bench-tests: New module.

* tests/bench-totalorder.c: New file, based on tests/test-totalorder.h.
* modules/totalorder-bench-tests: New file.

18 months agosnan: Simplify a type.
Bruno Haible [Sun, 15 Oct 2023 13:53:01 +0000 (15:53 +0200)]
snan: Simplify a type.

* lib/snan.h (memory_long_double): Put the 'value' field first.
* tests/test-totalorder.h (main): No need for designated initializer
syntax any more.

18 months agovma-iter: Fix compilation error on FreeBSD 5.2.1.
Bruno Haible [Sun, 15 Oct 2023 06:38:43 +0000 (08:38 +0200)]
vma-iter: Fix compilation error on FreeBSD 5.2.1.

* lib/vma-iter.c [FreeBSD]: Include <sys/param.h>.

18 months agototalorder*: Document glibc bug on SH4.
Bruno Haible [Sat, 14 Oct 2023 21:45:40 +0000 (23:45 +0200)]
totalorder*: Document glibc bug on SH4.

* doc/posix-functions/totalorder.texi: Mention the glibc bug on SH4.
* doc/posix-functions/totalorderf.texi: Likewise.
* doc/posix-functions/totalorderl.texi: Likewise.

18 months agototalorder*: Fix test failures on SH4.
Bruno Haible [Sat, 14 Oct 2023 19:50:49 +0000 (21:50 +0200)]
totalorder*: Fix test failures on SH4.

* lib/snan.h: Update comment.
* lib/totalorderf.c (totalorderf): On sh4, invert bit 22 before
comparing two NaNs.
* lib/totalorder.c (totalorder): On sh4, invert bit 51 before comparing
two NaNs.
* lib/totalorderl.c (totalorderl): On sh4, invert bit 51 or 47 of the
xhi, yhi parts before comparing two NaNs.

18 months agototalorder*: Fix test failures on PA-RISC and MIPS CPUs.
Bruno Haible [Sat, 14 Oct 2023 18:48:13 +0000 (20:48 +0200)]
totalorder*: Fix test failures on PA-RISC and MIPS CPUs.

* lib/totalorderf.c (totalorderf): On hppa and mips, invert bit 22
before comparing two NaNs.
* lib/totalorder.c (totalorder): On hppa and mips, invert bit 51 before
comparing two NaNs.
* lib/totalorderl.c: Include <float.h>.
(totalorderl): On hppa and mips, invert bit 51 or 47 of the xhi, yhi
parts before comparing two NaNs.
* modules/totalorderl (Depends-on): Add 'float'.

18 months agototalorder* tests: Test also the signalling NaNs.
Bruno Haible [Sat, 14 Oct 2023 18:43:47 +0000 (20:43 +0200)]
totalorder* tests: Test also the signalling NaNs.

* tests/test-totalorder.h: Include signed-snan.h.
(main): Change the array initializer to contain memory_* objects rather
than floating-point numbers. This is needed for i386 and x86_64 CPUs.
* tests/test-totalorder.c (TOTALORDER_TYPE): Use memory_double.
(TOTALORDER_HAVE_SNAN, TOTALORDER_POSITIVE_SNAN,
TOTALORDER_NEGATIVE_SNAN): New macros.
* tests/test-totalorderf.c (TOTALORDER_TYPE): Use memory_float.
(TOTALORDER_HAVE_SNAN, TOTALORDER_POSITIVE_SNAN,
TOTALORDER_NEGATIVE_SNAN): New macros.
* tests/test-totalorderl.c (TOTALORDER_TYPE): Use memory_long_double.
(TOTALORDER_HAVE_SNAN, TOTALORDER_POSITIVE_SNAN,
TOTALORDER_NEGATIVE_SNAN): New macros.
* modules/totalorder-tests (Depends-on): Add signed-snan.
* modules/totalorderf-tests (Depends-on): Likewise.
* modules/totalorderl-tests (Depends-on): Likewise.

18 months agototalorder* tests: Make it easier to debug failures.
Bruno Haible [Sat, 14 Oct 2023 18:43:43 +0000 (20:43 +0200)]
totalorder* tests: Make it easier to debug failures.

* tests/test-totalorder.h: Include <stdio.h>.
(main): Print array indices of all failures.

18 months agototalorder* tests: Verify also the function signatures.
Bruno Haible [Sat, 14 Oct 2023 18:43:39 +0000 (20:43 +0200)]
totalorder* tests: Verify also the function signatures.

* tests/test-totalorder.h: New file, based on tests/test-totalorder.c.
* tests/test-totalorder.c: Check the signature. Include
test-totalorder.h for the rest.
* tests/test-totalorderf.c: Include <config.h>, <math.h>. Check the
signature. Include test-totalorder.h instead of test-totalorder.c.
* tests/test-totalorderl.c: Likewise.
* modules/totalorder-tests (Files): Add test-totalorder.h, signature.h.
* modules/totalorderf-tests (Files): Add test-totalorder.h, signature.h.
Remove test-totalorder.c.
* modules/totalorderl-tests (Files): Likewise.

18 months agototalorder*: Improve documentation.
Bruno Haible [Sat, 14 Oct 2023 18:42:00 +0000 (20:42 +0200)]
totalorder*: Improve documentation.

* doc/posix-functions/totalorder.texi: Reference the specification.
* doc/posix-functions/totalorderf.texi: Likewise.
* doc/posix-functions/totalorderl.texi: Likewise.

18 months agosnan, signed-snan: Add API that works also on x86 and x86_64 CPUs.
Bruno Haible [Sat, 14 Oct 2023 18:38:49 +0000 (20:38 +0200)]
snan, signed-snan: Add API that works also on x86 and x86_64 CPUs.

* lib/snan.h (memory_float, memory_double, memory_long_double): New
types.
(construct_memory_SNaNf, memory_SNaNf, construct_memory_SNaNd,
memory_SNaNd, construct_memory_SNaNl, memory_SNaNl): New functions.
* lib/signed-snan.h (memory_positive_SNaNf, memory_negative_SNaNf,
memory_positive_SNaNd, memory_negative_SNaNd, memory_positive_SNaNl,
memory_negative_SNaNl): New functions.

18 months agosnan tests: Fix "unused variable" warnings on i386.
Bruno Haible [Sat, 14 Oct 2023 18:36:37 +0000 (20:36 +0200)]
snan tests: Fix "unused variable" warnings on i386.

* tests/test-snan-1.c (main): Mark nanf, nand, nanl as possibly unused.
* tests/test-snan-2.c (main): Likewise.

18 months agosnan: Avoid test failures with CC="gcc -mfpmath=387".
Bruno Haible [Sat, 14 Oct 2023 18:30:50 +0000 (20:30 +0200)]
snan: Avoid test failures with CC="gcc -mfpmath=387".

* tests/test-snan-1.c (main): Treat x86_64 CPU with
__FLT_EVAL_METHOD__ == 2 like i386 CPU. Update comments.
* tests/test-snan-2.c (main): Likewise.

18 months agosnan: Fix the value of SNaNl() on i386, x86_64, ia64 CPUs.
Bruno Haible [Sat, 14 Oct 2023 10:34:25 +0000 (12:34 +0200)]
snan: Fix the value of SNaNl() on i386, x86_64, ia64 CPUs.

* lib/snan.h (construct_SNaNl): On i386, x86_64, ia64 CPUs, invert
bit 62, not bit 63, of the mantissa.
* m4/snan.m4 (gl_SNAN): Require gl_LONG_DOUBLE_VS_DOUBLE.
* modules/snan (Files): Add m4/math_h.m4.

18 months agotests: Make use of signed signalling NaNs.
Bruno Haible [Fri, 13 Oct 2023 11:54:58 +0000 (13:54 +0200)]
tests: Make use of signed signalling NaNs.

* tests/test-signbit.c: Include signed-snan.h instead of snan.h.
(test_signbitf): Test positive_SNaNf, negative_SNaNf, instead of only
SNaNf.
(test_signbitd): Test positive_SNaNd, negative_SNaNd, instead of only
SNaNd.
(test_signbitl): Test positive_SNaNl, negative_SNaNl, instead of only
SNaNl.
* tests/test-stdio.c: Include signed-snan.h instead of snan.h.
(main): Test positive_SNaNd, negative_SNaNd, instead of only SNaNd.
Also, test positive_NaNd, negative_NaNd, instead of NaNd.
* modules/signbit-tests (Depends-on): Add signed-snan. Remove snan.
* modules/stdio-tests (Depends-on): Likewise.

18 months agosigned-snan: New module.
Bruno Haible [Fri, 13 Oct 2023 11:46:17 +0000 (13:46 +0200)]
signed-snan: New module.

* lib/snan.h (construct_SNaNf): New function, extracted from SNaNf.
(SNaNf): Use it.
(construct_SNaNd): New function, extracted from SNaNd.
(SNaNd): Use it.
(construct_SNaNl): New function, extracted from SNaNl.
(SNaNl): Use it.
* lib/signed-snan.h: New file.
* modules/signed-snan: New file.

18 months agosigned-nan: New module, renamed from qnan.
Bruno Haible [Fri, 13 Oct 2023 11:05:06 +0000 (13:05 +0200)]
signed-nan: New module, renamed from qnan.

* lib/signed-nan.h: Renamed from lib/qnan.h. Update double-inclusion
guard.
* modules/signed-nan: Renamed from modules/qnan. Update.
* tests/test-signbit.c: Update.
* tests/test-stdio.c: Likewise.
* tests/test-totalorder.c: Likewise.
* modules/*-tests: Update.

18 months agosnan: New module, part 2.
Bruno Haible [Fri, 13 Oct 2023 11:57:45 +0000 (13:57 +0200)]
snan: New module, part 2.

* m4/snan.m4: New file.

18 months agoaccess: Fix test failure on native Windows.
Bruno Haible [Fri, 13 Oct 2023 10:56:49 +0000 (12:56 +0200)]
access: Fix test failure on native Windows.

* lib/access.c (access): Do the trailing slash workaround also on
native Windows.
* modules/access (Depends-on): Add stat.

18 months agoisnanf, isnand: Fix conflict with Solaris <ieeefp.h>.
Bruno Haible [Fri, 13 Oct 2023 10:05:29 +0000 (12:05 +0200)]
isnanf, isnand: Fix conflict with Solaris <ieeefp.h>.

* lib/math.in.h (isnanf, isnand): On Solaris and IRIX, declare this
function, instead of defining it as a macro.

18 months ago*printf tests: Test printing of signalling NaNs.
Bruno Haible [Fri, 13 Oct 2023 00:39:05 +0000 (02:39 +0200)]
*printf tests: Test printing of signalling NaNs.

These tests run without sigfpe_on_invalid(), therefore they won't crash.

* tests/test-vasnprintf-posix.c: Include snan.h.
(test_function): For each test case that uses NaNd or NaNl, add a test
case with SNaNd or SNaNl, respectively.
* tests/test-vasprintf-posix.c: Likewise.
* tests/test-snprintf-posix.h: Likewise.
* tests/test-sprintf-posix.h: Likewise.
* tests/test-vasnwprintf-posix.c: Likewise.
* modules/vasnprintf-posix-tests (Depends-on): Add snan.
* modules/vasprintf-posix-tests (Depends-on): Likewise.
* modules/vsnprintf-posix-tests (Depends-on): Likewise.
* modules/snprintf-posix-tests (Depends-on): Likewise.
* modules/vsprintf-posix-tests (Depends-on): Likewise.
* modules/sprintf-posix-tests (Depends-on): Likewise.
* modules/vasnwprintf-posix-tests (Depends-on): Likewise.
* modules/pipe-filter-gi-tests (Depends-on): Likewise.
* modules/pipe-filter-ii-tests (Depends-on): Likewise.

18 months agonan, snan tests: Avoid test failures.
Bruno Haible [Thu, 12 Oct 2023 23:04:27 +0000 (01:04 +0200)]
nan, snan tests: Avoid test failures.

* tests/test-nan-1.c (main): Special handling of arm CPUs with software
floating-point emulation.
* tests/test-snan-1.c (main): Likewise. Disable tests that are known to
fail.
* tests/test-snan-2.c (main): Skip tests that are known to fail.
* modules/snan-tests (Files): Add m4/math_h.m4.
(configure.ac): Require gl_LONG_DOUBLE_VS_DOUBLE.
* m4/math_h.m4 (gl_LONG_DOUBLE_VS_DOUBLE): Mention also NetBSD/sparc32.

18 months agosnan: Add tests.
Bruno Haible [Thu, 12 Oct 2023 22:59:27 +0000 (00:59 +0200)]
snan: Add tests.

* tests/test-snan-1.c: New file.
* tests/test-snan-2.sh: New file.
* tests/test-snan-2.c: New file.
* modules/snan-tests: New file.

18 months agonan: Add tests.
Bruno Haible [Thu, 12 Oct 2023 22:52:03 +0000 (00:52 +0200)]
nan: Add tests.

* tests/test-nan-1.c: New file.
* tests/test-nan-2.c: New file.
* modules/nan-tests: New file.

18 months agofpe-tracking, fpe-trapping: New modules.
Bruno Haible [Thu, 12 Oct 2023 22:41:57 +0000 (00:41 +0200)]
fpe-tracking, fpe-trapping: New modules.

* lib/fpe-trapping.h: New file.
* m4/mathfunc.m4 (gl_MATHFUNC): Handle also the type fp_except_t.
* m4/fpe.m4: New file.
* modules/fpe-tracking: New file.
* modules/fpe-trapping: New file.

18 months agosnan: Comments.
Bruno Haible [Thu, 12 Oct 2023 20:15:44 +0000 (22:15 +0200)]
snan: Comments.

* lib/snan.h: Add more comments.

18 months agosnan: New module.
Bruno Haible [Thu, 12 Oct 2023 19:46:13 +0000 (21:46 +0200)]
snan: New module.

* lib/snan.h: Renamed from tests/snan.h. Add double-inclusion guard.
* modules/snan: New file.
* isfinite-tests (Files): Remove tests/snan.h, m4/exponent*.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_FLOAT_EXPONENT_LOCATION,
gl_DOUBLE_EXPONENT_LOCATION, gl_LONG_DOUBLE_EXPONENT_LOCATION.
* isinf-tests (Files): Remove tests/snan.h, m4/exponent*.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_FLOAT_EXPONENT_LOCATION,
gl_DOUBLE_EXPONENT_LOCATION, gl_LONG_DOUBLE_EXPONENT_LOCATION.
* isnan-tests (Files): Remove tests/snan.h, m4/exponent*.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_FLOAT_EXPONENT_LOCATION,
gl_DOUBLE_EXPONENT_LOCATION, gl_LONG_DOUBLE_EXPONENT_LOCATION.
* isnanf-nolibm-tests (Files): Remove tests/snan.h, m4/exponentf.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_FLOAT_EXPONENT_LOCATION.
* isnanf-tests (Files): Remove tests/snan.h, m4/exponentf.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_FLOAT_EXPONENT_LOCATION.
* isnand-nolibm-tests (Files): Remove tests/snan.h, m4/exponentd.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_DOUBLE_EXPONENT_LOCATION.
* isnand-tests (Files): Remove tests/snan.h, m4/exponentd.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_DOUBLE_EXPONENT_LOCATION.
* isnanl-nolibm-tests (Files): Remove tests/snan.h, m4/exponentl.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_LONG_DOUBLE_EXPONENT_LOCATION.
* isnanl-tests (Files): Remove tests/snan.h, m4/exponentl.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_LONG_DOUBLE_EXPONENT_LOCATION.
* signbit-tests (Files): Remove tests/snan.h, m4/exponent*.m4.
(Depends-on): Add snan.
(configure.ac): Don't invoke gl_FLOAT_EXPONENT_LOCATION,
gl_DOUBLE_EXPONENT_LOCATION, gl_LONG_DOUBLE_EXPONENT_LOCATION.
* stdio-tests (Files): Remove tests/snan.h
(Depends-on): Add snan.

18 months agoqnan: New module.
Bruno Haible [Thu, 12 Oct 2023 19:12:53 +0000 (21:12 +0200)]
qnan: New module.

* lib/qnan.h: Renamed from tests/qnan.h. Add double-inclusion guard.
* modules/qnan: New file.
* modules/signbit-tests (Files): Remove tests/qnan.h.
(Depends-on): Add qnan. Remove nan.
* modules/stdio-tests (Files): Remove tests/qnan.h.
(Depends-on): Add qnan. Remove nan.
* modules/totalorder-tests (Files): Remove tests/qnan.h.
(Depends-on): Add qnan. Remove nan, signbit.
* modules/totalorderf-tests (Files): Remove tests/qnan.h.
(Depends-on): Add qnan. Remove nan, signbit.
* modules/totalorderl-tests (Files): Remove tests/qnan.h.
(Depends-on): Add qnan. Remove nan, signbit.

18 months agonan: New module.
Bruno Haible [Thu, 12 Oct 2023 18:59:58 +0000 (20:59 +0200)]
nan: New module.

* lib/nan.h: Renamed from tests/nan.h. Change double-inclusion guard.
* modules/nan: New file.
* modules/*-tests: Depend on this module instead of embedding
tests/nan.h.

18 months agounictype/category-and-not: Add more tests.
Bruno Haible [Wed, 11 Oct 2023 14:43:07 +0000 (16:43 +0200)]
unictype/category-and-not: Add more tests.

Suggested by Arindam Sharma <arindam.sharma@imperial.ac.uk>.

* tests/unictype/test-categ_and_not.c (main): Add two more test cases.
* modules/unictype/category-and-not-tests (Depends-on): Add
unictype/category-Cc.

18 months agotests: Refactor functions for signalling NaNs.
Bruno Haible [Mon, 9 Oct 2023 09:04:44 +0000 (11:04 +0200)]
tests: Refactor functions for signalling NaNs.

* tests/snan.h: New file, based on tests/test-isnanf.h,
tests/test-isnand.h, tests/test-isnanl.h.
* tests/test-isfinite.c: Include snan.h.
(test_isfinitef, test_isfinited, test_isfinitel): Simplify.
* tests/test-isinf.c: Include snan.h.
(test_isinff, test_isinfd, test_isinfl): Simplify.
* tests/test-isnan.c: Include snan.h.
(test_float, test_double, test_long_double): Simplify.
* tests/test-isnanf.h: Include snan.h.
(main): Simplify.
* tests/test-isnand.h: Include snan.h.
(main): Simplify.
* tests/test-isnanl.h: Include snan.h.
(main): Simplify.
* tests/test-signbit.c: Include snan.h.
(test_signbitf, test_signbitd, test_signbitl): Simplify.
* tests/test-stdio.c: Include qnan.h, snan.h instead of nan.h.
(main): Test quiet NaNs always. Also test a signalling NaN.
* modules/isfinite-tests (Files): Add tests/nan.h, tests/snan.h.
* modules/isinf-tests (Files): Likewise.
* modules/isnan-tests (Files): Add tests/snan.h.
* modules/isnanf-tests (Files): Likewise.
* modules/isnanf-nolibm-tests (Files): Likewise.
* modules/isnand-tests (Files): Likewise.
* modules/isnand-nolibm-tests (Files): Likewise.
* modules/isnanl-tests (Files): Likewise.
* modules/isnanl-nolibm-tests (Files): Likewise.
* modules/signbit-tests (Files): Likewise.
* modules/stdio-tests (Files): Add tests/qnan.h, tests/snan.h.

18 months agoisfinite: Work around a bug with 'long double' in glibc 2.5/ia64.
Bruno Haible [Sun, 8 Oct 2023 07:59:03 +0000 (09:59 +0200)]
isfinite: Work around a bug with 'long double' in glibc 2.5/ia64.

* m4/isfinite.m4 (gl_ISFINITEL_WORKS): Require
gl_LONG_DOUBLE_EXPONENT_LOCATION. Test also another NaN value.
* modules/isfinite (Files): Add m4/exponentl.m4.
* doc/posix-functions/isfinite.texi: Mention also a 'long double'
problem on ia64.

18 months agotests: Refactor functions for quiet NaNs.
Bruno Haible [Sat, 7 Oct 2023 13:09:23 +0000 (15:09 +0200)]
tests: Refactor functions for quiet NaNs.

* tests/qnan.h: New file, based on tests/totalorder.c.
* tests/nan.h: Add double-inclusion guard.
* tests/test-signbit.c: Include qnan.h.
(test_signbitf, test_signbitd, test_signbitl): Simplify.
* tests/test-totalorder.c: Include qnan.h instead of NaN.h.
(TOTALORDER_NAN): Remove macro.
(TOTALORDER_POSITIVE_NAN, TOTALORDER_NEGATIVE_NAN): New macros.
(positive_nan, negative_nan): Remove functions.
(main): Update.
* tests/test-totalorderf.c (TOTALORDER_NAN): Remove macro.
(TOTALORDER_POSITIVE_NAN, TOTALORDER_NEGATIVE_NAN): New macros.
* tests/test-totalorderl.c (TOTALORDER_NAN): Remove macro.
(TOTALORDER_POSITIVE_NAN, TOTALORDER_NEGATIVE_NAN): New macros.
* modules/signbit-tests (Files): Add tests/nan.h, tests/qnan.h.
* modules/totalorder-tests (Files): Add tests/qnan.h.
(Depends-on): Add signbit.
* modules/totalorderf-tests (Files): Add tests/qnan.h.
(Depends-on): Add signbit.
* modules/totalorderl-tests (Files): Add tests/qnan.h.
(Depends-on): Add signbit.

18 months agototalorder*: Fix compilation error on glibc 2.25..2.30.
Bruno Haible [Sat, 7 Oct 2023 10:49:15 +0000 (12:49 +0200)]
totalorder*: Fix compilation error on glibc 2.25..2.30.

* m4/totalorder.m4 (gl_FUNC_TOTALORDERF): Test whether <math.h> has an
incompatible declaration of totalorderf, and set REPLACE_TOTALORDERF
to 1 if so.
(gl_FUNC_TOTALORDER): Test whether <math.h> has an incompatible
declaration of totalorder, and set REPLACE_TOTALORDER to 1 if so.
(gl_FUNC_TOTALORDERL): Test whether <math.h> has an incompatible
declaration of totalorderl, and set REPLACE_TOTALORDERL to 1 if so.

18 months agoisnan: Avoid dangerous shell coding pattern.
Bruno Haible [Sat, 7 Oct 2023 09:42:00 +0000 (11:42 +0200)]
isnan: Avoid dangerous shell coding pattern.

* m4/isnand.m4 (gl_FUNC_ISNAND): Use 'test -n "$arg"', not
'test "$arg"'.
* m4/isnanf.m4 (gl_FUNC_ISNANF): Likewise.
* m4/isnanl.m4 (gl_FUNC_ISNANL): Likewise.

19 months agodoc: Mention xstrerror.
Bruno Haible [Thu, 5 Oct 2023 20:39:52 +0000 (22:39 +0200)]
doc: Mention xstrerror.

* doc/posix-functions/strerror_r.texi: Mention xstrerror.

19 months agoxstrerror: Add tests.
Bruno Haible [Thu, 5 Oct 2023 16:02:26 +0000 (18:02 +0200)]
xstrerror: Add tests.

* tests/test-xstrerror.c: New file.
* modules/xstrerror-tests: New file.

19 months agoxstrerror: New module.
Bruno Haible [Thu, 5 Oct 2023 16:01:05 +0000 (18:01 +0200)]
xstrerror: New module.

* lib/xstrerror.h: New file.
* lib/xstrerror.c: New file.
* modules/xstrerror: New file.
* modules/strerror_r-posix (configure.ac): Update comment.

19 months agoisnan: slightly simplify configuration
Paul Eggert [Thu, 5 Oct 2023 19:22:07 +0000 (12:22 -0700)]
isnan: slightly simplify configuration

* m4/isnand.m4 (gl_FUNC_ISNAND):
* m4/isnanf.m4 (gl_FUNC_ISNANF):
* m4/isnanl.m4 (gl_FUNC_ISNANL):
Slightly simplify shell ‘if’.  This should simplify future changes.

19 months agototalorder: speed up configuration
Paul Eggert [Thu, 5 Oct 2023 19:19:08 +0000 (12:19 -0700)]
totalorder: speed up configuration

* m4/totalorder.m4 (gl_FUNC_TOTALORDERF, gl_FUNC_TOTALORDER)
(gl_FUNC_TOTALORDERL): Avoid unnecessary call to AC_SEARCH_LIBS,
since the information is already available in shell vars.

19 months agototalorderl: minor porting fixes
Paul Eggert [Thu, 5 Oct 2023 18:43:37 +0000 (11:43 -0700)]
totalorderl: minor porting fixes

* lib/totalorderl.c (LDBL_SIGNBIT_WORD): Define to -1 if not defined.
(totalorderl): Avoid unused local zu by preferring ‘if’ to ‘ifdef’.
Don’t assume sizeof (unsigned long long) == 2 * sizeof (unsigned).

19 months agototalorder* tests: Refactor.
Bruno Haible [Wed, 4 Oct 2023 11:35:11 +0000 (13:35 +0200)]
totalorder* tests: Refactor.

* tests/test-totalorder.c (positive_nan, negative_nan): New functions,
extracted from main.
(main): Use them when initializing the array.