about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-12-01 23:09:47 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-12-01 23:09:47 +0000
commit51ea3b2042ae5012c8e93142baf2e4e84909ff5f (patch)
tree335c4c7454117833e7bfce066aedb0f5008b43d0 /sysdeps
parentec2cf3f4445af7d729308350edf1e890eeebdd1d (diff)
downloadglibc-51ea3b2042ae5012c8e93142baf2e4e84909ff5f.tar.gz
glibc-51ea3b2042ae5012c8e93142baf2e4e84909ff5f.tar.xz
glibc-51ea3b2042ae5012c8e93142baf2e4e84909ff5f.zip
Ues libm_alias_double for various powerpc functions.
Continuing the preparation for additional _FloatN / _FloatNx function
aliases, this patch various powerpc functions use libm_alias_double to
define function aliases (with consequent removal of the need for local
compat symbol handling).  (The present patch excludes the changes to
some functions where such changes could result in differences in
installed stripped shared libraries because of changes to the exact
ordering or properties of symbols in individual .os files.)

Tested with build-many-glibcs.py that installed stripped shared
libraries are unchanged for all its hard-float powerpc configurations.

	* sysdeps/powerpc/fpu/s_rint.c: Include <libm-alias-double.h>.
	(rint): Define using libm_alias_double.
	* sysdeps/powerpc/power5+/fpu/s_modf.c: Include
	<libm-alias-double.h>.
	(modf): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Include
	<libm-alias-double.h>.
	(ceil): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Include
	<libm-alias-double.h>.
	(floor): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S: Include
	<libm-alias-double.h>.
	(nearbyint): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Include
	<libm-alias-double.h>.
	(rint): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/fpu/s_round.S: Include
	<libm-alias-double.h>.
	(round): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Include
	<libm-alias-double.h>.
	(trunc): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c: Include
	<libm-alias-double.h>.
	(ceil): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c:
	Include <libm-alias-double.h>.
	(floor): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c: Include
	<libm-alias-double.h>.
	(modf): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c:
	Include <libm-alias-double.h>.
	(round): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c:
	Include <libm-alias-double.h>.
	(trunc): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S: Include
	<libm-alias-double.h>.
	(ceil): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S: Include
	<libm-alias-double.h>.
	(floor): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S: Include
	<libm-alias-double.h>.
	(round): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S: Include
	<libm-alias-double.h>.
	(trunc): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c: Include
	<libm-alias-double.h>.
	(ceil): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c: Include
	<libm-alias-double.h>.
	(floor): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c: Include
	<libm-alias-double.h>.
	(modf): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c: Include
	<libm-alias-double.h>.
	(round): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c: Include
	<libm-alias-double.h>.
	(trunc): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Include
	<libm-alias-double.h>.
	(ceil): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Include
	<libm-alias-double.h>.
	(floor): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S: Include
	<libm-alias-double.h>.
	(nearbyint): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/s_rint.S: Include
	<libm-alias-double.h>.
	(rint): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/s_round.S: Include
	<libm-alias-double.h>.
	(round): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Include
	<libm-alias-double.h>.
	(trunc): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S: Include
	<libm-alias-double.h>.
	(ceil): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S: Include
	<libm-alias-double.h>.
	(floor): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S: Include
	<libm-alias-double.h>.
	(round): Define using libm_alias_double.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S: Include
	<libm-alias-double.h>.
	(trunc): Define using libm_alias_double.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/powerpc/fpu/s_rint.c7
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modf.c13
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_ceil.S11
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_floor.S11
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S11
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_rint.S11
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_round.S11
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_trunc.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c13
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c11
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c13
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_ceil.S11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_floor.S11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_rint.S11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_round.S11
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_trunc.S11
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S11
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S11
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S11
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S11
32 files changed, 67 insertions, 287 deletions
diff --git a/sysdeps/powerpc/fpu/s_rint.c b/sysdeps/powerpc/fpu/s_rint.c
index a96140b2c9..b382b10686 100644
--- a/sysdeps/powerpc/fpu/s_rint.c
+++ b/sysdeps/powerpc/fpu/s_rint.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-double.h>
 
 double
 __rint (double x)
