From 92892fdbfa5e4d9f3cc25601767da064d0a8818a Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 18 Sep 2017 17:51:33 +0000 Subject: 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 . (fmal): Define using libm_alias_ldouble. * math/w_acoshl_compat.c: Include . (acoshl): Define using libm_alias_ldouble. * math/w_acosl_compat.c: Include . (acosl): Define using libm_alias_ldouble. * math/w_asinl_compat.c: Include . (asinl): Define using libm_alias_ldouble. * math/w_atan2l_compat.c: Include . (atan2l): Define using libm_alias_ldouble. * math/w_atanhl_compat.c: Include . (atanhl): Define using libm_alias_ldouble. * math/w_coshl_compat.c: Include . (coshl): Define using libm_alias_ldouble. * math/w_exp10l_compat.c: Include . (exp10l): Define using libm_alias_ldouble. * math/w_exp2l_compat.c: Include . (exp2l): Define using libm_alias_ldouble. * math/w_expl_compat.c: Include . (expl): Define using libm_alias_ldouble. * math/w_fmodl_compat.c: Include . (fmodl): Define using libm_alias_ldouble. * math/w_hypotl_compat.c: Include . (hypotl): Define using libm_alias_ldouble. * math/w_j0l_compat.c: Include . (j0l): Define using libm_alias_ldouble. (y0l): Likewise. * math/w_j1l_compat.c: Include . (j1l): Define using libm_alias_ldouble. (y1l): Likewise. * math/w_jnl_compat.c: Include . (jnl): Define using libm_alias_ldouble. (ynl): Likewise. * math/w_log10l_compat.c: Include . (log10l): Define using libm_alias_ldouble. * math/w_log2l_compat.c: Include . (log2l): Define using libm_alias_ldouble. * math/w_logl_compat.c: Include . (logl): Define using libm_alias_ldouble. * math/w_powl_compat.c: Include . (powl): Define using libm_alias_ldouble. * math/w_remainderl_compat.c: Include . (remainderl): Define using libm_alias_ldouble. * math/w_sinhl_compat.c: Include . (sinhl): Define using libm_alias_ldouble. * math/w_sqrtl_compat.c: Include . (sqrtl): Define using libm_alias_ldouble. * math/w_tgammal_compat.c: Include . (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. --- math/w_expl_compat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'math/w_expl_compat.c') diff --git a/math/w_expl_compat.c b/math/w_expl_compat.c index ec076deaad..dda930405e 100644 --- a/math/w_expl_compat.c +++ b/math/w_expl_compat.c @@ -25,6 +25,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include #include +#include #if LIBM_SVID_COMPAT long double __expl(long double x) /* wrapper exp */ @@ -41,5 +42,5 @@ long double __expl(long double x) /* wrapper exp */ # endif } hidden_def (__expl) -weak_alias (__expl, expl) +libm_alias_ldouble (__exp, exp) #endif -- cgit 1.4.1