about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog114
-rw-r--r--sysdeps/powerpc/power7/fpu/s_logb.c11
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_copysign.S13
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llrint.c10
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llround.c10
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_lrint.S11
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_lround.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c13
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c12
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S16
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c13
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c20
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c12
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_copysign.S13
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llrint.S16
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llround.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S16
35 files changed, 197 insertions, 361 deletions
diff --git a/ChangeLog b/ChangeLog
index e65ca614f8..3354d09081 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,117 @@
+2017-12-02  Joseph Myers  <joseph@codesourcery.com>
+
+	* sysdeps/powerpc/power7/fpu/s_logb.c: Include
+	<libm-alias-double.h>.
+	(logb): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Include
+	<libm-alias-double.h>.
+	(copysign): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/fpu/s_llrint.c: Include
+	<libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/fpu/s_llround.c: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: Include
+	<libm-alias-double.h>.
+	(lrint): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Include
+	<libm-alias-double.h>.
+	(lround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c:
+	Include <libm-alias-double.h>.
+	(copysign): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c:
+	Include <libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c:
+	Include <libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c: Include
+	<libm-alias-double.h>.
+	(logb): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c:
+	Include <libm-alias-double.h>.
+	(lrint): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c:
+	Include <libm-alias-double.h>.
+	(lround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S: Include
+	<libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S: Include
+	<libm-alias-double.h>.
+	(lround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S: Include
+	<libm-alias-double.h>.
+	(copysign): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S: Include
+	<libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S: Include
+	<libm-alias-double.h>.
+	(lrint): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S: Include
+	<libm-alias-double.h>.
+	(lround): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c: Include
+	<libm-alias-double.h>.
+	(copysign): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c: Include
+	<libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	(lrint): Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	(lround): Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c: Include
+	<libm-alias-double.h>.
+	(logb): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Include
+	<libm-alias-double.h>.
+	(copysign): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Include
+	<libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	(lrint): Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_llround.S: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	(lround): Likewise.
+	* sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	(lround): Likewise.
+	* sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S: Include
+	<libm-alias-double.h>.
+	(copysign): Define using libm_alias_double.
+	* sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S: Include
+	<libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	(lrint): Likewise.
+	* sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	(lround): Likewise.
+	* sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S: Include
+	<libm-alias-double.h>.
+	(llrint): Define using libm_alias_double.
+	(lrint): Likewise.
+	* sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S: Include
+	<libm-alias-double.h>.
+	(llround): Define using libm_alias_double.
+	(lround): Likewise.
+
 2017-12-01  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
diff --git a/sysdeps/powerpc/power7/fpu/s_logb.c b/sysdeps/powerpc/power7/fpu/s_logb.c
index 1c7a4a850b..ab8e634525 100644
--- a/sysdeps/powerpc/power7/fpu/s_logb.c
+++ b/sysdeps/powerpc/power7/fpu/s_logb.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* This implementation avoids FP to INT conversions by using VSX
    bitwise instructions over FP values.  */
@@ -68,12 +69,4 @@ __logb (double x)
   /* Test to avoid logb_downward (0.0) == -0.0.  */
   return ret == -0.0 ? 0.0 : ret;
 }
-weak_alias (__logb, logb)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__logb, __logbl)
-weak_alias (__logb, logbl)
-#endif
-
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, __logb, logbl, GLIBC_2_0);
-#endif
+libm_alias_double (__logb, logb)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
index 850dded3b6..779dab6e6f 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
@@ -21,6 +21,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 ENTRY(__copysign)
 /* double [f1] copysign (double [f1] x, double [f2] y);
@@ -40,20 +41,12 @@ L(0):	fnabs   fp1,fp1
 	blr
 	END (__copysign)
 
-weak_alias (__copysign,copysign)
+libm_alias_double (__copysign, copysign)
 
 /* It turns out that it's safe to use this code even for single-precision.  */
 weak_alias (__copysign,copysignf)
 strong_alias(__copysign,__copysignf)
 
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0)
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __copysign, copysignl, GLIBC_2_0)
 #endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llrint.c b/sysdeps/powerpc/powerpc32/fpu/s_llrint.c
