about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-12-05 00:26:26 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-12-05 00:26:26 +0000
commit216933b2422f1379809d30fbf403c0b047631ad8 (patch)
tree1c01ba3a010a396e24c1852999cf6023a3e63a11 /sysdeps
parent934855246d5dbc0d454ceef5f89ad1b7e4c1db35 (diff)
downloadglibc-216933b2422f1379809d30fbf403c0b047631ad8.tar.gz
glibc-216933b2422f1379809d30fbf403c0b047631ad8.tar.xz
glibc-216933b2422f1379809d30fbf403c0b047631ad8.zip
Use libm_alias_float for powerpc.
Continuing the preparation for additional _FloatN / _FloatNx function
aliases, this patch makes powerpc libm function implementations use
libm_alias_float to define function aliases.

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

	* sysdeps/powerpc/fpu/s_cosf.c: Include <libm-alias-float.h>.
	(cosf): Define using libm_alias_float.
	* sysdeps/powerpc/fpu/s_fabs.S: Include <libm-alias-float.h>.
	(fabsf): Define using libm_alias_float.
	* sysdeps/powerpc/fpu/s_fmaf.S: Include <libm-alias-float.h>.
	(fmaf): Define using libm_alias_float.
	* sysdeps/powerpc/fpu/s_rintf.c: Include <libm-alias-float.h>.
	(rintf): Define using libm_alias_float.
	* sysdeps/powerpc/fpu/s_sinf.c: Include <libm-alias-float.h>.
	(sinf): Define using libm_alias_float.
	* sysdeps/powerpc/power5+/fpu/s_modff.c: Include
	<libm-alias-float.h>.
	(modff): Define using libm_alias_float.
	* sysdeps/powerpc/power7/fpu/s_logbf.c: Include
	<libm-alias-float.h>.
	(logbf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Include
	<libm-alias-float.h>.
	(ceilf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Include
	<libm-alias-float.h>.
	(copysignf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Include
	<libm-alias-float.h>.
	(floorf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_llrintf.c: Include
	<libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_llroundf.c: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: Include
	<libm-alias-float.h>.
	(lrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Include
	<libm-alias-float.h>.
	(lroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S: Include
	<libm-alias-float.h>.
	(nearbyintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Include
	<libm-alias-float.h>.
	(rintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Include
	<libm-alias-float.h>.
	(roundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Include
	<libm-alias-float.h>.
	(truncf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c:
	Include <libm-alias-float.h>.
	(ceilf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c:
	Include <libm-alias-float.h>.
	(copysignf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c:
	Include <libm-alias-float.h>.
	(floorf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c:
	Include <libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c:
	Include <libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c:
	Include <libm-alias-float.h>.
	(logbf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c:
	Include <libm-alias-float.h>.
	(lrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c:
	Include <libm-alias-float.h>.
	(lroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c:
	Include <libm-alias-float.h>.
	(modff): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c:
	Include <libm-alias-float.h>.
	(roundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c:
	Include <libm-alias-float.h>.
	(truncf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S: Include
	<libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S: Include
	<libm-alias-float.h>.
	(ceilf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S: Include
	<libm-alias-float.h>.
	(floorf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S: Include
	<libm-alias-float.h>.
	(lroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S: Include
	<libm-alias-float.h>.
	(roundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S: Include
	<libm-alias-float.h>.
	(truncf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S: Include
	<libm-alias-float.h>.
	(copysignf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S: Include
	<libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S: Include
	<libm-alias-float.h>.
	(lrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S: Include
	<libm-alias-float.h>.
	(lroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c: Include
	<libm-alias-float.h>.
	(ceilf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c: Include
	<libm-alias-float.h>.
	(copysignf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c: Include
	<libm-alias-float.h>.
	(cosf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c: Include
	<libm-alias-float.h>.
	(floorf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c: Include
	<libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c: Include
	<libm-alias-float.h>.
	(logbf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c: Include
	<libm-alias-float.h>.
	(modff): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c: Include
	<libm-alias-float.h>.
	(roundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c: Include
	<libm-alias-float.h>.
	(sinf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c: Include
	<libm-alias-float.h>.
	(truncf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Include
	<libm-alias-float.h>.
	(ceilf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Include
	<libm-alias-float.h>.
	(copysignf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Include
	<libm-alias-float.h>.
	(floorf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Include
	<libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S: Include
	<libm-alias-float.h>.
	(nearbyintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Include
	<libm-alias-float.h>.
	(rintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Include
	<libm-alias-float.h>.
	(roundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Include
	<libm-alias-float.h>.
	(truncf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S: Include
	<libm-alias-float.h>.
	(ceilf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S: Include
	<libm-alias-float.h>.
	(floorf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S: Include
	<libm-alias-float.h>.
	(roundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S: Include
	<libm-alias-float.h>.
	(truncf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S: Include
	<libm-alias-float.h>.
	(copysignf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S: Include
	<libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S: Include
	<libm-alias-float.h>.
	(cosf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S: Include
	<libm-alias-float.h>.
	(llrintf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S: Include
	<libm-alias-float.h>.
	(llroundf): Define using libm_alias_float.
	* sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S: Include
	<libm-alias-float.h>.
	(sinf): Define using libm_alias_float.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/powerpc/fpu/s_cosf.c3
-rw-r--r--sysdeps/powerpc/fpu/s_fabs.S3
-rw-r--r--sysdeps/powerpc/fpu/s_fmaf.S3
-rw-r--r--sysdeps/powerpc/fpu/s_rintf.c3
-rw-r--r--sysdeps/powerpc/fpu/s_sinf.c3
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modff.c3
-rw-r--r--sysdeps/powerpc/power7/fpu/s_logbf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_ceilf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_copysign.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_floorf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llrintf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llroundf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_lrint.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_lround.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_rintf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_roundf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_truncf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S3
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c5
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c5
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_ceilf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_copysign.S3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_floorf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llrint.S5
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llroundf.S5
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_rintf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_roundf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_truncf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S5
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S5
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S5
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S5
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S5
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S3
74 files changed, 157 insertions, 83 deletions
diff --git a/sysdeps/powerpc/fpu/s_cosf.c b/sysdeps/powerpc/fpu/s_cosf.c
index 772b138ac3..551a924f96 100644
--- a/sysdeps/powerpc/fpu/s_cosf.c
+++ b/sysdeps/powerpc/fpu/s_cosf.c
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <math.h>
 #include <math_private.h>
+#include <libm-alias-float.h>
 
 static const float pio4 = 7.8539801e-1;
 
@@ -66,4 +67,4 @@ __cosf (float x)
     }
 }
 
-weak_alias (__cosf, cosf)
+libm_alias_float (__cos, cos)
diff --git a/sysdeps/powerpc/fpu/s_fabs.S b/sysdeps/powerpc/fpu/s_fabs.S
index 68f8801427..386604b41f 100644
--- a/sysdeps/powerpc/fpu/s_fabs.S
+++ b/sysdeps/powerpc/fpu/s_fabs.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 #include <libm-alias-double.h>
 
 ENTRY(__fabs)
@@ -29,4 +30,4 @@ libm_alias_double (__fabs, fabs)
 
 /* It turns out that it's safe to use this code even for single-precision.  */
 strong_alias(__fabs,__fabsf)
-weak_alias (__fabs,fabsf)
+libm_alias_float (__fabs, fabs)
diff --git a/sysdeps/powerpc/fpu/s_fmaf.S b/sysdeps/powerpc/fpu/s_fmaf.S
index 2b844e7937..9519c99d2a 100644
--- a/sysdeps/powerpc/fpu/s_fmaf.S
+++ b/sysdeps/powerpc/fpu/s_fmaf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 ENTRY_TOCLESS(__fmaf)
 /* float [f1] fmaf (float [f1] x, float [f2] y, float [f3] z); */
@@ -24,4 +25,4 @@ ENTRY_TOCLESS(__fmaf)
 	blr
 END(__fmaf)
 
-weak_alias (__fmaf,fmaf)
+libm_alias_float (__fma, fma)
diff --git a/sysdeps/powerpc/fpu/s_rintf.c b/sysdeps/powerpc/fpu/s_rintf.c
index 6b16c7bec4..c046f8c6a6 100644
--- a/sysdeps/powerpc/fpu/s_rintf.c
+++ b/sysdeps/powerpc/fpu/s_rintf.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-float.h>
 
 float
 __rintf (float x)
@@ -39,4 +40,4 @@ __rintf (float x)
 
   return x;
 }
-weak_alias (__rintf, rintf)
+libm_alias_float (__rint, rint)
diff --git a/sysdeps/powerpc/fpu/s_sinf.c b/sysdeps/powerpc/fpu/s_sinf.c
index 54a428e68a..5ecb0dd3a2 100644
--- a/sysdeps/powerpc/fpu/s_sinf.c
+++ b/sysdeps/powerpc/fpu/s_sinf.c
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <math.h>
 #include <math_private.h>
+#include <libm-alias-float.h>
 
 static const float pio4 = 7.8539801e-1;
 
@@ -66,4 +67,4 @@ __sinf (float x)
     }
 }
 
-weak_alias (__sinf, sinf)
+libm_alias_float (__sin, sin)
diff --git a/sysdeps/powerpc/power5+/fpu/s_modff.c b/sysdeps/powerpc/power5+/fpu/s_modff.c
index 35bed46fa7..9d6303f9e4 100644
--- a/sysdeps/powerpc/power5+/fpu/s_modff.c
+++ b/sysdeps/powerpc/power5+/fpu/s_modff.c
@@ -17,6 +17,7 @@
 
 #include <math.h>
 #include <math_private.h>
+#include <libm-alias-float.h>
 
 float
 __modff (float x, float *iptr)
@@ -43,4 +44,4 @@ __modff (float x, float *iptr)
       return __copysignf (x - *iptr, x);
     }
 }
-weak_alias (__modff, modff)
+libm_alias_float (__modf, modf)
diff --git a/sysdeps/powerpc/power7/fpu/s_logbf.c b/sysdeps/powerpc/power7/fpu/s_logbf.c
index 1461327cd1..9b8162b2b5 100644
--- a/sysdeps/powerpc/power7/fpu/s_logbf.c
+++ b/sysdeps/powerpc/power7/fpu/s_logbf.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "math_private.h"
+#include <libm-alias-float.h>
 
 /* This implementation avoids FP to INT conversions by using VSX
    bitwise instructions over FP values.  */
@@ -57,4 +58,4 @@ __logbf (float x)
      The test is to avoid logb_downward (0.0) == -0.0.  */
   return ret == -0.0 ? 0.0 : ret;
 }
-weak_alias (__logbf, logbf)
+libm_alias_float (__logb, logb)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
index 9d8d8aa294..e9affd89f4 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	.rodata.cst4,"aM",@progbits,4
 	.align	2
@@ -71,5 +72,5 @@ ENTRY (__ceilf)
 	blr
 	END (__ceilf)
 
-weak_alias (__ceilf, ceilf)
+libm_alias_float (__ceil, ceil)
 
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
index 779dab6e6f..66ff136014 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-float.h>
 #include <libm-alias-double.h>
 
 ENTRY(__copysign)
@@ -44,8 +45,8 @@ L(0):	fnabs   fp1,fp1
 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)
+libm_alias_float (__copysign, copysign)
 
 #if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __copysign, copysignl, GLIBC_2_0)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_floorf.S b/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
index b87e3bf33e..c0f19388a6 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	.rodata.cst4,"aM",@progbits,4
 	.align	2
@@ -71,5 +72,5 @@ ENTRY (__floorf)
 	blr
 	END (__floorf)
 
-weak_alias (__floorf, floorf)
+libm_alias_float (__floor, floor)
 
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llrintf.c b/sysdeps/powerpc/powerpc32/fpu/s_llrintf.c
index 46365452a8..865966b656 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_llrintf.c
+++ b/sysdeps/powerpc/powerpc32/fpu/s_llrintf.c
@@ -19,6 +19,7 @@
 #include <math.h>
 #include <math_private.h>
 #include <stdint.h>
+#include <libm-alias-float.h>
 
 long long int
 __llrintf (float x)
@@ -43,4 +44,4 @@ __llrintf (float x)
       return (long long int) ((i0 & 0x80000000) != 0 ? -mant : mant);
     }
 }
-weak_alias (__llrintf, llrintf)
+libm_alias_float (__llrint, llrint)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llroundf.c b/sysdeps/powerpc/powerpc32/fpu/s_llroundf.c
index 55452bac73..1fefb07793 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_llroundf.c
+++ b/sysdeps/powerpc/powerpc32/fpu/s_llroundf.c
@@ -19,6 +19,7 @@
 #include <math.h>
 #include <math_private.h>
 #include <stdint.h>
+#include <libm-alias-float.h>
 
 /* Round to the nearest integer, with values exactly on a 0.5 boundary
    rounded away from zero, regardless of the current rounding mode.
@@ -69,4 +70,4 @@ __llroundf (float x)
     }
   return xr;
 }
-weak_alias (__llroundf, llroundf)
+libm_alias_float (__llround, llround)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_lrint.S b/sysdeps/powerpc/powerpc32/fpu/s_lrint.S
index 2f4acbd093..1c21455633 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-float.h>
 #include <libm-alias-double.h>
 
 /* long int[r3] __lrint (double x[fp1])  */
@@ -36,4 +37,4 @@ ENTRY (__lrint)
 libm_alias_double (__lrint, lrint)
 
 strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
+libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/fpu/s_lround.S
index f26c580a43..1a3f39886f 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-float.h>
 #include <libm-alias-double.h>
 
 	.section	.rodata.cst4,"aM",@progbits,4
@@ -119,4 +120,4 @@ ENTRY (__lround)
 libm_alias_double (__lround, lround)
 
 strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S b/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
index fb4c6e4cee..a7f4dc0489 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
@@ -21,6 +21,7 @@
    when it's coded in C.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 
 /* float [fp1] nearbyintf(float [fp1] x) */
@@ -75,4 +76,4 @@ L(lessthanzero):
 	blr
 END (__nearbyintf)
 
-weak_alias (__nearbyintf, nearbyintf)
+libm_alias_float (__nearbyint, nearbyint)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_rintf.S b/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
index 70e52e894d..9a15c338ec 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	.rodata.cst4,"aM",@progbits,4
 	.align	2
@@ -61,5 +62,5 @@ ENTRY (__rintf)
 	blr
 	END (__rintf)
 
-weak_alias (__rintf, rintf)
+libm_alias_float (__rint, rint)
 
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_roundf.S b/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
index 5daf84b598..8b44b1ea54 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	.rodata.cst8,"aM",@progbits,8
 	.align	3
@@ -91,5 +92,5 @@ ENTRY (__roundf )
 	blr
 	END (__roundf)
 
-weak_alias (__roundf, roundf)
+libm_alias_float (__round, round)
 
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_truncf.S b/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
index 9b91e3f0a5..6ede26cbdc 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	.rodata.cst4,"aM",@progbits,4
 	.align	2
@@ -78,5 +79,5 @@ ENTRY (__truncf)
 	blr
 	END (__truncf)
 
-weak_alias (__truncf, truncf)
+libm_alias_float (__trunc, trunc)
 
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c
index 9674001caa..b3f202d136 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__ceilf) __ceilf_ppc32 attribute_hidden;
 extern __typeof (__ceilf) __ceilf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__ceilf,
 	    ? __ceilf_power5plus
             : __ceilf_ppc32);
 
-weak_alias (__ceilf, ceilf)
+libm_alias_float (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c
index 7709e08968..7fa1f647c2 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c
@@ -19,6 +19,7 @@
 #include <math.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 /* It's safe to use double-precision implementation for single-precision.  */
 extern __typeof (__copysignf) __copysign_ppc32 attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__copysignf,
 	    ? __copysign_power6
             : __copysign_ppc32);
 
-weak_alias (__copysignf, copysignf)
+libm_alias_float (__copysign, copysign)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
index 56375097f7..f65a30a684 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__floorf) __floorf_ppc32 attribute_hidden;
 extern __typeof (__floorf) __floorf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__floorf,
 	    ? __floorf_power5plus
             : __floorf_ppc32);
 
-weak_alias (__floorf, floorf)
+libm_alias_float (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c
index f513e61944..c3daef00f8 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c
@@ -19,6 +19,7 @@
 #include <math.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__llrintf) __llrintf_ppc32 attribute_hidden;
 extern __typeof (__llrintf) __llrintf_power6 attribute_hidden;
@@ -28,4 +29,4 @@ libc_ifunc (__llrintf,
 	    ? __llrintf_power6
             : __llrintf_ppc32);
 
-weak_alias (__llrintf, llrintf)
+libm_alias_float (__llrint, llrint)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c
index 1b7e45653a..c5d52545df 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 /* It's safe to use double-precision implementation for single-precision.  */
 extern __typeof (__llroundf) __llround_ppc32 attribute_hidden;
@@ -31,4 +32,4 @@ libc_ifunc (__llroundf,
 	      ? __llround_power5plus
             : __llround_ppc32);
 
-weak_alias (__llroundf, llroundf)
+libm_alias_float (__llround, llround)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c
index 3b9de174bd..6f5d654d62 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__logbf) __logbf_ppc32 attribute_hidden;
 extern __typeof (__logbf) __logbf_power7 attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__logbf,
 	    ? __logbf_power7
             : __logbf_ppc32);
 
-weak_alias (__logbf, logbf)
+libm_alias_float (__logb, logb)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c
index 4a7fa4bcfa..dfe67b7087 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 /* It's safe to use double-precision implementation for single-precision.  */
 extern __typeof (__lrintf) __lrint_ppc32 attribute_hidden;
@@ -28,4 +29,4 @@ libc_ifunc (__lrintf,
 	      __lrint_power6x
             : __lrint_ppc32);
 
-weak_alias (__lrintf, lrintf)
+libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c
index ff61dd6ca7..c70644e1a0 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 /* It's safe to use double-precision implementation for single-precision.  */
 extern __typeof (__lroundf) __lround_ppc32 attribute_hidden;
@@ -31,4 +32,4 @@ libc_ifunc (__lroundf,
 		  __lround_power5plus
             : __lround_ppc32);
 
-weak_alias (__lroundf, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c
index 7ae682d124..5f9ef7fca7 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__modff) __modff_ppc32 attribute_hidden;
 extern __typeof (__modff) __modff_power5plus attribute_hidden;
@@ -27,4 +28,4 @@ libc_ifunc (__modff,
 	    ? __modff_power5plus
             : __modff_ppc32);
 
-weak_alias (__modff, modff)
+libm_alias_float (__modf, modf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
index 0a2e6d53cc..0b73e76d35 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__roundf) __roundf_ppc32 attribute_hidden;
 extern __typeof (__roundf) __roundf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__roundf,
 	    ? __roundf_power5plus
             : __roundf_ppc32);
 
-weak_alias (__roundf, roundf)
+libm_alias_float (__round, round)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c
index ef6e97d000..7889e8a4f3 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__truncf) __truncf_ppc32 attribute_hidden;
 extern __typeof (__truncf) __truncf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__truncf,
 	    ? __truncf_power5plus
             : __truncf_ppc32);
 
-weak_alias (__truncf, truncf)
+libm_alias_float (__trunc, trunc)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
index 9c3dd77863..2b1eaa6d5d 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 /* long long int[r3, r4] __llrintf (float x[fp1])  */
 ENTRY (__llrintf)
@@ -34,5 +35,5 @@ ENTRY (__llrintf)
 	blr
 	END (__llrintf)
 
-weak_alias (__llrintf, llrintf)
+libm_alias_float (__llrint, llrint)
 
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
index 45926fd2da..2a167f00d9 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-float.h>
 #include <libm-alias-double.h>
 
  .section .rodata.cst8,"aM",@progbits,8
@@ -96,4 +97,4 @@ ENTRY (__llround)
 libm_alias_double (__llround, llround)
 
 strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
+libm_alias_float (__llround, llround)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
index cff058e7ef..038795e10a 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 EALIGN (__ceilf, 4, 0)
@@ -25,5 +26,5 @@ EALIGN (__ceilf, 4, 0)
 	blr
 	END (__ceilf)
 
-weak_alias (__ceilf, ceilf)
+libm_alias_float (__ceil, ceil)
 
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
index b84e4c64fb..193f2f78c9 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 EALIGN (__floorf, 4, 0)
@@ -25,5 +26,5 @@ EALIGN (__floorf, 4, 0)
 	blr
 	END (__floorf)
 
-weak_alias (__floorf, floorf)
+libm_alias_float (__floor, floor)
 
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
index 205e68b1cc..7bd73860bb 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-float.h>
 #include <libm-alias-double.h>
 
 /* long [r3] llround (float x [fp1])
@@ -49,4 +50,4 @@ ENTRY (__llround)
 libm_alias_double (__llround, llround)
 
 strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
+libm_alias_float (__llround, llround)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S
index acd0cd96fb..922226f025 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-float.h>
 #include <libm-alias-double.h>
 
 /* long [r3] lround (float x [fp1])
@@ -47,4 +48,4 @@ ENTRY (__lround)
 libm_alias_double (__lround, lround)
 
 strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
index 4e0c7e5cec..c11ce6cbf5 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 EALIGN (__roundf, 4, 0)
@@ -25,5 +26,5 @@ EALIGN (__roundf, 4, 0)
 	blr
 	END (__roundf)
 
-weak_alias (__roundf, roundf)
+libm_alias_float (__round, round)
 
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
index 60be314c28..89457ccf81 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
+++ b/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 EALIGN (__truncf, 4, 0)
@@ -25,5 +26,5 @@ EALIGN (__truncf, 4, 0)
 	blr
 	END (__truncf)
 
-weak_alias (__truncf, truncf)
+libm_alias_float (__trunc, trunc)
 
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
index a93407a270..bb8eb49661 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-float.h>
 #include <libm-alias-double.h>
 
 /* double [f1] copysign (double [f1] x, double [f2] y);
@@ -41,7 +42,7 @@ libm_alias_double (__copysign, copysign)
    single-precision.  */
 strong_alias (__copysign, __copysignf)
 hidden_def (__copysignf)
-weak_alias (__copysignf, copysignf)
+libm_alias_float (__copysign, copysign)
 
 #if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
index 0950e7e7c7..e4a49c0d01 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
+++ b/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 /* long long int[r3, r4] __llrintf (float x[fp1])  */
 ENTRY (__llrintf)
@@ -34,5 +35,5 @@ ENTRY (__llrintf)
 	blr
 	END (__llrintf)
 
-weak_alias (__llrintf, llrintf)
+libm_alias_float (__llrint, llrint)
 
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
index 4abaefd69d..df0029d7e4 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-float.h>
 #include <libm-alias-double.h>
 
 /* long [r3] llround (float x [fp1])
@@ -49,4 +50,4 @@ ENTRY (__llround)
 libm_alias_double (__llround, llround)
 
 strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
+libm_alias_float (__llround, llround)
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S
index eb32ea6bd0..3204f74c83 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-float.h>
 #include <libm-alias-double.h>
 
 	.machine	"power6"
@@ -31,4 +32,4 @@ ENTRY (__lrint)
 libm_alias_double (__lrint, lrint)
 
 strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
+libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S
index ec2c208425..e84a3cb75e 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-float.h>
 #include <libm-alias-double.h>
 
 /* long [r3] lround (float x [fp1])
@@ -41,4 +42,4 @@ ENTRY (__lround)
 libm_alias_double (__lround, lround)
 
 strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c
index 7d4a028fe5..e885f512bf 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__ceilf) __ceilf_ppc64 attribute_hidden;
 extern __typeof (__ceilf) __ceilf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__ceilf,
 	    ? __ceilf_power5plus
             : __ceilf_ppc64);
 
-weak_alias (__ceilf, ceilf)
+libm_alias_float (__ceil, ceil)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c
index c9be2b6811..ebeaf881ed 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c
@@ -19,6 +19,7 @@
 #include <math.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 /* It's safe to use double-precision implementation for single-precision. */
 extern __typeof (__copysignf) __copysign_ppc64 attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__copysignf,
 	    ? __copysign_power6
             : __copysign_ppc64);
 
-weak_alias (__copysignf, copysignf)
+libm_alias_float (__copysign, copysign)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c
index acf2a59d69..c9bff2e2b3 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c
@@ -19,6 +19,7 @@
 #include <math.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__cosf) __cosf_ppc64 attribute_hidden;
 extern __typeof (__cosf) __cosf_power8 attribute_hidden;
@@ -28,4 +29,4 @@ libc_ifunc (__cosf,
 	    ? __cosf_power8
 	    : __cosf_ppc64);
 
-weak_alias (__cosf, cosf)
+libm_alias_float (__cos, cos)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
index ee96536247..fa4bbbedbe 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__floorf) __floorf_ppc64 attribute_hidden;
 extern __typeof (__floorf) __floorf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__floorf,
 	    ? __floorf_power5plus
             : __floorf_ppc64);
 
-weak_alias (__floorf, floorf)
+libm_alias_float (__floor, floor)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c
index 330fe965a6..305d12caae 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c
@@ -24,6 +24,7 @@
 #undef lrintf
 #undef __lrintf
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__llrintf) __llrint_ppc64 attribute_hidden;
 extern __typeof (__llrintf) __llrint_power6x attribute_hidden;
@@ -41,6 +42,6 @@ libc_ifunc (__llrintf,
 	    ? __llrint_power6x
 	    : __llrint_ppc64);
 
-weak_alias (__llrintf, llrintf)
+libm_alias_float (__llrint, llrint)
 strong_alias (__llrintf, __lrintf)
-weak_alias (__lrintf, lrintf)
+libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c
index 1e34b5dbc8..89edd4391f 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c
@@ -24,6 +24,7 @@
 #undef lroundf
 #undef __lroundf
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__llroundf) __llroundf_ppc64 attribute_hidden;
 extern __typeof (__llroundf) __llround_power6x attribute_hidden;
@@ -41,6 +42,6 @@ libc_ifunc (__llroundf,
 	    ? __llround_power6x
 	    : __llroundf_ppc64);
 
-weak_alias (__llroundf, llroundf)
+libm_alias_float (__llround, llround)
 strong_alias (__llroundf, __lroundf)
-weak_alias (__lroundf, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c
index 1cacc8a950..fbbf8fa2a1 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__logbf) __logbf_ppc64 attribute_hidden;
 extern __typeof (__logbf) __logbf_power7 attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__logbf,
 	    ? __logbf_power7
             : __logbf_ppc64);
 
-weak_alias (__logbf, logbf)
+libm_alias_float (__logb, logb)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c
index f57939cc66..62bd3a41e5 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__modff) __modff_ppc64 attribute_hidden;
 extern __typeof (__modff) __modff_power5plus attribute_hidden;
@@ -27,4 +28,4 @@ libc_ifunc (__modff,
 	    ? __modff_power5plus
             : __modff_ppc64);
 
-weak_alias (__modff, modff)
+libm_alias_float (__modf, modf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
index 09609d3e91..2c3f4fc3b3 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__roundf) __roundf_ppc64 attribute_hidden;
 extern __typeof (__roundf) __roundf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__roundf,
 	    ? __roundf_power5plus
             : __roundf_ppc64);
 
-weak_alias (__roundf, roundf)
+libm_alias_float (__round, round)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c
index 6d7d6ce50d..0821cf4121 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c
@@ -19,6 +19,7 @@
 #include <math.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__sinf) __sinf_ppc64 attribute_hidden;
 extern __typeof (__sinf) __sinf_power8 attribute_hidden;
@@ -28,4 +29,4 @@ libc_ifunc (__sinf,
             ? __sinf_power8
             : __sinf_ppc64);
 
-weak_alias (__sinf, sinf)
+libm_alias_float (__sin, sin)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c
index 2c46525235..ab607e1a46 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c
@@ -20,6 +20,7 @@
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
 #include "init-arch.h"
+#include <libm-alias-float.h>
 
 extern __typeof (__truncf) __truncf_ppc64 attribute_hidden;
 extern __typeof (__truncf) __truncf_power5plus attribute_hidden;
@@ -29,4 +30,4 @@ libc_ifunc (__truncf,
 	    ? __truncf_power5plus
             : __truncf_ppc64);
 
-weak_alias (__truncf, truncf)
+libm_alias_float (__trunc, trunc)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S
index ee62d8a84d..723b8020fd 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	".toc","aw"
 	.p2align 3
@@ -62,5 +63,5 @@ ENTRY (__ceilf, 4)
 	blr
 	END (__ceilf)
 
-weak_alias (__ceilf, ceilf)
+libm_alias_float (__ceil, ceil)
 
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_copysign.S b/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
index ba4c43f41c..cc2b0463b4 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-float.h>
 #include <libm-alias-double.h>
 
 ENTRY_TOCLESS (__copysign)
@@ -44,8 +45,8 @@ L(0):	fnabs   fp1,fp1
 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)
+libm_alias_float (__copysign, copysign)
 
 #if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, __copysign, copysignl, GLIBC_2_0)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_floorf.S b/sysdeps/powerpc/powerpc64/fpu/s_floorf.S
index defcab4dfa..b8b0a821ca 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_floorf.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_floorf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	".toc","aw"
 	.p2align 3
@@ -62,5 +63,5 @@ ENTRY (__floorf, 4)
 	blr
 	END (__floorf)
 
-weak_alias (__floorf, floorf)
+libm_alias_float (__floor, floor)
 
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/fpu/s_llrint.S
index 64255c2aec..cdc70727b6 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-float.h>
 #include <libm-alias-double.h>
 
 /* long long int[r3] __llrint (double x[fp1])  */
@@ -39,6 +40,6 @@ libm_alias_double (__lrint, lrint)
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
 strong_alias (__llrint, __llrintf)
-weak_alias (__llrint, llrintf)
+libm_alias_float (__llrint, llrint)
 strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
+libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S
index 3e910ac322..5f2f6a32c1 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	".toc","aw"
 .LC0:	/* 2^23 */
@@ -83,6 +84,6 @@ ENTRY (__llroundf)
 	END (__llroundf)
 
 strong_alias (__llroundf, __lroundf)
-weak_alias (__llroundf, llroundf)
-weak_alias (__lroundf, lroundf)
+libm_alias_float (__llround, llround)
+libm_alias_float (__lround, lround)
 
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S b/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
index 36212e103e..7f921fd25f 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
@@ -21,6 +21,7 @@
    when it's coded in C.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 
 /* float [fp1] nearbyintf(float [fp1]) */
@@ -65,4 +66,4 @@ L(lessthanzero):
 	blr
 END (__nearbyintf)
 
-weak_alias (__nearbyintf, nearbyintf)
+libm_alias_float (__nearbyint, nearbyint)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_rintf.S b/sysdeps/powerpc/powerpc64/fpu/s_rintf.S
index 193cf81368..8ef9dfce27 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_rintf.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_rintf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	".toc","aw"
 	.p2align 3
@@ -52,5 +53,5 @@ ENTRY (__rintf, 4)
 	blr
 	END (__rintf)
 
-weak_alias (__rintf, rintf)
+libm_alias_float (__rint, rint)
 
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_roundf.S b/sysdeps/powerpc/powerpc64/fpu/s_roundf.S
index 18c39d54d8..ffd2a46a7b 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_roundf.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_roundf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	".toc","aw"
 	.p2align 3
@@ -77,5 +78,5 @@ ENTRY (__roundf, 4)
 	blr
 	END (__roundf)
 
-weak_alias (__roundf, roundf)
+libm_alias_float (__round, round)
 
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_truncf.S b/sysdeps/powerpc/powerpc64/fpu/s_truncf.S
index 7d974f925a..8ffb7d717f 100644
--- a/sysdeps/powerpc/powerpc64/fpu/s_truncf.S
+++ b/sysdeps/powerpc/powerpc64/fpu/s_truncf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.section	".toc","aw"
 	.p2align 3
@@ -69,5 +70,5 @@ ENTRY (__truncf, 4)
 	blr
 	END (__truncf)
 
-weak_alias (__truncf, truncf)
+libm_alias_float (__trunc, trunc)
 
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S
index 364966088c..ba45ce9577 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__ceilf, 4)
@@ -26,5 +27,5 @@ ENTRY_TOCLESS (__ceilf, 4)
 	blr
 	END (__ceilf)
 
-weak_alias (__ceilf, ceilf)
+libm_alias_float (__ceil, ceil)
 
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S
index fa8a13d2a0..bb7be667a3 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__floorf, 4)
@@ -26,5 +27,5 @@ ENTRY_TOCLESS (__floorf, 4)
 	blr
 	END (__floorf)
 
-weak_alias (__floorf, floorf)
+libm_alias_float (__floor, floor)
 
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S
index 9d3261aecc..6cc5fe3330 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-float.h>
 #include <libm-alias-double.h>
 
 /* long long [r3] llround (float x [fp1])
@@ -50,6 +51,6 @@ libm_alias_double (__lround, lround)
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
 strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
+libm_alias_float (__llround, llround)
 strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S
index 39e28b4e46..7871384b87 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__roundf, 4)
@@ -26,5 +27,5 @@ ENTRY_TOCLESS (__roundf, 4)
 	blr
 	END (__roundf)
 
-weak_alias (__roundf, roundf)
+libm_alias_float (__round, round)
 
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S
index ced4b61d2c..3a1a424191 100644
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S
+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <libm-alias-float.h>
 
 	.machine	"power5"
 ENTRY_TOCLESS (__truncf, 4)
@@ -26,5 +27,5 @@ ENTRY_TOCLESS (__truncf, 4)
 	blr
 	END (__truncf)
 
-weak_alias (__truncf, truncf)
+libm_alias_float (__trunc, trunc)
 
diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
index b994c8edde..45d5273432 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-float.h>
 #include <libm-alias-double.h>
 
 /* double [f1] copysign (double [f1] x, double [f2] y);
@@ -41,7 +42,7 @@ libm_alias_double (__copysign, copysign)
    single-precision.  */
 strong_alias (__copysign, __copysignf)
 hidden_def (__copysignf)
-weak_alias (__copysignf, copysignf)
+libm_alias_float (__copysign, copysign)
 
 #if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
 compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S
index 0ba902c7ba..f8b064829e 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-float.h>
 #include <libm-alias-double.h>
 
 	.machine	"power6"
@@ -36,6 +37,6 @@ libm_alias_double (__lrint, lrint)
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
 strong_alias (__llrint, __llrintf)
-weak_alias (__llrint, llrintf)
+libm_alias_float (__llrint, llrint)
 strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
+libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S
index 1c12e77290..a39e50a894 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-float.h>
 #include <libm-alias-double.h>
 
 /* long long [r3] llround (float x [fp1])
@@ -46,6 +47,6 @@ libm_alias_double (__lround, lround)
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
 strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
+libm_alias_float (__llround, llround)
 strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S
index d45496d3b3..0899d4c687 100644
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S
+++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S
@@ -19,6 +19,7 @@
 #include <sysdep.h>
 #define _ERRNO_H	1
 #include <bits/errno.h>
+#include <libm-alias-float.h>
 
 #define FRAMESIZE (FRAME_MIN_SIZE+16)
 
@@ -505,4 +506,4 @@ L(DPone):
 L(DPtwo):
 	.8byte	0x4000000000000000	/* 2.0 */
 
-weak_alias(__cosf, cosf)
+libm_alias_float (__cos, cos)
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
index 815b26bc8e..46b14a2e49 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-float.h>
 #include <libm-alias-double.h>
 
 #define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
@@ -37,6 +38,6 @@ libm_alias_double (__lrint, lrint)
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
 strong_alias (__llrint, __llrintf)
-weak_alias (__llrint, llrintf)
+libm_alias_float (__llrint, llrint)
 strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
+libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
index 6b5502576e..e4762a2e09 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-float.h>
 #include <libm-alias-double.h>
 
 #define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
@@ -40,6 +41,6 @@ libm_alias_double (__lround, lround)
    double parameters are passed in 64bit FPRs and both versions are expected
    to return [long] long type.  */
 strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
+libm_alias_float (__llround, llround)
 strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
+libm_alias_float (__lround, lround)
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S
index d5335d8d57..b3ae5e669d 100644
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S
+++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S
@@ -19,6 +19,7 @@
 #include <sysdep.h>
 #define _ERRNO_H	1
 #include <bits/errno.h>
+#include <libm-alias-float.h>
 
 #define FRAMESIZE (FRAME_MIN_SIZE+16)
 
@@ -516,4 +517,4 @@ L(DPone):
 L(DPtwo):
 	.8byte	0x4000000000000000	/* 2.0 */
 
-weak_alias(__sinf, sinf)
+libm_alias_float (__sin, sin)