aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--math/Versions4
-rw-r--r--math/w_exp10_compat.c32
-rw-r--r--sysdeps/i386/fpu/w_exp10_compat.c3
-rw-r--r--sysdeps/ieee754/dbl-64/e_exp10.c13
-rw-r--r--sysdeps/ieee754/dbl-64/w_exp10.c1
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_exp10_compat.c3
-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/m68k/coldfire/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/powerpc32/nofpu/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
29 files changed, 71 insertions, 8 deletions
diff --git a/math/Versions b/math/Versions
index 759b5fa..26e15ce 100644
--- a/math/Versions
+++ b/math/Versions
@@ -635,4 +635,8 @@ libm {
# No SVID compatible error handling.
fmod; fmodf;
}
+ GLIBC_2.39 {
+ # No SVID compatible error handling.
+ exp10;
+ }
}
diff --git a/math/w_exp10_compat.c b/math/w_exp10_compat.c
index d8e0f7e..6b72aef 100644
--- a/math/w_exp10_compat.c
+++ b/math/w_exp10_compat.c
@@ -25,9 +25,15 @@
#include <math-svid-compat.h>
#include <libm-alias-double.h>
-#if LIBM_SVID_COMPAT
+#ifndef NO_COMPAT_NEEDED
+# define NO_COMPAT_NEEDED 0
+#endif
+
+#if LIBM_SVID_COMPAT && (SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_39) \
+ || defined NO_LONG_DOUBLE \
+ || defined LONG_DOUBLE_COMPAT)
double
-__exp10 (double x)
+__exp10_compat (double x)
{
double z = __ieee754_exp10 (x);
if (__builtin_expect (!isfinite (z) || z == 0, 0)
@@ -37,14 +43,30 @@ __exp10 (double x)
return z;
}
-libm_alias_double (__exp10, exp10)
+# if NO_COMPAT_NEEDED
+# ifdef SHARED
+libm_alias_double (__exp10_compat, exp10)
+# endif
+#else
+# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_39)
+compat_symbol (libm, __exp10_compat, exp10, GLIBC_2_1);
+# endif
+# ifdef NO_LONG_DOUBLE
+weak_alias (__exp10_compat, exp10l)
+# endif
+# ifdef LONG_DOUBLE_COMPAT
+LONG_DOUBLE_COMPAT_CHOOSE_libm_exp10l (
+ compat_symbol (libm, __exp10_compat, exp10l, FIRST_VERSION_libm_exp10l), );
+# endif
+# endif
+
# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
-strong_alias (__exp10, __pow10)
+strong_alias (__exp10_compat, __pow10)
compat_symbol (libm, __pow10, pow10, GLIBC_2_1);
# endif
# ifdef NO_LONG_DOUBLE
# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
-strong_alias (__exp10l, __pow10l)
+strong_alias (exp10l, __pow10l)
compat_symbol (libm, __pow10l, pow10l, GLIBC_2_1);
# endif
# endif
diff --git a/sysdeps/i386/fpu/w_exp10_compat.c b/sysdeps/i386/fpu/w_exp10_compat.c
new file mode 100644
index 0000000..b534553
--- /dev/null
+++ b/sysdeps/i386/fpu/w_exp10_compat.c
@@ -0,0 +1,3 @@
+/* i386 provides an optimized __ieee754_exp10. */
+#define NO_COMPAT_NEEDED 1
+#include <math/w_exp10_compat.c>
diff --git a/sysdeps/ieee754/dbl-64/e_exp10.c b/sysdeps/ieee754/dbl-64/e_exp10.c
index 0d4e428..225fc74 100644
--- a/sysdeps/ieee754/dbl-64/e_exp10.c
+++ b/sysdeps/ieee754/dbl-64/e_exp10.c
@@ -18,9 +18,9 @@
#include <math.h>
#include <math-barriers.h>
#include <math-narrow-eval.h>
-#include <math_private.h>
-#include <float.h>
+#include <math-svid-compat.h>
#include <libm-alias-finite.h>
+#include <libm-alias-double.h>
#include "math_config.h"
#define N (1 << EXP_TABLE_BITS)
@@ -75,7 +75,7 @@ special_case (uint64_t sbits, double_t tmp, uint64_t ki)
/* Double-precision 10^x approximation. Largest observed error is ~0.513 ULP. */
double
-__ieee754_exp10 (double x)
+__exp10 (double x)
{
uint64_t ix = asuint64 (x);
uint32_t abstop = (ix >> 52) & 0x7ff;
@@ -144,4 +144,11 @@ __ieee754_exp10 (double x)
return s * y + s;
}
+strong_alias (__exp10, __ieee754_exp10)
libm_alias_finite (__ieee754_exp10, __exp10)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __exp10, exp10, GLIBC_2_39);
+libm_alias_double_other (__exp10, exp10)
+#else
+libm_alias_double (__exp10, exp10)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/w_exp10.c b/sysdeps/ieee754/dbl-64/w_exp10.c
new file mode 100644
index 0000000..1cc8931
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/w_exp10.c
@@ -0,0 +1 @@
+/* Not needed. */
diff --git a/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c b/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
new file mode 100644
index 0000000..0d3e718
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
@@ -0,0 +1,3 @@
+/* m68k provides an optimized __ieee754_exp10. */
+#define NO_COMPAT_NEEDED 1
+#include <math/w_exp10_compat.c>
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index e3924c3..f0da228 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1148,3 +1148,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 066dd1a..f5d8023 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1205,6 +1205,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 4adfed0..f020a8a 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -535,6 +535,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 4adfed0..f020a8a 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -535,6 +535,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 5c3f47c..450ac03 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -846,4 +846,5 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 4adfed0..f020a8a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -535,6 +535,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index ea0dbd4..1f7f63f 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -847,3 +847,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index ea0dbd4..1f7f63f 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -847,3 +847,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 7c94a8d..797071a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -846,4 +846,5 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 0d08245..1475870 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1148,3 +1148,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index a3b776f..c0ebe11 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -847,3 +847,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index c696215..4f88e0a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -892,6 +892,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 a5ce9b1..edc2614 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -891,6 +891,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 8e41056..0a8a143 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -885,6 +885,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 939f29a..5174d20 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1320,3 +1320,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 4baefb1..5ff11fb 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1149,6 +1149,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 debb767..0e246c2 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1149,6 +1149,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 fb94386..7b43a86 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -846,4 +846,5 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 fb94386..7b43a86 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -846,4 +846,5 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 2fdb5ff..e3dcf3d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1156,6 +1156,7 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 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 02d4c3a..20fef20 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1148,3 +1148,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index cc8be5b..c1c5c76 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1181,3 +1181,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index fda4df2..fac219d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1181,3 +1181,4 @@ GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
+GLIBC_2.39 exp10 F