index 13d150cd68..124740aad4 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_llrint.c
+++ b/sysdeps/powerpc/powerpc32/fpu/s_llrint.c
@@ -21,6 +21,7 @@
 #include <math_ldbl_opt.h>
 #include <math_private.h>
 #include <stdint.h>
+#include <libm-alias-double.h>
 
 long long int
 __llrint (double x)
@@ -53,11 +54,4 @@ __llrint (double x)
 	return (long long int) (long int) rx << 32;
     }
 }
-weak_alias (__llrint, llrint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
-#endif
+libm_alias_double (__llrint, llrint)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llround.c b/sysdeps/powerpc/powerpc32/fpu/s_llround.c
index 5e5a237b0c..ffd56c80c3 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_llround.c
+++ b/sysdeps/powerpc/powerpc32/fpu/s_llround.c
@@ -21,6 +21,7 @@
 #include <math_ldbl_opt.h>
 #include <math_private.h>
 #include <stdint.h>
+#include <libm-alias-double.h>
 
 /* Round to the nearest integer, with values exactly on a 0.5 boundary
    rounded away from zero, regardless of the current rounding mode.
@@ -80,11 +81,4 @@ __llround (double x)
     }
   return xr;
 }
-weak_alias (__llround, llround)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llround, __llroundl)
-weak_alias (__llround, llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
-#endif
+libm_alias_double (__llround, llround)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_lrint.S b/sysdeps/powerpc/powerpc32/fpu/s_lrint.S
index 8d54d95b6a..2f4acbd093 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_lrint.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_lrint.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long int[r3] __lrint (double x[fp1])  */
 ENTRY (__lrint)
@@ -32,15 +33,7 @@ ENTRY (__lrint)
 	blr
 	END (__lrint)
 
-weak_alias (__lrint, lrint)
+libm_alias_double (__lrint, lrint)
 
 strong_alias (__lrint, __lrintf)
 weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/fpu/s_lround.S
index e4ec1bb0b6..f26c580a43 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_lround.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_lround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	.rodata.cst4,"aM",@progbits,4
 	.align	2
@@ -115,15 +116,7 @@ ENTRY (__lround)
 	b	.Lconvert
 	END (__lround)
 
-weak_alias (__lround, lround)
+libm_alias_double (__lround, lround)
 
 strong_alias (__lround, __lroundf)
 weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c
index bddc1ab3c5..13bf654cb0 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c
@@ -25,6 +25,7 @@
 #undef __copysign
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__redirect_copysign) __copysign_ppc32 attribute_hidden;
 extern __typeof (__redirect_copysign) __copysign_power6 attribute_hidden;
@@ -36,16 +37,8 @@ libc_ifunc (__libm_copysign,
             : __copysign_ppc32);
 
 strong_alias (__libm_copysign, __copysign)
-weak_alias (__copysign, copysign)
+libm_alias_double (__copysign, copysign)
 
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c
index 88357ebdd9..7e149269f8 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__llrint) __llrint_ppc32 attribute_hidden;
 extern __typeof (__llrint) __llrint_power6 attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__llrint,
 	    ? __llrint_power6
             : __llrint_ppc32);
 
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
-#endif
+libm_alias_double (__llrint, llrint)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c
index caf8953c81..be563821ca 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__llround) __llround_ppc32 attribute_hidden;
 extern __typeof (__llround) __llround_power5plus attribute_hidden;
@@ -32,12 +33,4 @@ libc_ifunc (__llround,
 	      ? __llround_power5plus
             : __llround_ppc32);
 
-weak_alias (__llround, llround)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llround, __llroundl)
-weak_alias (__llround, llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
-#endif
+libm_alias_double (__llround, llround)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c
index f178967f0e..32473eda5d 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__logb) __logb_ppc32 attribute_hidden;
 extern __typeof (__logb) __logb_power7 attribute_hidden;
@@ -29,13 +30,4 @@ libc_ifunc (__logb,
 	    ? __logb_power7
             : __logb_ppc32);
 
-weak_alias (__logb, logb)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__logb, __logbl)
-weak_alias (__logb, logbl)
-#endif
-
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, __logb, logbl, GLIBC_2_0);
-#endif
+libm_alias_double (__logb, logb)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c
index ec7c991464..cb134f9330 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__lrint) __lrint_ppc32 attribute_hidden;
 extern __typeof (__lrint) __lrint_power6x attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__lrint,
 	      __lrint_power6x
             : __lrint_ppc32);
 
