about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-09-01 21:13:18 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-09-01 21:13:18 +0000
commit5a80d39d0d2587e9bd8e72f19e92eeb2a66fbe9e (patch)
tree92d35005b29aa5969b6da94249d31b50c2871ae3
parent3824fc38910f71c2c8cc623e788ff7eb09999642 (diff)
downloadglibc-5a80d39d0d2587e9bd8e72f19e92eeb2a66fbe9e.tar.gz
glibc-5a80d39d0d2587e9bd8e72f19e92eeb2a66fbe9e.tar.xz
glibc-5a80d39d0d2587e9bd8e72f19e92eeb2a66fbe9e.zip
Obsolete pow10 functions.
This patch obsoletes the pow10, pow10f and pow10l functions (makes
them into compat symbols, not available for new ports or static
linking).  The exp10 names for these functions are standardized (in TS
18661-4) and were added in the same glibc version (2.1) as pow10 so
source code can change to use them without any loss of portability.
Since pow10 is deliberately not provided for _Float128, only exp10,
this slightly simplifies moving to the new wrapper templates in the
!LIBM_SVID_COMPAT case, by avoiding needing to arrange for pow10,
pow10f and pow10l to be defined by those templates.

Tested for x86_64, and with build-many-glibcs.py.

	* manual/math.texi (pow10): Do not document.
	(pow10f): Likewise.
	(pow10l): Likewise.
	* math/bits/mathcalls.h [__USE_GNU] (pow10): Do not declare.
	* math/bits/math-finite.h [__USE_GNU] (pow10): Likewise.
	* math/libm-test-exp10.inc (pow10_test): Remove.
	(do_test): Do not call pow10.
	* math/w_exp10_compat.c (pow10): Make into compat symbol.
	[NO_LONG_DOUBLE] (pow10l): Likewise.
	* math/w_exp10f_compat.c (pow10f): Likewise.
	* math/w_exp10l_compat.c (pow10l): Likewise.
	* sysdeps/ia64/fpu/e_exp10.S: Include <shlib-compat.h>.
	(pow10): Make into compat symbol.
	* sysdeps/ia64/fpu/e_exp10f.S: Include <shlib-compat.h>.
	(pow10f): Make into compat symbol.
	* sysdeps/ia64/fpu/e_exp10l.S: Include <shlib-compat.h>.
	(pow10l): Make into compat symbol.
	* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove
	pow10.
	(CFLAGS-nldbl-pow10.c): Remove variable..
	* sysdeps/ieee754/ldbl-opt/nldbl-pow10.c: Remove file.
	* sysdeps/ieee754/ldbl-opt/w_exp10_compat.c (pow10l): Condition on
	[SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)].
	* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c (compat_symbol):
	Undefine and redefine.
	(pow10l): Make into compat symbol.
	* sysdeps/aarch64/libm-test-ulps: Remove pow10 ulps.
	* sysdeps/alpha/fpu/libm-test-ulps: Likewise.
	* sysdeps/arm/libm-test-ulps: Likewise.
	* sysdeps/hppa/fpu/libm-test-ulps: Likewise.
	* sysdeps/i386/fpu/libm-test-ulps: Likewise.
	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
	* sysdeps/microblaze/libm-test-ulps: Likewise.
	* sysdeps/mips/mips32/libm-test-ulps: Likewise.
	* sysdeps/mips/mips64/libm-test-ulps: Likewise.
	* sysdeps/nios2/libm-test-ulps: Likewise.
	* sysdeps/powerpc/fpu/libm-test-ulps: Likewise.
	* sysdeps/powerpc/nofpu/libm-test-ulps: Likewise.
	* sysdeps/s390/fpu/libm-test-ulps: Likewise.
	* sysdeps/sh/libm-test-ulps: Likewise.
	* sysdeps/sparc/fpu/libm-test-ulps: Likewise.
	* sysdeps/tile/libm-test-ulps: Likewise.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
