about summary refs log tree commit diff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-06-17 16:31:49 +0000
committerJoseph Myers <josmyers@redhat.com>2024-06-17 16:31:49 +0000
commit7ec903e028271d029818378fd60ddaf6b76b89ac (patch)
tree29840403dc63c9c633e18e1d6607280ae59ce601 /sysdeps/unix
parent55eb99e9a9d840ba452b128be14d6529c2dde039 (diff)
downloadglibc-7ec903e028271d029818378fd60ddaf6b76b89ac.tar.gz
glibc-7ec903e028271d029818378fd60ddaf6b76b89ac.tar.xz
glibc-7ec903e028271d029818378fd60ddaf6b76b89ac.zip
Implement C23 exp2m1, exp10m1
C23 adds various <math.h> function families originally defined in TS
18661-4.  Add the exp2m1 and exp10m1 functions (exp2(x)-1 and
exp10(x)-1, like expm1).

As with other such functions, these use type-generic templates that
could be replaced with faster and more accurate type-specific
implementations in future.  Test inputs are copied from those for
expm1, plus some additions close to the overflow threshold (copied
from exp2 and exp10) and also some near the underflow threshold.

exp2m1 has the unusual property of having an input (M_MAX_EXP) where
whether the function overflows (under IEEE semantics) depends on the
rounding mode.  Although these could reasonably be XFAILed in the
testsuite (as we do in some cases for arguments very close to a
function's overflow threshold when an error of a few ulps in the
implementation can result in the implementation not agreeing with an
ideal one on whether overflow takes place - the testsuite isn't smart
enough to handle this automatically), since these functions aren't
required to be correctly rounding, I made the implementation check for
and handle this case specially.

The Makefile ordering expected by lint-makefiles for the new functions
is a bit peculiar, but I implemented it in this patch so that the test
passes; I don't know why log2 also needed moving in one Makefile
variable setting when it didn't in my previous patches, but the
failure showed a different place was expected for that function as
well.

The powerpc64le IFUNC setup seems not to be as self-contained as one
might hope; it shouldn't be necessary to add IFUNCs for new functions
such as these simply to get them building, but without setting up
IFUNCs for the new functions, there were undefined references to
__GI___expm1f128 (that IFUNC machinery results in no such function
being defined, but doesn't stop include/math.h from doing the
redirection resulting in the exp2m1f128 and exp10m1f128
implementations expecting to call it).

Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'sysdeps/unix')
-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/arc/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/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/loongarch/lp64/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/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/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/or1k/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.abilist18
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/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/be/libm.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/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
31 files changed, 430 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 5737e6dd1c..024cb8d31c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1149,6 +1149,22 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index f0e96fb621..4b7f756811 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1308,6 +1308,22 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index 315a4532ec..f6eb7a535b 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -757,6 +757,18 @@ GLIBC_2.35 fminimumf64 F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 20da5b77d7..78540e97d2 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 20da5b77d7..78540e97d2 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index a8181e88f0..7a68784a1d 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -823,6 +823,18 @@ GLIBC_2.35 fminimumf64 F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index b10d92f560..d29139ebf1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index e760f738b9..0797f3fb72 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1188,6 +1188,22 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
index 1b3f5df285..16bde437e9 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
@@ -1028,6 +1028,22 @@ GLIBC_2.36 ynf32x F
 GLIBC_2.36 ynf64 F
 GLIBC_2.36 ynf64x F
 GLIBC_2.36 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 20da5b77d7..78540e97d2 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index 89069d51ea..6fd32e76e5 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -884,6 +884,18 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index bcd47e7b13..d2c2cdbc6a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index bcd47e7b13..d2c2cdbc6a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index f21b04a5c4..a7c8ca0aec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 4af7729493..8e36e16069 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1149,6 +1149,22 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index 95c654f592..c0df77f57d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist
index edcd2066ab..4db8702dbc 100644
--- a/sysdeps/unix/sysv/linux/or1k/libm.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist
@@ -757,6 +757,18 @@ GLIBC_2.35 ynf32 F
 GLIBC_2.35 ynf32x F
 GLIBC_2.35 ynf64 F
 GLIBC_2.35 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index f56a507f29..cbadcefc59 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -995,6 +995,18 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index be9e8968f1..d0078a41eb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -994,6 +994,18 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 70eea297b7..86fdb9f443 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -988,6 +988,18 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 4f9aa4c0fa..34568bd9dd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1321,9 +1321,27 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 __exp10m1ieee128 F
+GLIBC_2.40 __exp2m1ieee128 F
 GLIBC_2.40 __log10p1ieee128 F
 GLIBC_2.40 __log2p1ieee128 F
 GLIBC_2.40 __logp1ieee128 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
index ef575d0b61..248ca383b4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
@@ -1028,6 +1028,22 @@ GLIBC_2.35 fminimumf64x F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index 9e647f7ccc..c8f976c077 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1125,6 +1125,22 @@ GLIBC_2.35 fminimumf64x F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 022cb27b1f..81f186f383 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1252,6 +1252,22 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 1453d0967f..ee54f8d4a4 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1252,6 +1252,22 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index 044945de33..b21a3ba387 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index 044945de33..b21a3ba387 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -848,6 +848,18 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f32 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 92b6a77f69..15c958e345 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1259,6 +1259,22 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 258058bc86..bf608f5d62 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1149,6 +1149,22 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 66f264dca8..0ba4ef54c4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1182,6 +1182,22 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 877d64abea..405711559a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1182,6 +1182,22 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
 GLIBC_2.40 log10p1 F
 GLIBC_2.40 log10p1f F
 GLIBC_2.40 log10p1f128 F