-weak_alias (__lrint, lrint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lrint, lrintl)
-strong_alias (__lrint, __lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1);
-#endif
+libm_alias_double (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c
index fdc0c3dd8d..e533623caf 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__lround) __lround_ppc32 attribute_hidden;
 extern __typeof (__lround) __lround_power5plus attribute_hidden;
@@ -32,12 +33,4 @@ libc_ifunc (__lround,
 		  __lround_power5plus
             : __lround_ppc32);
 
-weak_alias (__lround, lround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1);
-#endif
+libm_alias_double (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
index d16dbb8406..1284f27ad9 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long long int[r3, r4] __llrint (double x[fp1])  */
 ENTRY (__llrint)
@@ -35,12 +36,4 @@ ENTRY (__llrint)
 	blr
 	END (__llrint)
 
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-#endif
+libm_alias_double (__llrint, llrint)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
index 24bd533748..45926fd2da 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
  .section .rodata.cst8,"aM",@progbits,8
  .align 3
@@ -92,15 +93,7 @@ ENTRY (__llround)
 	b	.Lconvert
 	END (__llround)
 
-weak_alias (__llround, llround)
+libm_alias_double (__llround, llround)
 
 strong_alias (__llround, __llroundf)
 weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
index adbc7ebe18..205e68b1cc 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long [r3] llround (float x [fp1])
    IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
@@ -45,15 +46,7 @@ ENTRY (__llround)
 	blr
 	END (__llround)
 
-weak_alias (__llround, llround)
+libm_alias_double (__llround, llround)
 
 strong_alias (__llround, __llroundf)
 weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S
index f61846331d..acd0cd96fb 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long [r3] lround (float x [fp1])
    IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
@@ -43,15 +44,7 @@ ENTRY (__lround)
 	blr
 	END (__lround)
 
-weak_alias (__lround, lround)
+libm_alias_double (__lround, lround)
 
 strong_alias (__lround, __lroundf)
 weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
index d6cc8011ae..a93407a270 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
+++ b/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
@@ -19,6 +19,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* double [f1] copysign (double [f1] x, double [f2] y);
    copysign(x,y) returns a value with the magnitude of x and
@@ -34,7 +35,7 @@ EALIGN (__copysign, 4, 0)
 END (__copysign)
 
 hidden_def (__copysign)
-weak_alias (__copysign, copysign)
+libm_alias_double (__copysign, copysign)
 
 /* It turns out that the 'double' version will also always work for
    single-precision.  */
@@ -42,17 +43,6 @@ strong_alias (__copysign, __copysignf)
 hidden_def (__copysignf)
 weak_alias (__copysignf, copysignf)
 
-#ifdef NO_LONG_DOUBLE
-strong_alias (__copysign, __copysignl)
-weak_alias (__copysign, copysignl)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
-# endif
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
index 326e77361b..0bf3c70466 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long long int[r3, r4] __llrint (double x[fp1])  */
 ENTRY (__llrint)
@@ -35,12 +36,4 @@ ENTRY (__llrint)
 	blr
 	END (__llrint)
 
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-#endif
+libm_alias_double (__llrint, llrint)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
index 83ba999a39..4abaefd69d 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long [r3] llround (float x [fp1])
    IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
@@ -45,15 +46,7 @@ ENTRY (__llround)
 	blr
 	END (__llround)
 
-weak_alias (__llround, llround)
+libm_alias_double (__llround, llround)
 
 strong_alias (__llround, __llroundf)
 weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S
index cb780516b5..eb32ea6bd0 100644
--- a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S
+++ b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power6"
 /* long int[r3] __lrint (double x[fp1])  */
@@ -27,15 +28,7 @@ ENTRY (__lrint)
 	blr
 	END (__lrint)
 
-weak_alias (__lrint, lrint)
+libm_alias_double (__lrint, lrint)
 
 strong_alias (__lrint, __lrintf)
 weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S
index 05b13cd34c..ec2c208425 100644
--- a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S
+++ b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long [r3] lround (float x [fp1])
    IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
@@ -37,15 +38,7 @@ ENTRY (__lround)
 	blr
 	END (__lround)
 
-weak_alias (__lround, lround)
+libm_alias_double (__lround, lround)
 
 strong_alias (__lround, __lroundf)
 weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
index 2bfb625bf7..1bd971aa24 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
@@ -25,6 +25,7 @@
 #undef __copysign
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__redirect_copysign) __copysign_ppc64 attribute_hidden;
 extern __typeof (__redirect_copysign) __copysign_power6 attribute_hidden;