-rw-r--r--ChangeLog46
-rw-r--r--NEWS4
-rw-r--r--manual/math.texi10
-rw-r--r--math/bits/math-finite.h5
-rw-r--r--math/bits/mathcalls.h6
-rw-r--r--math/libm-test-exp10.inc10
-rw-r--r--math/w_exp10_compat.c8
-rw-r--r--math/w_exp10f_compat.c4
-rw-r--r--math/w_exp10l_compat.c4
-rw-r--r--sysdeps/aarch64/libm-test-ulps30
-rw-r--r--sysdeps/alpha/fpu/libm-test-ulps30
-rw-r--r--sysdeps/arm/libm-test-ulps22
-rw-r--r--sysdeps/hppa/fpu/libm-test-ulps22
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps30
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps30
-rw-r--r--sysdeps/ia64/fpu/e_exp10.S6
-rw-r--r--sysdeps/ia64/fpu/e_exp10f.S6
-rw-r--r--sysdeps/ia64/fpu/e_exp10l.S6
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile3
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-pow10.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_exp10_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c14
-rw-r--r--sysdeps/microblaze/libm-test-ulps4
-rw-r--r--sysdeps/mips/mips32/libm-test-ulps22
-rw-r--r--sysdeps/mips/mips64/libm-test-ulps30
-rw-r--r--sysdeps/nios2/libm-test-ulps4
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps30
-rw-r--r--sysdeps/powerpc/nofpu/libm-test-ulps30
-rw-r--r--sysdeps/s390/fpu/libm-test-ulps30
-rw-r--r--sysdeps/sh/libm-test-ulps4
-rw-r--r--sysdeps/sparc/fpu/libm-test-ulps30
-rw-r--r--sysdeps/tile/libm-test-ulps4
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps30
33 files changed, 96 insertions, 431 deletions
diff --git a/ChangeLog b/ChangeLog
index 18d77a6951..1e8d9a5d54 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,49 @@
+2017-09-01  Joseph Myers  <joseph@codesourcery.com>
+
+	* manual/math.texi (pow10): Do not document.
+	(pow10f): Likewise.
+	(pow10l): Likewise.
+	* math/bits/mathcalls.h [__USE_GNU] (pow10): Do not declare.
+	* math/bits/math-finite.h [__USE_GNU] (pow10): Likewise.
+	* math/libm-test-exp10.inc (pow10_test): Remove.
+	(do_test): Do not call pow10.
+	* math/w_exp10_compat.c (pow10): Make into compat symbol.
+	[NO_LONG_DOUBLE] (pow10l): Likewise.
+	* math/w_exp10f_compat.c (pow10f): Likewise.
+	* math/w_exp10l_compat.c (pow10l): Likewise.
+	* sysdeps/ia64/fpu/e_exp10.S: Include <shlib-compat.h>.
+	(pow10): Make into compat symbol.
+	* sysdeps/ia64/fpu/e_exp10f.S: Include <shlib-compat.h>.
+	(pow10f): Make into compat symbol.
+	* sysdeps/ia64/fpu/e_exp10l.S: Include <shlib-compat.h>.
+	(pow10l): Make into compat symbol.
+	* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove
+	pow10.
+	(CFLAGS-nldbl-pow10.c): Remove variable..
+	* sysdeps/ieee754/ldbl-opt/nldbl-pow10.c: Remove file.
+	* sysdeps/ieee754/ldbl-opt/w_exp10_compat.c (pow10l): Condition on
+	[SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)].
+	* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c (compat_symbol):
+	Undefine and redefine.
+	(pow10l): Make into compat symbol.
+	* sysdeps/aarch64/libm-test-ulps: Remove pow10 ulps.
+	* sysdeps/alpha/fpu/libm-test-ulps: Likewise.
+	* sysdeps/arm/libm-test-ulps: Likewise.
+	* sysdeps/hppa/fpu/libm-test-ulps: Likewise.
+	* sysdeps/i386/fpu/libm-test-ulps: Likewise.
+	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
+	* sysdeps/microblaze/libm-test-ulps: Likewise.
+	* sysdeps/mips/mips32/libm-test-ulps: Likewise.
+	* sysdeps/mips/mips64/libm-test-ulps: Likewise.
+	* sysdeps/nios2/libm-test-ulps: Likewise.
+	* sysdeps/powerpc/fpu/libm-test-ulps: Likewise.
+	* sysdeps/powerpc/nofpu/libm-test-ulps: Likewise.
+	* sysdeps/s390/fpu/libm-test-ulps: Likewise.
+	* sysdeps/sh/libm-test-ulps: Likewise.
+	* sysdeps/sparc/fpu/libm-test-ulps: Likewise.
+	* sysdeps/tile/libm-test-ulps: Likewise.
+	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
+
 2017-09-01  Paul Pluzhnikov  <ppluzhnikov@google.com>
 
 	* stdlib/tst-atexit-common.c (crumbs): Ensure correct size.
