about summary refs log tree commit diff
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.gz
glibc-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
--- a/math/w_expl_compat.c
+++ b/math/w_expl_compat.c
@@ -25,6 +25,7 @@ static char rcsid[] = "$NetBSD: $";
 #include <math.h>
 #include <math_private.h>
 #include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
 
 #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
diff --git a/math/w_fmodl_compat.c b/math/w_fmodl_compat.c
index 3136e82d65..1db57671fd 100644
--- a/math/w_fmodl_compat.c
+++ b/math/w_fmodl_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
 /* wrapper fmodl */
@@ -32,5 +33,5 @@ __fmodl (long double x, long double y)
 
   return __ieee754_fmodl (x, y);
 }
-weak_alias (__fmodl, fmodl)
+libm_alias_ldouble (__fmod, fmod)
 #endif
diff --git a/math/w_hypotl_compat.c b/math/w_hypotl_compat.c
index bc56d29a04..db5495103d 100644
--- a/math/w_hypotl_compat.c
+++ b/math/w_hypotl_compat.c
@@ -21,6 +21,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 @@ __hypotl(long double x, long double y)
 
 	return z;
 }
-weak_alias (__hypotl, hypotl)
+libm_alias_ldouble (__hypot, hypot)
 #endif
diff --git a/math/w_j0l_compat.c b/math/w_j0l_compat.c
index 76ec812729..aa6ce0dbbc 100644
--- a/math/w_j0l_compat.c
+++ b/math/w_j0l_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
@@ -34,7 +35,7 @@ __j0l (long double x)
 
   return __ieee754_j0l (x);
 }
-weak_alias (__j0l, j0l)
+libm_alias_ldouble (__j0, j0)
 
 
 /* wrapper y0l */
@@ -63,5 +64,5 @@ __y0l (long double x)
 
   return __ieee754_y0l (x);
 }
-weak_alias (__y0l, y0l)
+libm_alias_ldouble (__y0, y0)
 #endif
diff --git a/math/w_j1l_compat.c b/math/w_j1l_compat.c
index c3acfdfe76..d3e9681ba4 100644
--- a/math/w_j1l_compat.c
+++ b/math/w_j1l_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
@@ -34,7 +35,7 @@ __j1l (long double x)
 
   return __ieee754_j1l (x);
 }
-weak_alias (__j1l, j1l)
+libm_alias_ldouble (__j1, j1)
 
 
 /* wrapper y1l */
@@ -63,5 +64,5 @@ __y1l (long double x)
 
   return __ieee754_y1l (x);
 }
-weak_alias (__y1l, y1l)
+libm_alias_ldouble (__y1, y1)
 #endif
diff --git a/math/w_jnl_compat.c b/math/w_jnl_compat.c
index 7298c73a3b..e5c1d92cd4 100644
--- a/math/w_jnl_compat.c
+++ b/math/w_jnl_compat.c
@@ -47,6 +47,7 @@ static char rcsid[] = "$NetBSD: $";
 #include <math.h>
 #include <math_private.h>
 #include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
 
 #if LIBM_SVID_COMPAT
 long double __jnl(int n, long double x)	/* wrapper jnl */
@@ -66,7 +67,7 @@ long double __jnl(int n, long double x)	/* wrapper jnl */
 	    return z;
 # endif
 }
-weak_alias (__jnl, jnl)
+libm_alias_ldouble (__jn, jn)
 
 long double __ynl(int n, long double x)	/* wrapper ynl */
 {
@@ -90,5 +91,5 @@ long double __ynl(int n, long double x)	/* wrapper ynl */
 	    return z;
 # endif
 }
-weak_alias (__ynl, ynl)
+libm_alias_ldouble (__yn, yn)
 #endif
diff --git a/math/w_log10l_compat.c b/math/w_log10l_compat.c
index 88d9c40354..2841570e8d 100644
--- a/math/w_log10l_compat.c
+++ b/math/w_log10l_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
@@ -43,5 +44,5 @@ __log10l (long double x)
 
   return  __ieee754_log10l (x);
 }