@@ -39,8 +40,4 @@ __rint (double x)
 
   return x;
 }
-weak_alias (__rint, rint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__rint, __rintl)
-weak_alias (__rint, rintl)
-#endif
+libm_alias_double (__rint, rint)
diff --git a/sysdeps/powerpc/power5+/fpu/s_modf.c b/sysdeps/powerpc/power5+/fpu/s_modf.c
index ee0c62874b..f0e7dbee01 100644
--- a/sysdeps/powerpc/power5+/fpu/s_modf.c
+++ b/sysdeps/powerpc/power5+/fpu/s_modf.c
@@ -18,6 +18,7 @@
 #include <math.h>
 #include <math_private.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 double
 __modf (double x, double *iptr)
@@ -44,15 +45,7 @@ __modf (double x, double *iptr)
       return __copysign (x - *iptr, x);
     }
 }
-weak_alias (__modf, modf)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__modf, __modfl)
-weak_alias (__modf, modfl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __modf, modfl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+libm_alias_double (__modf, modf)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __modf, modfl, GLIBC_2_0);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_ceil.S b/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
index 51b8c21027..64ec125782 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_ceil.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
@@ -72,12 +73,4 @@ ENTRY (__ceil)
 	blr
 	END (__ceil)
 
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
+libm_alias_double (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_floor.S b/sysdeps/powerpc/powerpc32/fpu/s_floor.S
index 90a1b184df..3eaf8d3fa3 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_floor.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_floor.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
@@ -72,12 +73,4 @@ ENTRY (__floor)
 	blr
 	END (__floor)
 
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
+libm_alias_double (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S b/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
index df590e08bd..296454330f 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
@@ -22,6 +22,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 
 /* double [fp1] nearbyint(double [fp1] x) */
@@ -76,12 +77,4 @@ L(lessthanzero):
 	blr
 END (__nearbyint)
 
-weak_alias (__nearbyint, nearbyint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__nearbyint, nearbyintl)
-strong_alias (__nearbyint, __nearbyintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1)
-#endif
+libm_alias_double (__nearbyint, nearbyint)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_rint.S b/sysdeps/powerpc/powerpc32/fpu/s_rint.S
index a1c3116447..30f3b60a1b 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_rint.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_rint.S
@@ -21,6 +21,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	.rodata.cst4,"aM",@progbits,4
 	.align	2
@@ -65,12 +66,4 @@ ENTRY (__rint)
 	blr
 	END (__rint)
 
-weak_alias (__rint, rint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__rint, rintl)
-strong_alias (__rint, __rintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __rint, rintl, GLIBC_2_0)
-#endif
+libm_alias_double (__rint, rint)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_round.S b/sysdeps/powerpc/powerpc32/fpu/s_round.S
index f539890b17..0704ad9676 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_round.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_round.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	2
@@ -93,12 +94,4 @@ ENTRY (__round)
 	blr
 	END (__round)
 
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
+libm_alias_double (__round, round)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_trunc.S b/sysdeps/powerpc/powerpc32/fpu/s_trunc.S
index 85d292c03c..6ab9d39231 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_trunc.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_trunc.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
@@ -79,12 +80,4 @@ ENTRY (__trunc)
 	blr
 	END (__trunc)
 
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
+libm_alias_double (__trunc, trunc)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c
index 4e3d980ce6..1c57b133d6 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.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 (__ceil) __ceil_ppc32 attribute_hidden;
 extern __typeof (__ceil) __ceil_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__ceil,
 	    ? __ceil_power5plus
             : __ceil_ppc32);
 
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__ceil, __ceill)
-weak_alias (__ceil, ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
-#endif
+libm_alias_double (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c
index 0da528c922..62a0378c97 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.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 (__floor) __floor_ppc32 attribute_hidden;
 extern __typeof (__floor) __floor_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__floor,
 	    ? __floor_power5plus
             : __floor_ppc32);
 
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__floor, __floorl)
-weak_alias (__floor, floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0);
-#endif
+libm_alias_double (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c
index 537592ab16..c35eb52c44 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.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 (__modf) __modf_ppc32 attribute_hidden;
 extern __typeof (__modf) __modf_power5plus attribute_hidden;
@@ -29,16 +30,8 @@ libc_ifunc (__modf,
 	    ? __modf_power5plus
             : __modf_ppc32);
 
-weak_alias (__modf, modf)
+libm_alias_double (__modf, modf)
 
-#ifdef NO_LONG_DOUBLE
-strong_alias (__modf, __modfl)
-weak_alias (__modf, modfl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __modf, modfl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __modf, modfl, GLIBC_2_0);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c
index 46102862ac..fbe2dd0c1b 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.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 (__round) __round_ppc32 attribute_hidden;
 extern __typeof (__round) __round_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__round,
 	    ? __round_power5plus
             : __round_ppc32);
 
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__round, __roundl)
-weak_alias (__round, roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1);
-#endif
+libm_alias_double (__round, round)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c
index 110e701218..1456d03c91 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.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 (__trunc) __trunc_ppc32 attribute_hidden;
 extern __typeof (__trunc) __trunc_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__trunc,
 	    ? __trunc_power5plus
             : __trunc_ppc32);
 
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__trunc, __truncl)
-weak_alias (__trunc, truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1);
-#endif
+libm_alias_double (__trunc, trunc)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
index efe7be8242..69a2959d67 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 EALIGN (__ceil, 4, 0)
@@ -25,12 +26,4 @@ EALIGN (__ceil, 4, 0)
 	blr
 	END (__ceil)
 
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
+libm_alias_double (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
index 9f040d8457..84a868fcd1 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 EALIGN (__floor, 4, 0)
@@ -25,12 +26,4 @@ EALIGN (__floor, 4, 0)
 	blr
 	END (__floor)
 
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
+libm_alias_double (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
index 91b42352f3..4353a8111f 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 EALIGN (__round, 4, 0)
@@ -25,12 +26,4 @@ EALIGN (__round, 4, 0)
 	blr
 	END (__round)
 
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
+libm_alias_double (__round, round)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
index ceca529826..564b05850f 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 EALIGN (__trunc, 4, 0)
@@ -25,12 +26,4 @@ EALIGN (__trunc, 4, 0)
 	blr
 	END (__trunc)
 
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
+libm_alias_double (__trunc, trunc)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c
index 968e8cb17e..611c22f40d 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.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 (__ceil) __ceil_ppc64 attribute_hidden;
 extern __typeof (__ceil) __ceil_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__ceil,
 	    ? __ceil_power5plus
             : __ceil_ppc64);
 
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__ceil, __ceill)
-weak_alias (__ceil, ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
-#endif
+libm_alias_double (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c
index 6ab7a35490..5154ba40f9 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.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 (__floor) __floor_ppc64 attribute_hidden;
 extern __typeof (__floor) __floor_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__floor,
 	    ? __floor_power5plus
             : __floor_ppc64);
 
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__floor, __floorl)
-weak_alias (__floor, floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0);
-#endif
+libm_alias_double (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c
index 3e79b2bd5a..104ada21f5 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.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 (__modf) __modf_ppc64 attribute_hidden;
 extern __typeof (__modf) __modf_power5plus attribute_hidden;
@@ -29,16 +30,8 @@ libc_ifunc (__modf,
 	    ? __modf_power5plus
             : __modf_ppc64);
 
-weak_alias (__modf, modf)
+libm_alias_double (__modf, modf)
 
-#ifdef NO_LONG_DOUBLE
-strong_alias (__modf, __modfl)
-weak_alias (__modf, modfl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __modf, modfl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __modf, modfl, GLIBC_2_0);
 #endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c
index d440f6f45c..7bf5ab627e 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.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 (__round) __round_ppc64 attribute_hidden;
 extern __typeof (__round) __round_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__round,
 	    ? __round_power5plus
             : __round_ppc64);
 
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__round, __roundl)
-weak_alias (__round, roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __round, roundl, GLIBC_2_0);
-#endif
+libm_alias_double (__round, round)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c
index 54844d5ff2..c2b430fec8 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.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 (__trunc) __trunc_ppc64 attribute_hidden;
 extern __typeof (__trunc) __trunc_power5plus attribute_hidden;
