aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-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
43 files changed, 712 insertions, 52 deletions
diff --git a/sysdeps/ieee754/dbl-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/s_totalorder.c
index 0243a82b61..b97a0c1c8b 100644
--- a/sysdeps/ieee754/dbl-64/s_totalorder.c
+++ b/sysdeps/ieee754/dbl-64/s_totalorder.c
@@ -21,14 +21,16 @@
#include <libm-alias-double.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalorder (double x, double y)
+__totalorder (const double *x, const double *y)
{
int32_t hx, hy;
uint32_t lx, ly;
- EXTRACT_WORDS (hx, lx, x);
- EXTRACT_WORDS (hy, ly, y);
+ EXTRACT_WORDS (hx, lx, *x);
+ EXTRACT_WORDS (hy, ly, *y);
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
uint32_t uhx = hx & 0x7fffffff, uhy = hy & 0x7fffffff;
/* For the preferred quiet NaN convention, this operation is a
@@ -50,4 +52,29 @@ __totalorder (double x, double y)
ly ^= hy_sign;
return hx < hy || (hx == hy && lx <= ly);
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_double (__totalorder, totalorder)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalorder_compat (double x, double y)
+{
+ return __totalorder (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_double (__totalorder_compat, totalorder)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/s_totalordermag.c
index fadb20bf1d..c75536ce73 100644
--- a/sysdeps/ieee754/dbl-64/s_totalordermag.c
+++ b/sysdeps/ieee754/dbl-64/s_totalordermag.c
@@ -21,14 +21,16 @@
#include <libm-alias-double.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalordermag (double x, double y)
+__totalordermag (const double *x, const double *y)
{
uint32_t hx, hy;
uint32_t lx, ly;
- EXTRACT_WORDS (hx, lx, x);
- EXTRACT_WORDS (hy, ly, y);
+ EXTRACT_WORDS (hx, lx, *x);
+ EXTRACT_WORDS (hy, ly, *y);
hx &= 0x7fffffff;
hy &= 0x7fffffff;
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
@@ -45,4 +47,29 @@ __totalordermag (double x, double y)
#endif
return hx < hy || (hx == hy && lx <= ly);
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_double (__totalordermag, totalordermag)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalordermag_compat (double x, double y)
+{
+ return __totalordermag (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_double (__totalordermag_compat, totalordermag)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
index 0e28e6f16e..24545ffd58 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
@@ -21,13 +21,15 @@
#include <nan-high-order-bit.h>
#include <libm-alias-double.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalorder (double x, double y)
+__totalorder (const double *x, const double *y)
{
int64_t ix, iy;
- EXTRACT_WORDS64 (ix, x);
- EXTRACT_WORDS64 (iy, y);
+ EXTRACT_WORDS64 (ix, *x);
+ EXTRACT_WORDS64 (iy, *y);
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the arguments interpreted as
@@ -46,4 +48,29 @@ __totalorder (double x, double y)
iy ^= iy_sign >> 1;
return ix <= iy;
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_double (__totalorder, totalorder)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalorder_compat (double x, double y)
+{
+ return __totalorder (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_double (__totalorder_compat, totalorder)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
index bbd1f1c841..12066e3c7c 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
@@ -21,13 +21,15 @@
#include <nan-high-order-bit.h>
#include <libm-alias-double.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalordermag (double x, double y)
+__totalordermag (const double *x, const double *y)
{
uint64_t ix, iy;
- EXTRACT_WORDS64 (ix, x);
- EXTRACT_WORDS64 (iy, y);
+ EXTRACT_WORDS64 (ix, *x);
+ EXTRACT_WORDS64 (iy, *y);
ix &= 0x7fffffffffffffffULL;
iy &= 0x7fffffffffffffffULL;
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
@@ -43,4 +45,29 @@ __totalordermag (double x, double y)
#endif
return ix <= iy;
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_double (__totalordermag, totalordermag)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalordermag_compat (double x, double y)
+{
+ return __totalordermag (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_double (__totalordermag_compat, totalordermag)
+#endif
diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h
index f3917b4638..4737d05482 100644
--- a/sysdeps/ieee754/float128/float128_private.h
+++ b/sysdeps/ieee754/float128/float128_private.h
@@ -253,7 +253,9 @@
#define __tanhl __tanhf128
#define __tanl __tanf128
#define __totalorderl __totalorderf128
+#define __totalorder_compatl __totalorder_compatf128
#define __totalordermagl __totalordermagf128
+#define __totalordermag_compatl __totalordermag_compatf128
#define __truncl __truncf128
#define __x2y2m1l __x2y2m1f128
diff --git a/sysdeps/ieee754/flt-32/s_totalorderf.c b/sysdeps/ieee754/flt-32/s_totalorderf.c
index 71ea5968ab..250f2289ce 100644
--- a/sysdeps/ieee754/flt-32/s_totalorderf.c
+++ b/sysdeps/ieee754/flt-32/s_totalorderf.c
@@ -21,13 +21,15 @@
#include <libm-alias-float.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalorderf (float x, float y)
+__totalorderf (const float *x, const float *y)
{
int32_t ix, iy;
- GET_FLOAT_WORD (ix, x);
- GET_FLOAT_WORD (iy, y);
+ GET_FLOAT_WORD (ix, *x);
+ GET_FLOAT_WORD (iy, *y);
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the arguments interpreted as
@@ -45,4 +47,29 @@ __totalorderf (float x, float y)
iy ^= iy_sign >> 1;
return ix <= iy;
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_float (__totalorder, totalorder)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalorder_compatf (float x, float y)
+{
+ return __totalorderf (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_float (__totalorder_compat, totalorder)
+#endif
diff --git a/sysdeps/ieee754/flt-32/s_totalordermagf.c b/sysdeps/ieee754/flt-32/s_totalordermagf.c
index 3733a2597c..5d1729b54f 100644
--- a/sysdeps/ieee754/flt-32/s_totalordermagf.c
+++ b/sysdeps/ieee754/flt-32/s_totalordermagf.c
@@ -21,13 +21,15 @@
#include <libm-alias-float.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalordermagf (float x, float y)
+__totalordermagf (const float *x, const float *y)
{
uint32_t ix, iy;
- GET_FLOAT_WORD (ix, x);
- GET_FLOAT_WORD (iy, y);
+ GET_FLOAT_WORD (ix, *x);
+ GET_FLOAT_WORD (iy, *y);
ix &= 0x7fffffff;
iy &= 0x7fffffff;
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
@@ -43,4 +45,29 @@ __totalordermagf (float x, float y)
#endif
return ix <= iy;
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_float (__totalordermag, totalordermag)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalordermag_compatf (float x, float y)
+{
+ return __totalordermagf (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_float (__totalordermag_compat, totalordermag)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/s_totalorderl.c b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
index c4ece246fd..357b917195 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
@@ -21,14 +21,16 @@
#include <libm-alias-ldouble.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalorderl (_Float128 x, _Float128 y)
+__totalorderl (const _Float128 *x, const _Float128 *y)
{
int64_t hx, hy;
uint64_t lx, ly;
- GET_LDOUBLE_WORDS64 (hx, lx, x);
- GET_LDOUBLE_WORDS64 (hy, ly, y);
+ GET_LDOUBLE_WORDS64 (hx, lx, *x);
+ GET_LDOUBLE_WORDS64 (hy, ly, *y);
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
uint64_t uhx = hx & 0x7fffffffffffffffULL;
uint64_t uhy = hy & 0x7fffffffffffffffULL;
@@ -53,4 +55,29 @@ __totalorderl (_Float128 x, _Float128 y)
ly ^= hy_sign;
return hx < hy || (hx == hy && lx <= ly);
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_ldouble (__totalorder, totalorder)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalorder_compatl (_Float128 x, _Float128 y)
+{
+ return __totalorderl (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_ldouble (__totalorder_compat, totalorder)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
index 6d9be6d3e5..601581c846 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
@@ -21,14 +21,16 @@
#include <libm-alias-ldouble.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalordermagl (_Float128 x, _Float128 y)
+__totalordermagl (const _Float128 *x, const _Float128 *y)
{
uint64_t hx, hy;
uint64_t lx, ly;
- GET_LDOUBLE_WORDS64 (hx, lx, x);
- GET_LDOUBLE_WORDS64 (hy, ly, y);
+ GET_LDOUBLE_WORDS64 (hx, lx, *x);
+ GET_LDOUBLE_WORDS64 (hy, ly, *y);
hx &= 0x7fffffffffffffffULL;
hy &= 0x7fffffffffffffffULL;
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
@@ -47,4 +49,29 @@ __totalordermagl (_Float128 x, _Float128 y)
#endif
return hx < hy || (hx == hy && lx <= ly);
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_ldouble (__totalordermag, totalordermag)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalordermag_compatl (_Float128 x, _Float128 y)
+{
+ return __totalordermagl (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_ldouble (__totalordermag_compat, totalordermag)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
index fa5e9a6631..c96f387166 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
@@ -20,16 +20,17 @@
#include <math_private.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
int
-__totalorderl (long double x, long double y)
+__totalorderl (const long double *x, const long double *y)
{
double xhi, xlo, yhi, ylo;
int64_t hx, hy, lx, ly;
- ldbl_unpack (x, &xhi, &xlo);
+ ldbl_unpack (*x, &xhi, &xlo);
EXTRACT_WORDS64 (hx, xhi);
- ldbl_unpack (y, &yhi, &ylo);
+ ldbl_unpack (*y, &yhi, &ylo);
EXTRACT_WORDS64 (hy, yhi);
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error not implemented
@@ -60,4 +61,13 @@ __totalorderl (long double x, long double y)
ly ^= ly_sign >> 1;
return lx <= ly;
}
-weak_alias (__totalorderl, totalorderl)
+versioned_symbol (libm, __totalorderl, totalorderl, GLIBC_2_31);
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalorder_compatl (long double x, long double y)
+{
+ return __totalorderl (&x, &y);
+}
+compat_symbol (libm, __totalorder_compatl, totalorderl, GLIBC_2_25);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
index 21b6b34274..ca7193a163 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
@@ -20,16 +20,17 @@
#include <math_private.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
int
-__totalordermagl (long double x, long double y)
+__totalordermagl (const long double *x, const long double *y)
{
double xhi, xlo, yhi, ylo;
int64_t hx, hy, lx, ly;
- ldbl_unpack (x, &xhi, &xlo);
+ ldbl_unpack (*x, &xhi, &xlo);
EXTRACT_WORDS64 (hx, xhi);
- ldbl_unpack (y, &yhi, &ylo);
+ ldbl_unpack (*y, &yhi, &ylo);
EXTRACT_WORDS64 (hy, yhi);
#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error not implemented
@@ -62,4 +63,13 @@ __totalordermagl (long double x, long double y)
ly ^= ly_sign >> 1;
return lx <= ly;
}
-weak_alias (__totalordermagl, totalordermagl)
+versioned_symbol (libm, __totalordermagl, totalordermagl, GLIBC_2_31);
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalordermag_compatl (long double x, long double y)
+{
+ return __totalordermagl (&x, &y);
+}
+compat_symbol (libm, __totalordermag_compatl, totalordermagl, GLIBC_2_25);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c b/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c
index 6071ba38b0..60d22c4286 100644
--- a/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c
+++ b/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c
@@ -46,8 +46,8 @@ do_test (void)
{
long double ldx = ldbl_pack (tests[i].hi, tests[i].lo1);
long double ldy = ldbl_pack (tests[i].hi, tests[i].lo2);
- bool to1 = totalorderl (ldx, ldy);
- bool to2 = totalorderl (ldy, ldx);
+ bool to1 = totalorderl (&ldx, &ldy);
+ bool to2 = totalorderl (&ldy, &ldx);
if (to1 && to2)
printf ("PASS: test %zu\n", i);
else
@@ -55,8 +55,8 @@ do_test (void)
printf ("FAIL: test %zu\n", i);
result = 1;
}
- to1 = totalordermagl (ldx, ldy);
- to2 = totalordermagl (ldy, ldx);
+ to1 = totalordermagl (&ldx, &ldy);
+ to2 = totalordermagl (&ldy, &ldx);
if (to1 && to2)
printf ("PASS: test %zu (totalordermagl)\n", i);
else
diff --git a/sysdeps/ieee754/ldbl-96/s_totalorderl.c b/sysdeps/ieee754/ldbl-96/s_totalorderl.c
index 5334401c0e..d80a592093 100644
--- a/sysdeps/ieee754/ldbl-96/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-96/s_totalorderl.c
@@ -22,15 +22,17 @@
#include <libm-alias-ldouble.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalorderl (long double x, long double y)
+__totalorderl (const long double *x, const long double *y)
{
int16_t expx, expy;
uint32_t hx, hy;
uint32_t lx, ly;
- GET_LDOUBLE_WORDS (expx, hx, lx, x);
- GET_LDOUBLE_WORDS (expy, hy, ly, y);
+ GET_LDOUBLE_WORDS (expx, hx, lx, *x);
+ GET_LDOUBLE_WORDS (expy, hy, ly, *y);
if (LDBL_MIN_EXP == -16382)
{
/* M68K variant: for the greatest exponent, the high mantissa
@@ -56,4 +58,29 @@ __totalorderl (long double x, long double y)
ly ^= y_sign;
return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly)));
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_ldouble (__totalorder, totalorder)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalorder_compatl (long double x, long double y)
+{
+ return __totalorderl (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_ldouble (__totalorder_compat, totalorder)
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
index db27ffa755..c26f21511d 100644
--- a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
@@ -22,15 +22,17 @@
#include <libm-alias-ldouble.h>
#include <nan-high-order-bit.h>
#include <stdint.h>
+#include <shlib-compat.h>
+#include <first-versions.h>
int
-__totalordermagl (long double x, long double y)
+__totalordermagl (const long double *x, const long double *y)
{
uint16_t expx, expy;
uint32_t hx, hy;
uint32_t lx, ly;
- GET_LDOUBLE_WORDS (expx, hx, lx, x);
- GET_LDOUBLE_WORDS (expy, hy, ly, y);
+ GET_LDOUBLE_WORDS (expx, hx, lx, *x);
+ GET_LDOUBLE_WORDS (expy, hy, ly, *y);
expx &= 0x7fff;
expy &= 0x7fff;
if (LDBL_MIN_EXP == -16382)
@@ -50,4 +52,29 @@ __totalordermagl (long double x, long double y)
#endif
return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly)));
}
+#ifdef SHARED
+# define CONCATX(x, y) x ## y
+# define CONCAT(x, y) CONCATX (x, y)
+# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__)
+# define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ versioned_symbol (libm, name, aliasname, GLIBC_2_31)
+# undef weak_alias
+# define weak_alias(name, aliasname) \
+ do_symbol (name, UNIQUE_ALIAS (name), aliasname);
+#endif
libm_alias_ldouble (__totalordermag, totalordermag)
+#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)
+int
+attribute_compat_text_section
+__totalordermag_compatl (long double x, long double y)
+{
+ return __totalordermagl (&x, &y);
+}
+#undef do_symbol
+#define do_symbol(orig_name, name, aliasname) \
+ strong_alias (orig_name, name) \
+ compat_symbol (libm, name, aliasname, \
+ CONCAT (FIRST_VERSION_libm_, aliasname))
+libm_alias_ldouble (__totalordermag_compat, totalordermag)
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c b/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
index ec35ad5b61..7aad238eef 100644
--- a/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
+++ b/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
@@ -51,10 +51,10 @@ do_test (void)
SET_LDOUBLE_WORDS (ldny, 0xffff,
(tests[i] >> 32) | 0x80000000,
tests[i] & 0xffffffffULL);
- bool to1 = totalorderl (ldx, ldy);
- bool to2 = totalorderl (ldy, ldx);
- bool to3 = totalorderl (ldnx, ldny);
- bool to4 = totalorderl (ldny, ldnx);
+ bool to1 = totalorderl (&ldx, &ldy);
+ bool to2 = totalorderl (&ldy, &ldx);
+ bool to3 = totalorderl (&ldnx, &ldny);
+ bool to4 = totalorderl (&ldny, &ldnx);
if (to1 && to2 && to3 && to4)
printf ("PASS: test %zu\n", i);
else
@@ -62,10 +62,10 @@ do_test (void)
printf ("FAIL: test %zu\n", i);
result = 1;
}
- to1 = totalordermagl (ldx, ldy);
- to2 = totalordermagl (ldy, ldx);
- to3 = totalordermagl (ldnx, ldny);
- to4 = totalordermagl (ldny, ldnx);
+ to1 = totalordermagl (&ldx, &ldy);
+ to2 = totalordermagl (&ldy, &ldx);
+ to3 = totalordermagl (&ldnx, &ldny);
+ to4 = totalordermagl (&ldny, &ldnx);
if (to1 && to2 && to3 && to4)
printf ("PASS: test %zu (totalordermagl)\n", i);
else
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c b/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c
index 79b32ad93d..4876cdeb6e 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c
@@ -20,7 +20,7 @@
double
attribute_hidden
-totalorderl (double x, double y)
+totalorderl (const double *x, const double *y)
{
return totalorder (x, y);
}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c b/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c
index f63f5a5c2d..f521ce6610 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c
@@ -20,7 +20,7 @@
double
attribute_hidden
-totalordermagl (double x, double y)
+totalordermagl (const double *x, const double *y)
{
return totalordermag (x, y);
}
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 5208057586..1a41ae589f 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1073,3 +1073,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index d38ebfb510..62e1fee467 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1037,3 +1037,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 1157dcf398..08ac3905a0 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1094,6 +1094,22 @@ GLIBC_2.3.4 csinhf F
GLIBC_2.3.4 csqrtf F
GLIBC_2.3.4 ctanf F
GLIBC_2.3.4 ctanhf F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/arm/libm.abilist b/sysdeps/unix/sysv/linux/arm/libm.abilist
index 547e7bcd9f..dd5931f288 100644
--- a/sysdeps/unix/sysv/linux/arm/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/libm.abilist
@@ -458,6 +458,18 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F
GLIBC_2.4 __clog10f F
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index 497f622644..88cdf00342 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -751,3 +751,15 @@ GLIBC_2.29 ynf32 F
GLIBC_2.29 ynf32x F
GLIBC_2.29 ynf64 F
GLIBC_2.29 ynl F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 4bdd605269..e7686d71cf 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -769,4 +769,16 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 087e29790e..e67f9d7d27 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1080,3 +1080,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
index fff5eb17b3..0cf637f248 100644
--- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
@@ -1010,3 +1010,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 547e7bcd9f..dd5931f288 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -458,6 +458,18 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F
GLIBC_2.4 __clog10f F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index 5f422643b1..f0b17ae485 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -809,3 +809,15 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/microblaze/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/libm.abilist
index bbeeebf776..8dedc9a8a6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist
@@ -770,3 +770,15 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 93405d1641..a221d7be09 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -769,4 +769,16 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 33f67a5d3d..823f87277e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1037,3 +1037,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index ecbe596898..64ac932c6a 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -770,3 +770,15 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index a47fca400a..3fab31ff9c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -815,6 +815,18 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index ca7095fe72..b90d28a8fe 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -814,6 +814,18 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 9c6cf06d13..1369ab510c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -808,6 +808,18 @@ GLIBC_2.3 y1l F
GLIBC_2.3 yn F
GLIBC_2.3 ynf F
GLIBC_2.3 ynl F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 554dcd2623..d479a64fca 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1081,3 +1081,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index 361fce20bb..90d9073188 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1019,3 +1019,19 @@ GLIBC_2.28 fmul F
GLIBC_2.28 fmull F
GLIBC_2.28 fsub F
GLIBC_2.28 fsubl F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index be5d286bf2..cd6be8e584 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1038,6 +1038,22 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 512fbc8630..5291424feb 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1038,6 +1038,22 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/sh/libm.abilist b/sysdeps/unix/sysv/linux/sh/libm.abilist
index 09d97d6f52..de0f1c57c3 100644
--- a/sysdeps/unix/sysv/linux/sh/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/libm.abilist
@@ -769,4 +769,16 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 3240ff6aa3..fc52ebf64e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1045,6 +1045,22 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 351331beb7..5288a28533 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1037,3 +1037,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 087f4db051..d620e465d2 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1071,3 +1071,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index e9a1cc0d5c..44b0eddc50 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1071,3 +1071,19 @@ GLIBC_2.29 exp2 F
GLIBC_2.29 log F
GLIBC_2.29 log2 F
GLIBC_2.29 pow F
+GLIBC_2.31 totalorder F
+GLIBC_2.31 totalorderf F
+GLIBC_2.31 totalorderf128 F
+GLIBC_2.31 totalorderf32 F
+GLIBC_2.31 totalorderf32x F
+GLIBC_2.31 totalorderf64 F
+GLIBC_2.31 totalorderf64x F
+GLIBC_2.31 totalorderl F
+GLIBC_2.31 totalordermag F
+GLIBC_2.31 totalordermagf F
+GLIBC_2.31 totalordermagf128 F
+GLIBC_2.31 totalordermagf32 F
+GLIBC_2.31 totalordermagf32x F
+GLIBC_2.31 totalordermagf64 F
+GLIBC_2.31 totalordermagf64x F
+GLIBC_2.31 totalordermagl F