aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog155
-rw-r--r--NEWS7
-rw-r--r--include/float.h4
-rw-r--r--include/setjmp.h10
-rw-r--r--manual/arith.texi30
-rw-r--r--math/Makefile23
-rw-r--r--math/Versions11
-rw-r--r--math/bits/mathcalls.h5
-rwxr-xr-xmath/gen-tgmath-tests.py2
-rw-r--r--math/libm-test-compat_totalorder.inc56
-rw-r--r--math/libm-test-compat_totalordermag.inc56
-rw-r--r--math/libm-test-driver.c23
-rw-r--r--math/libm-test-totalorder.inc454
-rw-r--r--math/libm-test-totalordermag.inc454
-rw-r--r--math/test-tgmath.c22
-rw-r--r--math/tgmath.h24
-rw-r--r--sysdeps/ieee754/dbl-64/s_totalorder.c33
-rw-r--r--sysdeps/ieee754/dbl-64/s_totalordermag.c33
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c33
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c33
-rw-r--r--sysdeps/ieee754/float128/float128_private.h2
-rw-r--r--sysdeps/ieee754/flt-32/s_totalorderf.c33
-rw-r--r--sysdeps/ieee754/flt-32/s_totalordermagf.c33
-rw-r--r--sysdeps/ieee754/ldbl-128/s_totalorderl.c33
-rw-r--r--sysdeps/ieee754/ldbl-128/s_totalordermagl.c33
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c18
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c18
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c8
-rw-r--r--sysdeps/ieee754/ldbl-96/s_totalorderl.c33
-rw-r--r--sysdeps/ieee754/ldbl-96/s_totalordermagl.c33
-rw-r--r--sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c16
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c2
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/arm/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/csky/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/sh/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist16
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist16
59 files changed, 1521 insertions, 579 deletions
diff --git a/ChangeLog b/ChangeLog
index c49d952a0a..586f9dc4b8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,158 @@
+2019-08-15 Joseph Myers <joseph@codesourcery.com>
+
+ * math/bits/mathcalls.h
+ [__GLIBC_USE (IEC_60559_BFP_EXT) || __MATH_DECLARING_FLOATN]
+ (totalorder): Take pointer arguments.
+ [__GLIBC_USE (IEC_60559_BFP_EXT) || __MATH_DECLARING_FLOATN]
+ (totalordermag): Likewise.
+ * manual/arith.texi (totalorder): Likewise.
+ (totalorderf): Likewise.
+ (totalorderl): Likewise.
+ (totalorderfN): Likewise.
+ (totalorderfNx): Likewise.
+ (totalordermag): Likewise.
+ (totalordermagf): Likewise.
+ (totalordermagl): Likewise.
+ (totalordermagfN): Likewise.
+ (totalordermagfNx): Likewise.
+ * math/tgmath.h (__TGMATH_BINARY_REAL_RET_ONLY): Remove macro.
+ [__GLIBC_USE (IEC_60559_BFP_EXT)] (totalorder): Likewise.
+ [__GLIBC_USE (IEC_60559_BFP_EXT)] (totalordermag): Likewise.
+ * math/Versions (GLIBC_2.31): Add totalorder, totalorderf,
+ totalorderl, totalordermag, totalordermagf, totalordermagl,
+ totalorderf32, totalorderf64, totalorderf32x, totalordermagf32,
+ totalordermagf64, totalordermagf32x, totalorderf64x,
+ totalordermagf64x, totalorderf128 and totalordermagf128.
+ * math/Makefile (libm-test-funcs-noauto): Add compat_totalorder
+ and compat_totalordermag.
+ (libm-test-funcs-compat): New variable.
+ (libm-tests-compat): Likewise.
+ (tests): Do not include compat tests.
+ (tests-internal): Add compat tests.
+ ($(foreach t,$(libm-tests-base),
+ $(objpfx)$(t)-compat_totalorder.o)): Depend
+ on $(objpfx)libm-test-totalorder.c.
+ ($(foreach t,$(libm-tests-base),
+ $(objpfx)$(t)-compat_totalordermag.o): Depend on
+ $(objpfx)libm-test-totalordermag.c.
+ (tgmath3-macros): Remove totalorder and totalordermag.
+ * math/libm-test-compat_totalorder.inc: New file.
+ * math/libm-test-compat_totalordermag.inc: Likewise.
+ * math/libm-test-driver.c (struct test_ff_i_data): Update comment.
+ (RUN_TEST_fpfp_b): New macro.
+ (RUN_TEST_LOOP_fpfp_b): Likewise.
+ * math/libm-test-totalorder.inc (totalorder_test_data): Use
+ TEST_fpfp_b.
+ (totalorder_test): Condition on [!COMPAT_TEST].
+ (do_test): Likewise.
+ * math/libm-test-totalordermag.inc (totalordermag_test_data): Use
+ TEST_fpfp_b.
+ (totalordermag_test): Condition on [!COMPAT_TEST].
+ (do_test): Likewise.
+ * math/gen-tgmath-tests.py (Tests.add_all_tests): Remove
+ totalorder and totalordermag.
+ * math/test-tgmath.c (NCALLS): Change to 132.
+ (F(compile_test)): Do not call totalorder or totalordermag.
+ (F(totalorder)): Remove.
+ (F(totalordermag)): Likewise.
+ * include/float.h (__STDC_WANT_IEC_60559_TYPES_EXT__): Do not
+ define if [__STDC_WANT_IEC_60559_TYPES_EXT__].
+ * include/setjmp.h [!_ISOMAC] (STR_HELPER): Rename to
+ SJSTR_HELPER.
+ [!_ISOMAC] (STR): Rename to SJSTR. Update call to STR_HELPER.
+ [!_ISOMAC] (TEST_SIZE): Update call to STR.
+ [!_ISOMAC] (TEST_ALIGN): Likewise.
+ [!_ISOMAC] (TEST_OFFSET): Likewise.
+ * sysdeps/ieee754/dbl-64/s_totalorder.c: Include <shlib-compat.h>
+ and <first-versions.h>.
+ (__totalorder): Take pointer arguments. Add symbol versions and
+ compat symbols.
+ * sysdeps/ieee754/dbl-64/s_totalordermag.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalordermag): Take pointer arguments. Add symbol versions
+ and compat symbols.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalorder): Take pointer arguments. Add symbol versions and
+ compat symbols.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalordermag): Take pointer arguments. Add symbol versions
+ and compat symbols.
+ * sysdeps/ieee754/float128/float128_private.h
+ (__totalorder_compatl): New macro.
+ (__totalordermag_compatl): Likewise.
+ * sysdeps/ieee754/flt-32/s_totalorderf.c: Include <shlib-compat.h>
+ and <first-versions.h>.
+ (__totalorderf): Take pointer arguments. Add symbol versions and
+ compat symbols.
+ * sysdeps/ieee754/flt-32/s_totalordermagf.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalordermagf): Take pointer arguments. Add symbol versions
+ and compat symbols.
+ * sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalorderl): Take pointer arguments. Add symbol versions and
+ compat symbols.
+ * sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalordermagl): Take pointer arguments. Add symbol versions
+ and compat symbols.
+ * sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include
+ <shlib-compat.h>.
+ (__totalorderl): Take pointer arguments. Add symbol versions and
+ compat symbols.
+ * sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include
+ <shlib-compat.h>.
+ (__totalordermagl): Take pointer arguments. Add symbol versions
+ and compat symbols.
+ * sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalorderl): Take pointer arguments. Add symbol versions and
+ compat symbols.
+ * sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include
+ <shlib-compat.h> and <first-versions.h>.
+ (__totalordermagl): Take pointer arguments. Add symbol versions
+ and compat symbols.
+ * sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c (totalorderl): Take
+ pointer arguments.
+ * sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c (totalordermagl):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c
+ (do_test): Update calls to totalorderl and totalordermagl.
+ * sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c (do_test):
+ Update calls to totalorderl and totalordermagl.
+ * sysdeps/mach/hurd/i386/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/csky/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist:
+ Likewise.
+ * sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
+
2019-08-15 Florian Weimer <fweimer@redhat.com>
[BZ #24899]
diff --git a/NEWS b/NEWS
index 8ca7585c2c..045720b3fb 100644
--- a/NEWS
+++ b/NEWS
@@ -18,7 +18,12 @@ Major new features:
Deprecated and removed features, and other changes affecting compatibility:
- [Add deprecations, removals and changes affecting compatibility here]
+* The totalorder and totalordermag functions, and the corresponding
+ functions for other floating-point types, now take pointer arguments to
+ avoid signaling NaNs possibly being converted to quiet NaNs in argument
+ passing. This is in accordance with the resolution of Clarification
+ Request 25 to TS 18661-1, as applied for C2X. Existing binaries that pass
+ floating-point arguments directly will continue to work.
Changes to build and runtime requirements:
diff --git a/include/float.h b/include/float.h
index 7e65bb83cb..0f79ed695a 100644
--- a/include/float.h
+++ b/include/float.h
@@ -4,7 +4,9 @@
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#include <bits/libc-header-start.h>
-#ifndef _ISOMAC
+/* Some tests also define this macro, requiring a check here to avoid
+ errors for duplicate definitions (see GCC bug 91451). */
+#if !defined _ISOMAC && !defined __STDC_WANT_IEC_60559_TYPES_EXT__
# define __STDC_WANT_IEC_60559_TYPES_EXT__
#endif
diff --git a/include/setjmp.h b/include/setjmp.h
index 263bc64b3d..e13017edd2 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -35,21 +35,21 @@ extern __typeof (__sigsetjmp) __sigsetjmp attribute_hidden;
# include <stddef.h>
# include <jmp_buf-macros.h>
-# define STR_HELPER(x) #x
-# define STR(x) STR_HELPER(x)
+# define SJSTR_HELPER(x) #x
+# define SJSTR(x) SJSTR_HELPER(x)
# define TEST_SIZE(type, size) \
_Static_assert (sizeof (type) == size, \
"size of " #type " != " \
- STR (size))
+ SJSTR (size))
# define TEST_ALIGN(type, align) \
_Static_assert (__alignof__ (type) == align , \
"align of " #type " != " \
- STR (align))
+ SJSTR (align))
# define TEST_OFFSET(type, member, offset) \
_Static_assert (offsetof (type, member) == offset, \
"offset of " #member " field of " #type " != " \
- STR (offset))
+ SJSTR (offset))
/* Check if jmp_buf have the expected sizes. */
TEST_SIZE (jmp_buf, JMP_BUF_SIZE);
diff --git a/manual/arith.texi b/manual/arith.texi
index 6ca7902b3d..89c2c064f1 100644
--- a/manual/arith.texi
+++ b/