diff --git a/NEWS b/NEWS
index dce514dac7..dd381f8930 100644
--- a/NEWS
+++ b/NEWS
@@ -33,6 +33,10 @@ Deprecated and removed features, and other changes affecting compatibility:
   exception, or the macros X_TLOSS, DOMAIN, SING, OVERFLOW, UNDERFLOW,
   TLOSS, PLOSS and HUGE.
 
+* The libm functions pow10, pow10f and pow10l are no longer supported for
+  new programs.  Programs should use the standard names exp10, exp10f and
+  exp10l for these functions instead.
+
 * The mcontext_t type is no longer the same as struct sigcontext.  On
   platforms where it was previously the same, this changes the C++ name
   mangling for interfaces involving this type.
diff --git a/manual/math.texi b/manual/math.texi
index d58b0e531d..f5602c9be3 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -490,22 +490,14 @@ Mathematically, @code{exp2 (x)} is the same as @code{exp (x * log (2))}.
 @deftypefunx {long double} exp10l (long double @var{x})
 @deftypefunx _FloatN exp10fN (_Float@var{N} @var{x})
 @deftypefunx _FloatNx exp10fNx (_Float@var{N}x @var{x})
-@deftypefunx double pow10 (double @var{x})
-@deftypefunx float pow10f (float @var{x})
-@deftypefunx {long double} pow10l (long double @var{x})
 @standards{ISO, math.h}
 @standardsx{exp10fN, TS 18661-4:2015, math.h}
 @standardsx{exp10fNx, TS 18661-4:2015, math.h}
-@standardsx{pow10, GNU, math.h}
-@standardsx{pow10f, GNU, math.h}
-@standardsx{pow10l, GNU, math.h}
 @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
 These functions compute @code{10} raised to the power @var{x}.
 Mathematically, @code{exp10 (x)} is the same as @code{exp (x * log (10))}.
 
-The @code{exp10} functions are from TS 18661-4:2015; the @code{pow10}
-names are GNU extensions.  The name @code{exp10} is
-preferred, since it is analogous to @code{exp} and @code{exp2}.
+The @code{exp10} functions are from TS 18661-4:2015.
 @end deftypefun
 
 
diff --git a/math/bits/math-finite.h b/math/bits/math-finite.h
index de57b504bd..8113db265a 100644
--- a/math/bits/math-finite.h
+++ b/math/bits/math-finite.h
@@ -70,11 +70,6 @@ __MATH_REDIRCALL (exp, , (_Mdouble_));
 #ifdef __USE_GNU
 /* exp10.  */
 __MATH_REDIRCALL (exp10, , (_Mdouble_));
