aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-09-18 17:51:33 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-09-18 17:51:33 +0000
commit92892fdbfa5e4d9f3cc25601767da064d0a8818a (patch)
tree7c41dfb788970d510b1537454ec52ce21f850772
parent6cd380dd366d728da9f579eeb9f7f4c47f48e474 (diff)
downloadglibc-92892fdbfa5e4d9f3cc25601767da064d0a8818a.tar.xz
glibc-92892fdbfa5e4d9f3cc25601767da064d0a8818a.zip
Use libm_alias_ldouble in math/.
This patch converts libm function implementations in math/ from using weak_alias to using libm_alias_ldouble to define public function names, in cases where it would be appropriate to define _Float128 / _Float64x aliases for those functions as well (in cases where either or both of those types exist and have the same ABI as long double). This eliminates many ldbl-opt wrappers round these function implementations. Tested for x86_64, and with build-many-glibcs.py. All installed stripped shared libraries are unchanged except for libm.so on powerpc64le. As noted for a previous patch, powerpc64le's use of ldbl-opt means various long double functions get defined using long_double_symbol which gives them an explicit symbol version in the object files, and this patch results in some such functions using weak_alias instead (because powerpc64le never had a previous version of these functions for long double = double); both produce a valid libm.so with the same public symbols at the same versions, but macros expanding to call weak_alias is cleaner in this case. * math/s_fmal.c: Include <libm-alias-ldouble.h>. (fmal): Define using libm_alias_ldouble. * math/w_acoshl_compat.c: Include <libm-alias-ldouble.h>. (acoshl): Define using libm_alias_ldouble. * math/w_acosl_compat.c: Include <libm-alias-ldouble.h>. (acosl): Define using libm_alias_ldouble. * math/w_asinl_compat.c: Include <libm-alias-ldouble.h>. (asinl): Define using libm_alias_ldouble. * math/w_atan2l_compat.c: Include <libm-alias-ldouble.h>. (atan2l): Define using libm_alias_ldouble. * math/w_atanhl_compat.c: Include <libm-alias-ldouble.h>. (atanhl): Define using libm_alias_ldouble. * math/w_coshl_compat.c: Include <libm-alias-ldouble.h>. (coshl): Define using libm_alias_ldouble. * math/w_exp10l_compat.c: Include <libm-alias-ldouble.h>. (exp10l): Define using libm_alias_ldouble. * math/w_exp2l_compat.c: Include <libm-alias-ldouble.h>. (exp2l): Define using libm_alias_ldouble. * math/w_expl_compat.c: Include <libm-alias-ldouble.h>. (expl): Define using libm_alias_ldouble. * math/w_fmodl_compat.c: Include <libm-alias-ldouble.h>. (fmodl): Define using libm_alias_ldouble. * math/w_hypotl_compat.c: Include <libm-alias-ldouble.h>. (hypotl): Define using libm_alias_ldouble. * math/w_j0l_compat.c: Include <libm-alias-ldouble.h>. (j0l): Define using libm_alias_ldouble. (y0l): Likewise. * math/w_j1l_compat.c: Include <libm-alias-ldouble.h>. (j1l): Define using libm_alias_ldouble. (y1l): Likewise. * math/w_jnl_compat.c: Include <libm-alias-ldouble.h>. (jnl): Define using libm_alias_ldouble. (ynl): Likewise. * math/w_log10l_compat.c: Include <libm-alias-ldouble.h>. (log10l): Define using libm_alias_ldouble. * math/w_log2l_compat.c: Include <libm-alias-ldouble.h>. (log2l): Define using libm_alias_ldouble. * math/w_logl_compat.c: Include <libm-alias-ldouble.h>. (logl): Define using libm_alias_ldouble. * math/w_powl_compat.c: Include <libm-alias-ldouble.h>. (powl): Define using libm_alias_ldouble. * math/w_remainderl_compat.c: Include <libm-alias-ldouble.h>. (remainderl): Define using libm_alias_ldouble. * math/w_sinhl_compat.c: Include <libm-alias-ldouble.h>. (sinhl): Define using libm_alias_ldouble. * math/w_sqrtl_compat.c: Include <libm-alias-ldouble.h>. (sqrtl): Define using libm_alias_ldouble. * math/w_tgammal_compat.c: Include <libm-alias-ldouble.h>. (tgammal): Define using libm_alias_ldouble. * sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c [LIBM_SVID_COMPAT] (exp10l): Do not use long_double_symbol here. * sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c [LIBM_SVID_COMPAT] (remainderl): Likewise. * sysdeps/ieee754/ldbl-opt/s_fmal.c: Remove. * sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_acosl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_asinl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_coshl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_expl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_j0l_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_j1l_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_jnl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_log10l_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_log2l_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_logl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_powl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c: Likewise.
-rw-r--r--ChangeLog76
-rw-r--r--math/s_fmal.c3
-rw-r--r--math/w_acoshl_compat.c3
-rw-r--r--math/w_acosl_compat.c3
-rw-r--r--math/w_asinl_compat.c3
-rw-r--r--math/w_atan2l_compat.c3
-rw-r--r--math/w_atanhl_compat.c3
-rw-r--r--math/w_coshl_compat.c3
-rw-r--r--math/w_exp10l_compat.c3
-rw-r--r--math/w_exp2l_compat.c3
-rw-r--r--math/w_expl_compat.c3
-rw-r--r--math/w_fmodl_compat.c3
-rw-r--r--math/w_hypotl_compat.c3
-rw-r--r--math/w_j0l_compat.c5
-rw-r--r--math/w_j1l_compat.c5
-rw-r--r--math/w_jnl_compat.c5
-rw-r--r--math/w_log10l_compat.c3
-rw-r--r--math/w_log2l_compat.c3
-rw-r--r--math/w_logl_compat.c3
-rw-r--r--math/w_powl_compat.c3
-rw-r--r--math/w_remainderl_compat.c3
-rw-r--r--math/w_sinhl_compat.c3
-rw-r--r--math/w_sqrtl_compat.c3
-rw-r--r--math/w_tgammal_compat.c3
-rw-r--r--sysdeps/ieee754/ldbl-opt/s_fmal.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_acosl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_asinl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_coshl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c1
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_expl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_j0l_compat.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_j1l_compat.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_jnl_compat.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_log10l_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_log2l_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_logl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_powl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c1
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c7
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c7
46 files changed, 125 insertions, 169 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d60d12643..a7bcaa689b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,79 @@
+2017-09-18 Joseph Myers <joseph@codesourcery.com>
+
+ * math/s_fmal.c: Include <libm-alias-ldouble.h>.
+ (fmal): Define using libm_alias_ldouble.
+ * math/w_acoshl_compat.c: Include <libm-alias-ldouble.h>.
+ (acoshl): Define using libm_alias_ldouble.
+ * math/w_acosl_compat.c: Include <libm-alias-ldouble.h>.
+ (acosl): Define using libm_alias_ldouble.
+ * math/w_asinl_compat.c: Include <libm-alias-ldouble.h>.
+ (asinl): Define using libm_alias_ldouble.
+ * math/w_atan2l_compat.c: Include <libm-alias-ldouble.h>.
+ (atan2l): Define using libm_alias_ldouble.
+ * math/w_atanhl_compat.c: Include <libm-alias-ldouble.h>.
+ (atanhl): Define using libm_alias_ldouble.
+ * math/w_coshl_compat.c: Include <libm-alias-ldouble.h>.
+ (coshl): Define using libm_alias_ldouble.
+ * math/w_exp10l_compat.c: Include <libm-alias-ldouble.h>.
+ (exp10l): Define using libm_alias_ldouble.
+ * math/w_exp2l_compat.c: Include <libm-alias-ldouble.h>.
+ (exp2l): Define using libm_alias_ldouble.
+ * math/w_expl_compat.c: Include <libm-alias-ldouble.h>.
+ (expl): Define using libm_alias_ldouble.
+ * math/w_fmodl_compat.c: Include <libm-alias-ldouble.h>.
+ (fmodl): Define using libm_alias_ldouble.
+ * math/w_hypotl_compat.c: Include <libm-alias-ldouble.h>.
+ (hypotl): Define using libm_alias_ldouble.
+ * math/w_j0l_compat.c: Include <libm-alias-ldouble.h>.
+ (j0l): Define using libm_alias_ldouble.
+ (y0l): Likewise.
+ * math/w_j1l_compat.c: Include <libm-alias-ldouble.h>.
+ (j1l): Define using libm_alias_ldouble.
+ (y1l): Likewise.
+ * math/w_jnl_compat.c: Include <libm-alias-ldouble.h>.
+ (jnl): Define using libm_alias_ldouble.
+ (ynl): Likewise.
+ * math/w_log10l_compat.c: Include <libm-alias-ldouble.h>.
+ (log10l): Define using libm_alias_ldouble.
+ * math/w_log2l_compat.c: Include <libm-alias-ldouble.h>.
+ (log2l): Define using libm_alias_ldouble.
+ * math/w_logl_compat.c: Include <libm-alias-ldouble.h>.
+ (logl): Define using libm_alias_ldouble.
+ * math/w_powl_compat.c: Include <libm-alias-ldouble.h>.
+ (powl): Define using libm_alias_ldouble.
+ * math/w_remainderl_compat.c: Include <libm-alias-ldouble.h>.
+ (remainderl): Define using libm_alias_ldouble.
+ * math/w_sinhl_compat.c: Include <libm-alias-ldouble.h>.
+ (sinhl): Define using libm_alias_ldouble.
+ * math/w_sqrtl_compat.c: Include <libm-alias-ldouble.h>.
+ (sqrtl): Define using libm_alias_ldouble.
+ * math/w_tgammal_compat.c: Include <libm-alias-ldouble.h>.
+ (tgammal): Define using libm_alias_ldouble.
+ * sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c [LIBM_SVID_COMPAT]
+ (exp10l): Do not use long_double_symbol here.
+ * sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
+ [LIBM_SVID_COMPAT] (remainderl): Likewise.
+ * sysdeps/ieee754/ldbl-opt/s_fmal.c: Remove.
+ * sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_acosl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_asinl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_coshl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_expl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_j0l_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_j1l_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_jnl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_log10l_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_log2l_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_logl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_powl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c: Likewise.
+
2017-09-18 Wang Boshi <wangboshi@huawei.com> (tiny change)
* sysdeps/aarch64/start.S: Use MOVL instead of literal pools.
diff --git a/math/s_fmal.c b/math/s_fmal.c
index ba15c6a26b..73d42e21e9 100644
--- a/math/s_fmal.c
+++ b/math/s_fmal.c
@@ -18,10 +18,11 @@
<http://www.gnu.org/licenses/>. */
#include <math.h>
+#include <libm-alias-ldouble.h>
long double
__fmal (long double x, long double y, long double z)
{
return (x * y) + z;
}
-weak_alias (__fmal, fmal)
+libm_alias_ldouble (__fma, fma)
diff --git a/math/w_acoshl_compat.c b/math/w_acoshl_compat.c
index 79d0370eb3..1b82597e66 100644
--- a/math/w_acoshl_compat.c
+++ b/math/w_acoshl_compat.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
@@ -32,5 +33,5 @@ __acoshl (long double x)
return __ieee754_acoshl (x);
}
-weak_alias (__acoshl, acoshl)
+libm_alias_ldouble (__acosh, acosh)
#endif
diff --git a/math/w_acosl_compat.c b/math/w_acosl_compat.c
index 7d2f1835ae..d20c58b093 100644
--- a/math/w_acosl_compat.c
+++ b/math/w_acosl_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
@@ -37,5 +38,5 @@ __acosl (long double x)
return __ieee754_acosl (x);
}
-weak_alias (__acosl, acosl)
+libm_alias_ldouble (__acos, acos)
#endif
diff --git a/math/w_asinl_compat.c b/math/w_asinl_compat.c
index c9e1a340cc..5f7396d464 100644
--- a/math/w_asinl_compat.c
+++ b/math/w_asinl_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
@@ -37,5 +38,5 @@ __asinl (long double x)
return __ieee754_asinl (x);
}
-weak_alias (__asinl, asinl)
+libm_alias_ldouble (__asin, asin)
#endif
diff --git a/math/w_atan2l_compat.c b/math/w_atan2l_compat.c
index 9dc2b144ea..e7e9581b83 100644
--- a/math/w_atan2l_compat.c
+++ b/math/w_atan2l_compat.c
@@ -24,6 +24,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
@@ -40,5 +41,5 @@ __atan2l (long double y, long double x)
__set_errno (ERANGE);
return z;
}
-weak_alias (__atan2l, atan2l)
+libm_alias_ldouble (__atan2, atan2)
#endif
diff --git a/math/w_atanhl_compat.c b/math/w_atanhl_compat.c
index 837a6652b8..8ae9564e79 100644
--- a/math/w_atanhl_compat.c
+++ b/math/w_atanhl_compat.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
@@ -35,5 +36,5 @@ __atanhl (long double x)
return __ieee754_atanhl (x);
}
-weak_alias (__atanhl, atanhl)
+libm_alias_ldouble (__atanh, atanh)
#endif
diff --git a/math/w_coshl_compat.c b/math/w_coshl_compat.c
index 4dab6eff67..a97105020e 100644
--- a/math/w_coshl_compat.c
+++ b/math/w_coshl_compat.c
@@ -22,6 +22,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
long double
@@ -34,5 +35,5 @@ __coshl (long double x)
return z;
}
-weak_alias (__coshl, coshl)
+libm_alias_ldouble (__cosh, cosh)
#endif
diff --git a/math/w_exp10l_compat.c b/math/w_exp10l_compat.c
index 3d7d66d5af..64d8d79cf4 100644
--- a/math/w_exp10l_compat.c
+++ b/math/w_exp10l_compat.c
@@ -24,6 +24,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
long double
@@ -37,7 +38,7 @@ __exp10l (long double x)
return z;
}
-weak_alias (__exp10l, exp10l)
+libm_alias_ldouble (__exp10, exp10)
# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
strong_alias (__exp10l, __pow10l)
compat_symbol (libm, __pow10l, pow10l, GLIBC_2_1);
diff --git a/math/w_exp2l_compat.c b/math/w_exp2l_compat.c
index 96d4b96c11..a132015866 100644
--- a/math/w_exp2l_compat.c
+++ b/math/w_exp2l_compat.c
@@ -5,6 +5,7 @@
#include <math.h>
#include <math_private.h>
#include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
#if LIBM_SVID_COMPAT
long double
@@ -18,5 +19,5 @@ __exp2l (long double x)
return z;
}
-weak_alias (__exp2l, exp2l)
+libm_alias_ldouble (__exp2, exp2)
#endif
diff --git a/math/w_expl_compat.c b/math/w_expl_compat.c
index ec076deaad..dda930405e 100644