@@ -36,16 +37,8 @@ libc_ifunc (__libm_copysign,
             : __copysign_ppc64);
 
 strong_alias (__libm_copysign, __copysign)
-weak_alias (__copysign, copysign)
+libm_alias_double (__copysign, copysign)
 
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
 #endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
index 8db494cfde..6c6e9ea0c9 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
@@ -27,6 +27,7 @@
 #undef __lrint
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__llrint) __llrint_ppc64 attribute_hidden;
 extern __typeof (__llrint) __llrint_power6x attribute_hidden;
@@ -39,22 +40,8 @@ libc_ifunc (__llrint,
 	      ? __llrint_power6x
             : __llrint_ppc64);
 
-weak_alias (__llrint, llrint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
-#endif
+libm_alias_double (__llrint, llrint)
 
 /* long has the same width as long long on PowerPC64.  */
 strong_alias (__llrint, __lrint)
-weak_alias (__lrint, lrint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1);
-#endif
+libm_alias_double (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
index b6c70c20ab..7d55d1bae7 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
@@ -23,6 +23,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__llround) __llround_ppc64 attribute_hidden;
 extern __typeof (__llround) __llround_power5plus attribute_hidden;
@@ -38,25 +39,10 @@ libc_ifunc (__llround,
 		? __llround_power5plus
             : __llround_ppc64);
 
-weak_alias (__llround, llround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
-#endif
+libm_alias_double (__llround, llround)
 
 /* long has the same width as long long on PPC64.  */
 #undef lround
 #undef __lround
 strong_alias (__llround, __lround)
-weak_alias (__llround, lround)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llround, __llroundl)
-weak_alias (__llround, llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1);
-#endif
+libm_alias_double (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c
index c2e9f4d3ce..7c23a3cf10 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-double.h>
 
 extern __typeof (__logb) __logb_ppc64 attribute_hidden;
 extern __typeof (__logb) __logb_power7 attribute_hidden;
@@ -29,13 +30,4 @@ libc_ifunc (__logb,
 	    ? __logb_power7
             : __logb_ppc64);
 
-weak_alias (__logb, logb)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__logb, __logbl)
-weak_alias (__logb, logbl)
-#endif
-
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, __logb, logbl, GLIBC_2_0);
-#endif
+libm_alias_double (__logb, logb)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_copysign.S b/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
index 0dd9ce03da..ba4c43f41c 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
@@ -21,6 +21,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 ENTRY_TOCLESS (__copysign)
 	CALL_MCOUNT 0
@@ -40,20 +41,12 @@ L(0):	fnabs   fp1,fp1
 	blr
 	END (__copysign)
 
-weak_alias (__copysign,copysign)
+libm_alias_double (__copysign, copysign)
 
 /* It turns out that it's safe to use this code even for single-precision.  */
 weak_alias (__copysign,copysignf)
 strong_alias(__copysign,__copysignf)
 
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0)
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __copysign, copysignl, GLIBC_2_0)
 #endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/fpu/s_llrint.S
index 9fe0b22d18..64255c2aec 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_llrint.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long long int[r3] __llrint (double x[fp1])  */
 ENTRY_TOCLESS (__llrint)
@@ -32,8 +33,8 @@ ENTRY_TOCLESS (__llrint)
 	END (__llrint)
 
 strong_alias (__llrint, __lrint)
-weak_alias (__llrint, llrint)
-weak_alias (__lrint, lrint)
+libm_alias_double (__llrint, llrint)
+libm_alias_double (__lrint, lrint)
 /* The double version also works for single-precision as both float and
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
@@ -41,14 +42,3 @@ strong_alias (__llrint, __llrintf)
 weak_alias (__llrint, llrintf)
 strong_alias (__lrint, __lrintf)
 weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/fpu/s_llround.S
index 0803ba1eb3..3b8365c924 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_llround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	".toc","aw"
 .LC0:	/* 2^52 */