-
-/* pow10.  */
-# if !__MATH_DECLARING_FLOATN
-__MATH_REDIRCALL_2 (pow10, , (_Mdouble_), exp10);
-# endif
 #endif
 
 #ifdef __USE_ISOC99
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index 90b996740b..d799b62140 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -113,12 +113,6 @@ __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)) __nonnull ((2));
 /* Compute exponent to base ten.  */
 __MATHCALL (exp10,, (_Mdouble_ __x));
 #endif
-#ifdef __USE_GNU
-/* Another name occasionally used.  */
-# if !__MATH_DECLARING_FLOATN
-__MATHCALL (pow10,, (_Mdouble_ __x));
-# endif
-#endif
 
 #if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
 /* Return exp(X) - 1.  */
diff --git a/math/libm-test-exp10.inc b/math/libm-test-exp10.inc
index 374d12a193..4da3715771 100644
--- a/math/libm-test-exp10.inc
+++ b/math/libm-test-exp10.inc
@@ -37,19 +37,9 @@ exp10_test (void)
 }
 
 static void
-pow10_test (void)
-{
-#if !TEST_FLOATN
-  /* pow10 uses the same test data as exp10.  */
-  ALL_RM_TEST (pow10, 0, exp10_test_data, RUN_TEST_LOOP_f_f, END);
-#endif
-}
-
-static void
 do_test (void)
 {
   exp10_test ();
-  pow10_test ();
 }
 
 /*
diff --git a/math/w_exp10_compat.c b/math/w_exp10_compat.c
index 64f1d19950..5256f5b06f 100644
--- a/math/w_exp10_compat.c
+++ b/math/w_exp10_compat.c
@@ -37,11 +37,15 @@ __exp10 (double x)
   return z;
 }
 weak_alias (__exp10, exp10)
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
 strong_alias (__exp10, __pow10)
-weak_alias (__pow10, pow10)
+compat_symbol (libm, __pow10, pow10, GLIBC_2_1);
+#endif
 #ifdef NO_LONG_DOUBLE
 strong_alias (__exp10, __exp10l)
 weak_alias (__exp10, exp10l)
+# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
 strong_alias (__exp10l, __pow10l)
-weak_alias (__pow10l, pow10l)
+compat_symbol (libm, __pow10l, pow10l, GLIBC_2_1);
+# endif
 #endif
diff --git a/math/w_exp10f_compat.c b/math/w_exp10f_compat.c
index 5cf926aee2..c559e6a629 100644
--- a/math/w_exp10f_compat.c
+++ b/math/w_exp10f_compat.c
@@ -37,5 +37,7 @@ __exp10f (float x)
   return z;
 }
 weak_alias (__exp10f, exp10f)
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
 strong_alias (__exp10f, __pow10f)
-weak_alias (__pow10f, pow10f)
+compat_symbol (libm, __pow10f, pow10f, GLIBC_2_1);
+#endif
diff --git a/math/w_exp10l_compat.c b/math/w_exp10l_compat.c
index 06f5267a8f..03b7ce9b6b 100644
--- a/math/w_exp10l_compat.c
+++ b/math/w_exp10l_compat.c
@@ -37,5 +37,7 @@ __exp10l (long double x)
   return z;
 }
 weak_alias (__exp10l, exp10l)
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
 strong_alias (__exp10l, __pow10l)
-weak_alias (__pow10l, pow10l)
+compat_symbol (libm, __pow10l, pow10l, GLIBC_2_1);
+#endif
diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps
index 0f987bca59..797a8ef8cb 100644
--- a/sysdeps/aarch64/libm-test-ulps
+++ b/sysdeps/aarch64/libm-test-ulps
@@ -1937,36 +1937,6 @@ ifloat: 1
 ildouble: 2
 ldouble: 2
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/alpha/fpu/libm-test-ulps b/sysdeps/alpha/fpu/libm-test-ulps
index aaa8e4f7c1..6d8440a06b 100644
--- a/sysdeps/alpha/fpu/libm-test-ulps
+++ b/sysdeps/alpha/fpu/libm-test-ulps
@@ -1931,36 +1931,6 @@ ifloat: 1
 ildouble: 2
 ldouble: 2
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/arm/libm-test-ulps b/sysdeps/arm/libm-test-ulps
index c6ee80095a..53fc6df01a 100644
--- a/sysdeps/arm/libm-test-ulps
+++ b/sysdeps/arm/libm-test-ulps
@@ -1437,28 +1437,6 @@ Function: "pow":
 float: 1
 ifloat: 1
 
-Function: "pow10":
-double: 2
-idouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/hppa/fpu/libm-test-ulps b/sysdeps/hppa/fpu/libm-test-ulps
index 6e2058391d..81e98cc65c 100644
--- a/sysdeps/hppa/fpu/libm-test-ulps
+++ b/sysdeps/hppa/fpu/libm-test-ulps
@@ -1499,28 +1499,6 @@ Function: "pow":
 float: 1
 ifloat: 1
 
-Function: "pow10":
-double: 2
-idouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index ed685de35d..68017a511e 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -2358,36 +2358,6 @@ ifloat128: 2
 ildouble: 1
 ldouble: 1
 
-Function: "pow10":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow10_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
 Function: "pow_downward":
 double: 1
 float128: 2
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index 053f5ec972..d81c28ba95 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -2360,36 +2360,6 @@ ifloat128: 2
 ildouble: 1
 ldouble: 1
 
-Function: "pow10":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow10_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
 Function: "pow_downward":
 double: 1
 float128: 2
diff --git a/sysdeps/ia64/fpu/e_exp10.S b/sysdeps/ia64/fpu/e_exp10.S
index eafa59dd7c..7b0737184b 100644
--- a/sysdeps/ia64/fpu/e_exp10.S
+++ b/sysdeps/ia64/fpu/e_exp10.S
@@ -87,6 +87,8 @@
 // p6-p12
 //
 
+#include <shlib-compat.h>
+
 
 GR_TBL_START        = r2
 GR_LOG_TBL          = r3
@@ -534,7 +536,9 @@ OUT_RANGE_exp10:
 ;;
 
 GLOBAL_IEEE754_END(exp10)
-weak_alias (exp10, pow10)
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
+compat_symbol (libm, exp10, pow10, GLIBC_2_2)
+#endif
 
 
 LOCAL_LIBM_ENTRY(__libm_error_region)
diff --git a/sysdeps/ia64/fpu/e_exp10f.S b/sysdeps/ia64/fpu/e_exp10f.S
index fa54e9039f..f9fe8ca192 100644
--- a/sysdeps/ia64/fpu/e_exp10f.S
+++ b/sysdeps/ia64/fpu/e_exp10f.S
@@ -86,6 +86,8 @@
 // p6-p12
 //
 
+#include <shlib-compat.h>
+
 
 GR_TBL_START        = r2
 GR_LOG_TBL          = r3
@@ -486,7 +488,9 @@ OUT_RANGE_exp10:
 ;;
 
 GLOBAL_IEEE754_END(exp10f)
-weak_alias (exp10f, pow10f)
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
+compat_symbol (libm, exp10f, pow10f, GLIBC_2_2)
+#endif
 
 
 LOCAL_LIBM_ENTRY(__libm_error_region)
diff --git a/sysdeps/ia64/fpu/e_exp10l.S b/sysdeps/ia64/fpu/e_exp10l.S
index f72d547ebf..0a610b3597 100644
--- a/sysdeps/ia64/fpu/e_exp10l.S
+++ b/sysdeps/ia64/fpu/e_exp10l.S
@@ -85,6 +85,8 @@
 // p6-p8, p11-p14
 //
 
+#include <shlib-compat.h>
+
 
        FR_X        = f10
        FR_Y        = f1
@@ -747,7 +749,9 @@ OUT_RANGE_EXP10:
 ;;
 
 GLOBAL_IEEE754_END(exp10l)
-weak_alias (exp10l, pow10l)
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
+compat_symbol (libm, exp10l, pow10l, GLIBC_2_2)
+#endif
 
 
 LOCAL_LIBM_ENTRY(__libm_error_region)
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 81429d0ddd..ffc55d1d9a 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -29,7 +29,7 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
 		 qecvt qfcvt qgcvt qecvt_r qfcvt_r \
 		 isinf isnan finite signbit scalb log2 lgamma_r ceil \
 		 significand acos asin atan atan2 cos sin tan cosh sinh \
-		 tanh acosh asinh atanh exp log log10 exp10 pow10 expm1 \
+		 tanh acosh asinh atanh exp log log10 exp10 expm1 \
 		 log1p logb exp2 sqrt cbrt fabs floor j0 j1 y0 y1 erf erfc \
 		 lgamma tgamma gamma rint nearbyint round trunc \
 		 copysign fdim fmax fmin nextafter pow hypot fmod \
@@ -136,7 +136,6 @@ CFLAGS-nldbl-nexttoward.c = -fno-builtin-nexttoward -fno-builtin-nexttowardl
 CFLAGS-nldbl-nexttowardf.c = -fno-builtin-nexttowardf
 CFLAGS-nldbl-nextup.c = -fno-builtin-nextupl
 CFLAGS-nldbl-pow.c = -fno-builtin-powl
-CFLAGS-nldbl-pow10.c = -fno-builtin-pow10l
 CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml
 CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
 CFLAGS-nldbl-rint.c = -fno-builtin-rintl
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c b/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c
deleted file mode 100644
index 20ebf8d1bb..0000000000
--- a/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "nldbl-compat.h"
-
-double
-attribute_hidden
-pow10l (double x)
-{
-  return pow10 (x);
-}
diff --git a/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c b/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c
index 142a70bcd6..eb132cfbe5 100644
--- a/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c
@@ -2,5 +2,8 @@
 #include <math/w_exp10_compat.c>
 #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
 compat_symbol (libm, __exp10, exp10l, GLIBC_2_1);
-compat_symbol (libm, __pow10, pow10l, GLIBC_2_1);
+# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
+strong_alias (__pow10, __pow10_pow10l)
+compat_symbol (libm, __pow10_pow10l, pow10l, GLIBC_2_1);
+# endif
 #endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c b/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
index 8f2ccd3441..cf154882fe 100644
--- a/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
@@ -1,6 +1,18 @@
 #include <math_ldbl_opt.h>
 #undef weak_alias
 #define weak_alias(n,a)
+#undef compat_symbol
+#define compat_symbol(l,n,a,v)
 #include <math/w_exp10l_compat.c>
 long_double_symbol (libm, __exp10l, exp10l);
-long_double_symbol (libm, __pow10l, pow10l);
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
+/* compat_symbol was undefined and redefined above to avoid the
+   default pow10l compat symbol at version GLIBC_2_1 (as for ldbl-opt
+   configurations, that version should have the alias to exp10).  So
+   it now needs to be redefined to define the compat symbol at version
+   LONG_DOUBLE_COMPAT_VERSION.  */
+# undef compat_symbol
+# define compat_symbol(lib, local, symbol, version)	\
+  compat_symbol_reference (lib, local, symbol, version)
+compat_symbol (libm, __pow10l, pow10l, LONG_DOUBLE_COMPAT_VERSION);
+#endif
diff --git a/sysdeps/microblaze/libm-test-ulps b/sysdeps/microblaze/libm-test-ulps
index 64f935387d..e4b4d4e490 100644
--- a/sysdeps/microblaze/libm-test-ulps
+++ b/sysdeps/microblaze/libm-test-ulps
@@ -343,10 +343,6 @@ Function: "pow":
 float: 1
 ifloat: 1
 
-Function: "pow10":
-double: 2
-idouble: 2
-
 Function: "sin":
 float: 1
 ifloat: 1
diff --git a/sysdeps/mips/mips32/libm-test-ulps b/sysdeps/mips/mips32/libm-test-ulps
index c6ee80095a..53fc6df01a 100644
--- a/sysdeps/mips/mips32/libm-test-ulps
+++ b/sysdeps/mips/mips32/libm-test-ulps
@@ -1437,28 +1437,6 @@ Function: "pow":
 float: 1
 ifloat: 1
 
-Function: "pow10":
-double: 2
-idouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/mips/mips64/libm-test-ulps b/sysdeps/mips/mips64/libm-test-ulps
index b3b0140abc..f296909cca 100644
--- a/sysdeps/mips/mips64/libm-test-ulps
+++ b/sysdeps/mips/mips64/libm-test-ulps
@@ -1931,36 +1931,6 @@ ifloat: 1
 ildouble: 2
 ldouble: 2
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/nios2/libm-test-ulps b/sysdeps/nios2/libm-test-ulps
index b7a36e3ce6..a9d2c23143 100644
--- a/sysdeps/nios2/libm-test-ulps
+++ b/sysdeps/nios2/libm-test-ulps
@@ -343,10 +343,6 @@ Function: "pow":
 float: 3
 ifloat: 3
 
-Function: "pow10":
-double: 2
-idouble: 2
-
 Function: "sin":
 float: 1
 ifloat: 1
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index d4d03311e3..000d201e2f 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -2471,36 +2471,6 @@ ifloat128: 2
 ildouble: 1
 ldouble: 1
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps b/sysdeps/powerpc/nofpu/libm-test-ulps
index 8935f0d714..64bc4f6dc9 100644
--- a/sysdeps/powerpc/nofpu/libm-test-ulps
+++ b/sysdeps/powerpc/nofpu/libm-test-ulps
@@ -1985,36 +1985,6 @@ ifloat: 1
 ildouble: 1
 ldouble: 1
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps
index dad5205ae7..4f543179f2 100644
--- a/sysdeps/s390/fpu/libm-test-ulps
+++ b/sysdeps/s390/fpu/libm-test-ulps
@@ -1931,36 +1931,6 @@ ifloat: 1
 ildouble: 2
 ldouble: 2
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
 Function: "pow_downward":
 double: 1
 float: 1
diff --git a/sysdeps/sh/libm-test-ulps b/sysdeps/sh/libm-test-ulps
index a00f04e2a3..da4224c2d6 100644
--- a/sysdeps/sh/libm-test-ulps
+++ b/sysdeps/sh/libm-test-ulps
@@ -358,10 +358,6 @@ Function: "pow":
 float: 1
 ifloat: 1
 
-Function: "pow10":
-double: 1
-idouble: 1
-
 Function: "pow_towardzero":
 float: 1
 ifloat: 1
diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps
index dd4677d847..f1f2f73fcb 100644
--- a/sysdeps/sparc/fpu/libm-test-ulps
+++ b/sysdeps/sparc/fpu/libm-test-ulps
@@ -1931,36 +1931,6 @@ ifloat: 3
 ildouble: 2
 ldouble: 2
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
 Function: "pow_downward":
 double: 1
 float: 3
diff --git a/sysdeps/tile/libm-test-ulps b/sysdeps/tile/libm-test-ulps
index f1a01fdb30..e454817d77 100644
--- a/sysdeps/tile/libm-test-ulps
+++ b/sysdeps/tile/libm-test-ulps
@@ -339,10 +339,6 @@ Function: "pow":
 float: 3
 ifloat: 3
 
-Function: "pow10":
-double: 2
-idouble: 2
-
 Function: "sin":
 float: 1
 ifloat: 1
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 59ec92056e..fe83b8b1c8 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -2471,36 +2471,6 @@ ifloat128: 2
 ildouble: 1
 ldouble: 1
 
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
 Function: "pow_downward":
 double: 1
 float: 1