summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-04-08 19:51:44 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-04-09 12:19:06 -0300
commit958dca88dfae18b69e0189011c78a26783d72a50 (patch)
treeb90f5a9895ce7fcec235b78739a4a5b5a3555dff
parent1d912ebb66be1df6aaf06e708e61a6fdcc6c1757 (diff)
downloadglibc-azanella/exp10f-optimization.tar.gz
New exp10f version without SVID compat wrapperazanella/exp10f-optimization
This patch changes the exp10f error handling semantics to only set errno accoring to POSIX rules. New symbol version is introduced at GLIBC_2.32. The old wrappers are kept for compat symbols. There are some outliers that need special handling: - ia64 provides an optimized implementaion of exp10f that uses ia64 specific routines to set SVID compatibility. The new symbol version is aliased to the exp10f one. - m68k with also provides an optimized implementation, adn the new version uses it instead of the sysdeps/ieee754/flt32 one. - riscv and csky uses the generic template implementation that does not provide SVID support. For both cases a new exp10f version is not added, but rather the symbols version of the generic sysdeps/ieee754/flt32 is adjusted instead. Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu.
-rw-r--r--math/Versions3
-rw-r--r--math/w_exp10f.c1
-rw-r--r--math/w_exp10f_compat.c8
-rw-r--r--sysdeps/ia64/fpu/e_exp10f.S12
-rw-r--r--sysdeps/ieee754/flt-32/e_exp10f.c16
-rw-r--r--sysdeps/m68k/m680x0/fpu/e_exp10f.c5
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist1
32 files changed, 63 insertions, 8 deletions
diff --git a/math/Versions b/math/Versions
index d892c5f911..5b3c321490 100644
--- a/math/Versions
+++ b/math/Versions
@@ -590,4 +590,7 @@ libm {
totalorderf128;
totalordermagf128;
}
+ GLIBC_2.32 {
+ exp10f;
+ }
}
diff --git a/math/w_exp10f.c b/math/w_exp10f.c
new file mode 100644
index 0000000000..6e25b021ab
--- /dev/null
+++ b/math/w_exp10f.c
@@ -0,0 +1 @@
+/* Empty. */
diff --git a/math/w_exp10f_compat.c b/math/w_exp10f_compat.c
index 2ab0940601..ea8f947193 100644
--- a/math/w_exp10f_compat.c
+++ b/math/w_exp10f_compat.c
@@ -28,9 +28,9 @@
#if LIBM_SVID_COMPAT
float
-__exp10f (float x)
+__exp10f_compat (float x)
{
- float z = __ieee754_exp10f (x);
+ float z = __exp10f (x);
if (__builtin_expect (!isfinite (z) || z == 0, 0)
&& isfinite (x) && _LIB_VERSION != _IEEE_)
/* exp10f overflow (146) if x > 0, underflow (147) if x < 0. */
@@ -38,9 +38,9 @@ __exp10f (float x)
return z;
}
-libm_alias_float (__exp10, exp10)
+compat_symbol (libm, __exp10f_compat, exp10f, GLIBC_2_1);
# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
-strong_alias (__exp10f, __pow10f)
+strong_alias (__exp10f_compat, __pow10f)
compat_symbol (libm, __pow10f, pow10f, GLIBC_2_1);
# endif
#endif
diff --git a/sysdeps/ia64/fpu/e_exp10f.S b/sysdeps/ia64/fpu/e_exp10f.S
index 67218c737f..e82394b725 100644
--- a/sysdeps/ia64/fpu/e_exp10f.S
+++ b/sysdeps/ia64/fpu/e_exp10f.S
@@ -218,7 +218,7 @@ LOCAL_OBJECT_END(T_table)
.section .text
-GLOBAL_IEEE754_ENTRY(exp10f)
+GLOBAL_IEEE754_ENTRY(__exp10f)
{.mfi
@@ -487,11 +487,17 @@ OUT_RANGE_exp10:
}
;;
-GLOBAL_IEEE754_END(exp10f)
+GLOBAL_IEEE754_END(__exp10f)
libm_alias_float_other (__exp10, exp10)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
-compat_symbol (libm, exp10f, pow10f, GLIBC_2_2)
+strong_alias (__exp10f, __pow10f_compat)
+compat_symbol (libm, __pow10f_compat, pow10f, GLIBC_2_2)
#endif
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_32)
+strong_alias (__exp10f, __exp10f_compat)
+compat_symbol (libm, __exp10f_compat, exp10f, GLIBC_2_1)
+#endif
+versioned_symbol (libm, __exp10f, exp10f, GLIBC_2_32)
LOCAL_LIBM_ENTRY(__libm_error_region)
diff --git a/sysdeps/ieee754/flt-32/e_exp10f.c b/sysdeps/ieee754/flt-32/e_exp10f.c
index 034a9e364a..f51c499b83 100644
--- a/sysdeps/ieee754/flt-32/e_exp10f.c
+++ b/sysdeps/ieee754/flt-32/e_exp10f.c
@@ -21,6 +21,8 @@
#include <stdint.h>
#include <libm-alias-finite.h>
#include <libm-alias-float.h>
+#include <shlib-compat.h>
+#include <math-svid-compat.h>
#include "math_config.h"
/*
@@ -139,7 +141,7 @@ top13 (float x)
}
float
-__ieee754_exp10f (float x)
+__exp10f (float x)
{
uint32_t abstop;
uint64_t ki, t;
@@ -195,4 +197,16 @@ __ieee754_exp10f (float x)
y = y * s;
return (float) y;
}
+#ifndef __exp10f
+strong_alias (__exp10f, __ieee754_exp10f)
libm_alias_finite (__ieee754_exp10f, __exp10f)
+/* For architectures that already provided exp10f without SVID support, there
+ is no need to add a new version. */
+#if !LIBM_SVID_COMPAT
+# define EXP10F_VERSION GLIBC_2_26
+#else
+# define EXP10F_VERSION GLIBC_2_32
+#endif
+versioned_symbol (libm, __exp10f, exp10f, EXP10F_VERSION);
+libm_alias_float_other (__exp10, exp10)
+#endif
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp10f.c b/sysdeps/m68k/m680x0/fpu/e_exp10f.c
index f58fddd8a6..0d03f00e06 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp10f.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp10f.c
@@ -1,3 +1,8 @@
+#include <libm-alias-float.h>
#define FUNC __ieee754_exp10f
#define FUNC_FINITE __exp10f
#include <e_acosf.c>
+strong_alias (__ieee754_exp10f, __exp10f)
+libm_alias_finite (__ieee754_exp10f, __exp10f)
+versioned_symbol (libm, __exp10f, exp10f, GLIBC_2_32);
+libm_alias_float_other (__ieee754_exp10, exp10)
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 1a41ae589f..a19a69ce6a 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1089,3 +1089,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 62e1fee467..5362c24e4c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1053,3 +1053,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 08ac3905a0..650d10ec8e 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1110,6 +1110,7 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index dd5931f288..6914b58d76 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -470,6 +470,7 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index dd5931f288..6914b58d76 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -470,6 +470,7 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index e7686d71cf..6ac2295b05 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -781,4 +781,5 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 e67f9d7d27..0ab740dd97 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1096,3 +1096,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
index 0cf637f248..c8e8fd7142 100644
--- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
@@ -1026,3 +1026,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index dd5931f288..6914b58d76 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -470,6 +470,7 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 f0b17ae485..c60fdc6298 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -821,3 +821,4 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 8dedc9a8a6..adea0fe4c0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -782,3 +782,4 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 8dedc9a8a6..adea0fe4c0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -782,3 +782,4 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index a221d7be09..272969a26f 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -781,4 +781,5 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 823f87277e..dd0dc6689c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1053,3 +1053,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index 64ac932c6a..4941deefa6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -782,3 +782,4 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 3fab31ff9c..fc2d142bd5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -827,6 +827,7 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 1369ab510c..972c9bc597 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -820,6 +820,7 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 d479a64fca..1ce52ea277 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1097,3 +1097,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index cd6be8e584..321810d5a4 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1054,6 +1054,7 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 5291424feb..451a860a83 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1054,6 +1054,7 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index de0f1c57c3..a5fb514eae 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -781,4 +781,5 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index de0f1c57c3..a5fb514eae 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -781,4 +781,5 @@ GLIBC_2.31 totalordermagf32 F
GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 fc52ebf64e..d81e8a726b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1061,6 +1061,7 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f 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 5288a28533..3d12376d33 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1053,3 +1053,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index d620e465d2..89c4ac484d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1087,3 +1087,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 44b0eddc50..d3c9cec71a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1087,3 +1087,4 @@ GLIBC_2.31 totalordermagf32x F
GLIBC_2.31 totalordermagf64 F
GLIBC_2.31 totalordermagf64x F
GLIBC_2.31 totalordermagl F
+GLIBC_2.32 exp10f F