@@ -29,12 +30,4 @@ libc_ifunc (__trunc,
 	    ? __trunc_power5plus
             : __trunc_ppc64);
 
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__trunc, __truncl)
-weak_alias (__trunc, truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_0);
-#endif
+libm_alias_double (__trunc, trunc)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_ceil.S b/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
index ce673e51f0..46a923b26c 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	".toc","aw"
 .LC0:	/* 2**52 */
@@ -61,12 +62,4 @@ ENTRY (__ceil, 4)
 	blr
 	END (__ceil)
 
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
+libm_alias_double (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_floor.S b/sysdeps/powerpc/powerpc64/fpu/s_floor.S
index 23cea2ab5a..af0769c957 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_floor.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_floor.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	".toc","aw"
 .LC0:	/* 2**52 */
@@ -61,12 +62,4 @@ ENTRY (__floor, 4)
 	blr
 	END (__floor)
 
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
+libm_alias_double (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S b/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
index 88ec253ced..22810803cc 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
@@ -22,6 +22,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 
 /* double [fp1] nearbyint(double [fp1] x) */
@@ -64,12 +65,4 @@ L(lessthanzero):
 	blr
 END (__nearbyint)
 
-weak_alias (__nearbyint, nearbyint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__nearbyint, nearbyint)
-strong_alias (__nearbyint, __nearbyintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1)
-#endif
+libm_alias_double (__nearbyint, nearbyint)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_rint.S b/sysdeps/powerpc/powerpc64/fpu/s_rint.S
index 3543279ed4..a4506061eb 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_rint.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_rint.S
@@ -21,6 +21,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	".toc","aw"
 .LC0:	/* 2**52 */
@@ -54,12 +55,4 @@ ENTRY (__rint, 4)
 	blr
 	END (__rint)
 
-weak_alias (__rint, rint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__rint, rintl)
-strong_alias (__rint, __rintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __rint, rintl, GLIBC_2_0)
-#endif
+libm_alias_double (__rint, rint)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_round.S b/sysdeps/powerpc/powerpc64/fpu/s_round.S
index d10c74d037..975c10f71e 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_round.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_round.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	".toc","aw"
 .LC0:	/* 2**52 */
@@ -76,12 +77,4 @@ ENTRY (__round, 4)
 	blr
 	END (__round)
 
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
+libm_alias_double (__round, round)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_trunc.S b/sysdeps/powerpc/powerpc64/fpu/s_trunc.S
index 1e356dee7d..f918293ce5 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_trunc.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_trunc.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.section	".toc","aw"
 .LC0:	/* 2**52 */
@@ -68,12 +69,4 @@ ENTRY (__trunc, 4)
 	blr
 	END (__trunc)
 
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
+libm_alias_double (__trunc, trunc)
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S
index 0d09e56e4e..bc666317b6 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__ceil, 4)
@@ -26,12 +27,4 @@ ENTRY_TOCLESS (__ceil, 4)
 	blr
 	END (__ceil)
 
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
+libm_alias_double (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S
index f8bfb2797e..c589185a64 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__floor, 4)
@@ -26,12 +27,4 @@ ENTRY_TOCLESS (__floor, 4)
 	blr
 	END (__floor)
 
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
+libm_alias_double (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S
index 0a124c80a6..d5b11f2435 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__round, 4)
@@ -26,12 +27,4 @@ ENTRY_TOCLESS (__round, 4)
 	blr
 	END (__round)
 
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
+libm_alias_double (__round, round)
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S
index 5fca9f37fa..dee61dd51c 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
+#include <libm-alias-double.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__trunc, 4)
@@ -26,12 +27,4 @@ ENTRY_TOCLESS (__trunc, 4)
 	blr
 	END (__trunc)
 
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
+libm_alias_double (__trunc, trunc)