@@ -81,16 +82,5 @@ ENTRY (__llround)
 	END (__llround)
 
 strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
+libm_alias_double (__llround, llround)
+libm_alias_double (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S
index ec42993268..9d3261aecc 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long long [r3] llround (float x [fp1])
    IEEE 1003.1 llround function.  IEEE specifies "round to the nearest
@@ -43,8 +44,8 @@ ENTRY_TOCLESS (__llround, 4)
 	END (__llround)
 
 strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
+libm_alias_double (__llround, llround)
+libm_alias_double (__lround, lround)
 /* The double version also works for single-precision as both float and
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
@@ -52,14 +53,3 @@ strong_alias (__llround, __llroundf)
 weak_alias (__llround, llroundf)
 strong_alias (__lround, __lroundf)
 weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
index a64f1b8a0c..b994c8edde 100644
--- a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
+++ b/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
@@ -19,6 +19,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* double [f1] copysign (double [f1] x, double [f2] y);
    copysign(x,y) returns a value with the magnitude of x and
@@ -34,7 +35,7 @@ ENTRY_TOCLESS (__copysign, 4)
 END (__copysign)
 
 hidden_def (__copysign)
-weak_alias (__copysign, copysign)
+libm_alias_double (__copysign, copysign)
 
 /* It turns out that the 'double' version will also always work for
    single-precision.  */
@@ -42,17 +43,6 @@ strong_alias (__copysign, __copysignf)
 hidden_def (__copysignf)
 weak_alias (__copysignf, copysignf)
 
-#ifdef NO_LONG_DOUBLE
-strong_alias (__copysign, __copysignl)
-weak_alias (__copysign, copysignl)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
-# endif
 #endif
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S
index 61abdd199d..0ba902c7ba 100644
--- a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power6"
 /* long long int[r3] __llrint (double x[fp1])  */
@@ -29,8 +30,8 @@ ENTRY_TOCLESS (__llrint)
 	END (__llrint)
 
 strong_alias (__llrint, __lrint)
-weak_alias (__llrint, llrint)
-weak_alias (__lrint, lrint)
+libm_alias_double (__llrint, llrint)
+libm_alias_double (__lrint, lrint)
 /* The double version also works for single-precision as both float and
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
@@ -38,14 +39,3 @@ strong_alias (__llrint, __llrintf)
 weak_alias (__llrint, llrintf)
 strong_alias (__lrint, __lrintf)
 weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S
index d58b3380a0..1c12e77290 100644
--- a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 /* long long [r3] llround (float x [fp1])
    IEEE 1003.1 llround function.  IEEE specifies "round to the nearest
@@ -39,8 +40,8 @@ ENTRY_TOCLESS (__llround)
 	END (__llround)
 
 strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
+libm_alias_double (__llround, llround)
+libm_alias_double (__lround, lround)
 /* The double version also works for single-precision as both float and
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
@@ -48,14 +49,3 @@ strong_alias (__llround, __llroundf)
 weak_alias (__llround, llroundf)
 strong_alias (__lround, __lroundf)
 weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
index f1476de0fa..815b26bc8e 100644
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
+++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 #define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
 
@@ -30,8 +31,8 @@ ENTRY_TOCLESS (__llrint)
 END (__llrint)
 
 strong_alias (__llrint, __lrint)
-weak_alias (__llrint, llrint)
-weak_alias (__lrint, lrint)
+libm_alias_double (__llrint, llrint)
+libm_alias_double (__lrint, lrint)
 /* The double version also works for single-precision as both float and
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
@@ -39,14 +40,3 @@ strong_alias (__llrint, __llrintf)
 weak_alias (__llrint, llrintf)
 strong_alias (__lrint, __lrintf)
 weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
index 1dc5142f6e..6b5502576e 100644
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
+++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
@@ -19,6 +19,7 @@
 #include <sysdep.h>
 #include <endian.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 #define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
 
@@ -33,8 +34,8 @@ ENTRY_TOCLESS (__llround)
 END (__llround)
 
 strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
+libm_alias_double (__llround, llround)
+libm_alias_double (__lround, lround)
 /* The double version also works for single-precision as both float and
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
@@ -42,14 +43,3 @@ strong_alias (__llround, __llroundf)
 weak_alias (__llround, llroundf)
 strong_alias (__lround, __lroundf)
 weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif