+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.
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.
@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
#ifdef __USE_GNU
/* exp10. */
__MATH_REDIRCALL (exp10, , (_Mdouble_));
-
-/* pow10. */
-# if !__MATH_DECLARING_FLOATN
-__MATH_REDIRCALL_2 (pow10, , (_Mdouble_), exp10);
-# endif
#endif
#ifdef __USE_ISOC99
/* 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. */
ALL_RM_TEST (exp10, 0, exp10_test_data, RUN_TEST_LOOP_f_f, END);
}
-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 ();
}
/*
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
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
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
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
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
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
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
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
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
// p6-p12
//
+#include <shlib-compat.h>
+
GR_TBL_START = r2
GR_LOG_TBL = r3
;;
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)
// p6-p12
//
+#include <shlib-compat.h>
+
GR_TBL_START = r2
GR_LOG_TBL = r3
;;
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)
// p6-p8, p11-p14
//
+#include <shlib-compat.h>
+
FR_X = f10
FR_Y = f1
;;
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)
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 \
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
+++ /dev/null
-#include "nldbl-compat.h"
-
-double
-attribute_hidden
-pow10l (double x)
-{
- return pow10 (x);
-}
#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
#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
float: 1
ifloat: 1
-Function: "pow10":
-double: 2
-idouble: 2
-
Function: "sin":
float: 1
ifloat: 1
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
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
float: 3
ifloat: 3
-Function: "pow10":
-double: 2
-idouble: 2
-
Function: "sin":
float: 1
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
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
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
float: 1
ifloat: 1
-Function: "pow10":
-double: 1
-idouble: 1
-
Function: "pow_towardzero":
float: 1
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: 3
float: 3
ifloat: 3
-Function: "pow10":
-double: 2
-idouble: 2
-
Function: "sin":
float: 1
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: 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