-weak_alias (__log10l, log10l)
+libm_alias_ldouble (__log10, log10)
 #endif
diff --git a/math/w_log2l_compat.c b/math/w_log2l_compat.c
index cd367f2f51..87b58d8e16 100644
--- a/math/w_log2l_compat.c
+++ b/math/w_log2l_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
@@ -43,5 +44,5 @@ __log2l (long double x)
 
   return  __ieee754_log2l (x);
 }
-weak_alias (__log2l, log2l)
+libm_alias_ldouble (__log2, log2)
 #endif
diff --git a/math/w_logl_compat.c b/math/w_logl_compat.c
index e37a17475e..237201ee2e 100644
--- a/math/w_logl_compat.c
+++ b/math/w_logl_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
@@ -43,5 +44,5 @@ __logl (long double x)
 
   return  __ieee754_logl (x);
 }
-weak_alias (__logl, logl)
+libm_alias_ldouble (__log, log)
 #endif
diff --git a/math/w_powl_compat.c b/math/w_powl_compat.c
index 9159f610d2..3679f840cf 100644
--- a/math/w_powl_compat.c
+++ b/math/w_powl_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
@@ -59,5 +60,5 @@ __powl (long double x, long double y)
 
   return z;
 }
-weak_alias (__powl, powl)
+libm_alias_ldouble (__pow, pow)
 #endif
diff --git a/math/w_remainderl_compat.c b/math/w_remainderl_compat.c
index c11ba24a8a..870c980a9f 100644
--- a/math/w_remainderl_compat.c
+++ b/math/w_remainderl_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
@@ -33,6 +34,6 @@ __remainderl (long double x, long double y)
 
   return __ieee754_remainderl (x, y);
 }
-weak_alias (__remainderl, remainderl)
+libm_alias_ldouble (__remainder, remainder)
 weak_alias (__remainderl, dreml)
 #endif
diff --git a/math/w_sinhl_compat.c b/math/w_sinhl_compat.c
index 348209860a..d65c2da906 100644
--- a/math/w_sinhl_compat.c
+++ b/math/w_sinhl_compat.c
@@ -21,6 +21,7 @@
 #include <math.h>
 #include <math_private.h>
 #include <math-svid-compat.h>
+#include <libm-alias-ldouble.h>
 
 #if LIBM_SVID_COMPAT
 long double
@@ -33,5 +34,5 @@ __sinhl (long double x)
 
 	return z;
 }
-weak_alias (__sinhl, sinhl)
+libm_alias_ldouble (__sinh, sinh)
 #endif
diff --git a/math/w_sqrtl_compat.c b/math/w_sqrtl_compat.c
index b0afd1171c..0590f6d155 100644
--- a/math/w_sqrtl_compat.c
+++ b/math/w_sqrtl_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
@@ -31,5 +32,5 @@ __sqrtl (long double x)
 
   return __ieee754_sqrtl (x);
 }
-weak_alias (__sqrtl, sqrtl)
+libm_alias_ldouble (__sqrt, sqrt)
 #endif
diff --git a/math/w_tgammal_compat.c b/math/w_tgammal_compat.c
index c0e442955b..3695b7fbb3 100644
--- a/math/w_tgammal_compat.c
+++ b/math/w_tgammal_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
@@ -44,5 +45,5 @@ __tgammal(long double x)
 	}
 	return local_signgam < 0 ? - y : y;
 }
-weak_alias (__tgammal, tgammal)
+libm_alias_ldouble (__tgamma, tgamma)
 #endif
diff --git a/sysdeps/ieee754/ldbl-opt/s_fmal.c b/sysdeps/ieee754/ldbl-opt/s_fmal.c
deleted file mode 100644
index bd12dabcbe..0000000000
--- a/sysdeps/ieee754/ldbl-opt/s_fmal.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/s_fmal.c>
-long_double_symbol (libm, __fmal, fmal);
diff --git a/sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c b/sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c
deleted file mode 100644
index f66964a138..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_acoshl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __acoshl, acoshl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_acosl_compat.c b/sysdeps/ieee754/ldbl-opt/w_acosl_compat.c
deleted file mode 100644
index ff33e9a9ed..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_acosl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_acosl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __acosl, acosl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_asinl_compat.c b/sysdeps/ieee754/ldbl-opt/w_asinl_compat.c
deleted file mode 100644
index a53f1cb1f5..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_asinl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_asinl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __asinl, asinl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c b/sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c
deleted file mode 100644
index c70f77e4c4..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_atan2l_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __atan2l, atan2l);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c b/sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c
deleted file mode 100644
index 67450c5859..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_atanhl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __atanhl, atanhl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_coshl_compat.c b/sysdeps/ieee754/ldbl-opt/w_coshl_compat.c
deleted file mode 100644
index 392511bab6..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_coshl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_coshl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __coshl, coshl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c b/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
index 5a52a75ba5..1c0e8754dd 100644
--- a/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
@@ -5,7 +5,6 @@
 #define compat_symbol(l,n,a,v)
 #include <math/w_exp10l_compat.c>
 #if LIBM_SVID_COMPAT
-long_double_symbol (libm, __exp10l, exp10l);
 # 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
diff --git a/sysdeps/ieee754/ldbl-opt/w_expl_compat.c b/sysdeps/ieee754/ldbl-opt/w_expl_compat.c
deleted file mode 100644
index 4534051d88..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_expl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_expl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __expl, expl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c b/sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c
deleted file mode 100644
index 12419e3060..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_fmodl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __fmodl, fmodl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c b/sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c
deleted file mode 100644
index b87bac7ce8..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_hypotl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __hypotl, hypotl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_j0l_compat.c b/sysdeps/ieee754/ldbl-opt/w_j0l_compat.c
deleted file mode 100644
index 8fc865128d..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_j0l_compat.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_j0l_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __j0l, j0l);
-long_double_symbol (libm, __y0l, y0l);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_j1l_compat.c b/sysdeps/ieee754/ldbl-opt/w_j1l_compat.c
deleted file mode 100644
index 85b3feed9f..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_j1l_compat.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_j1l_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __j1l, j1l);
-long_double_symbol (libm, __y1l, y1l);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_jnl_compat.c b/sysdeps/ieee754/ldbl-opt/w_jnl_compat.c
deleted file mode 100644
index 9b2c998536..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_jnl_compat.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_jnl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __jnl, jnl);
-long_double_symbol (libm, __ynl, ynl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_log10l_compat.c b/sysdeps/ieee754/ldbl-opt/w_log10l_compat.c
deleted file mode 100644
index 6eb9ea7928..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_log10l_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_log10l_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __log10l, log10l);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_log2l_compat.c b/sysdeps/ieee754/ldbl-opt/w_log2l_compat.c
deleted file mode 100644
index 1507e937b8..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_log2l_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_log2l_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __log2l, log2l);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_logl_compat.c b/sysdeps/ieee754/ldbl-opt/w_logl_compat.c
deleted file mode 100644
index 6b71ef2659..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_logl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_logl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __logl, logl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_powl_compat.c b/sysdeps/ieee754/ldbl-opt/w_powl_compat.c
deleted file mode 100644
index c6f8d859be..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_powl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_powl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __powl, powl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c b/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
index 849d2db425..9314117eda 100644
--- a/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
@@ -3,7 +3,6 @@
 #define weak_alias(n,a)
 #include <math/w_remainderl_compat.c>
 #if LIBM_SVID_COMPAT
-long_double_symbol (libm, __remainderl, remainderl);
 strong_alias (__remainderl, __dreml)
 long_double_symbol (libm, __dreml, dreml);
 #endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c b/sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c
deleted file mode 100644
index 8fce55c74f..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_sinhl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __sinhl, sinhl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c b/sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c
deleted file mode 100644
index 05be917772..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_sqrtl_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __sqrtl, sqrtl);
-#endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c b/sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c
deleted file mode 100644
index 8c201ca8e2..0000000000
--- a/sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <math/w_tgammal_compat.c>
-#if LIBM_SVID_COMPAT
-long_double_symbol (libm, __tgammal, tgammal);
-#endif