This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch tuliom/multilib updated. glibc-2.17-403-gaa5bd10


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, tuliom/multilib has been updated
       via  aa5bd1097bbffa3414dc78c4a9e193389ef29e2c (commit)
       via  5974755e7efda38f05d7f3ae855873aa8184eab4 (commit)
       via  0fc435974c65787a0b1b2dfc149c1433b5a86d2d (commit)
       via  2bff5a09d22122b699faf29d798d757ae8f6151c (commit)
       via  50a23bc73af32aa6d0e10e0041c6cf57c0c81830 (commit)
       via  ba1b2dec98f825c28c68747f66c020b9352e1480 (commit)
       via  dc65929f124c88babc3dd49b85818ca7bc0ea653 (commit)
      from  6f1341ed0356611b936b34e65f660e2d8ff8843b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=aa5bd1097bbffa3414dc78c4a9e193389ef29e2c

commit aa5bd1097bbffa3414dc78c4a9e193389ef29e2c
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Sun Apr 14 15:36:20 2013 -0500

    PowerPC: trunc/truncf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index 8c7868e..20c8dd8 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -21,7 +21,9 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_floor-power5+ s_floor-ppc32 \
 			s_floorf-power5+ s_floorf-ppc32 \
 			s_round-power5+ s_round-ppc32 \
-			s_roundf-power5+ s_roundf-ppc32
+			s_roundf-power5+ s_roundf-ppc32 \
+                        s_trunc-power5+ s_trunc-ppc32 \
+                        s_truncf-power5+ s_truncf-ppc32
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-power5+.S
similarity index 78%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-power5+.S
index 2d4ec5a..d9fc987 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-power5+.S
@@ -20,17 +20,7 @@
 #include <math_ldbl_opt.h>
 
 	.machine	"power5"
-EALIGN (__trunc, 4, 0)
+EALIGN (__trunc_power5plus, 4, 0)
 	friz	fp1, fp1
 	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
+END (__trunc_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-ppc32.S
new file mode 100644
index 0000000..2e931c6
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-ppc32.S
@@ -0,0 +1,13 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a,b)
+#undef strong_alias
+#define strong_alias(a,b)
+#undef compat_symbol
+#define compat_symbol(a,b,c,d)
+
+#define __trunc __trunc_ppc32
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_trunc.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc.c
similarity index 67%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc.c
index 2d4ec5a..a5fa8ad 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc.c
@@ -1,5 +1,5 @@
-/* trunc function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_trunc.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,21 +16,25 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
 #include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__trunc, 4, 0)
-	friz	fp1, fp1
-	blr
-	END (__trunc)
+extern __typeof (__trunc) __trunc_ppc32 attribute_hidden;
+extern __typeof (__trunc) __trunc_power5plus attribute_hidden;
+
+libc_ifunc (__trunc,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __trunc_power5plus
+            : __trunc_ppc32);
 
 weak_alias (__trunc, trunc)
 
 #ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
 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)
+compat_symbol (libm, __trunc, truncl, GLIBC_2_1);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-power5+.S
similarity index 87%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-power5+.S
index 0ca5b5c..35cd65a 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-power5+.S
@@ -19,11 +19,8 @@
 #include <sysdep.h>
 
 	.machine	"power5"
-EALIGN (__truncf, 4, 0)
+EALIGN (__truncf_power5plus, 4, 0)
 	friz	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
+	frsp	fp1, fp1	/* But we need to set overflow for float.  */
 	blr
-	END (__truncf)
-
-weak_alias (__truncf, truncf)
-
+END (__truncf_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-ppc32.S
new file mode 100644
index 0000000..e4fe3b9
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-ppc32.S
@@ -0,0 +1,9 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a,b)
+
+#define __truncf __truncf_ppc32
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_truncf.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf.c
similarity index 64%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf.c
index 0ca5b5c..b0ab04a 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf.c
@@ -1,5 +1,5 @@
-/* truncf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_truncf.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,14 +16,17 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__truncf, 4, 0)
-	friz	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__truncf)
+extern __typeof (__truncf) __truncf_ppc32 attribute_hidden;
+extern __typeof (__truncf) __truncf_power5plus attribute_hidden;
 
-weak_alias (__truncf, truncf)
+libc_ifunc (__truncf,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __truncf_power5plus
+            : __truncf_ppc32);
 
+weak_alias (__truncf, truncf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=5974755e7efda38f05d7f3ae855873aa8184eab4

commit 5974755e7efda38f05d7f3ae855873aa8184eab4
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Sun Apr 14 15:34:36 2013 -0500

    PowerPC: round/roundf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index 4251936..8c7868e 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -19,7 +19,9 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_ceil-power5+ s_ceil-ppc32 \
 			s_ceilf-power5+ s_ceilf-ppc32 \
 			s_floor-power5+ s_floor-ppc32 \
-			s_floorf-power5+ s_floorf-ppc32
+			s_floorf-power5+ s_floorf-ppc32 \
+			s_round-power5+ s_round-ppc32 \
+			s_roundf-power5+ s_roundf-ppc32
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-power5+.S
similarity index 78%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-power5+.S
index 3cc72d3..276ba45 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-power5+.S
@@ -20,17 +20,7 @@
 #include <math_ldbl_opt.h>
 
 	.machine	"power5"
-EALIGN (__round, 4, 0)
+EALIGN (__round_power5plus, 4, 0)
 	frin	fp1, fp1
 	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
+END (__round_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-ppc32.S
new file mode 100644
index 0000000..16401c6
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-ppc32.S
@@ -0,0 +1,13 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a,b)
+#undef strong_alias
+#define strong_alias(a,b)
+#undef compat_symbol
+#define compat_symbol(a,b,c,d)
+
+#define __round __round_ppc32
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_round.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_round.c
similarity index 67%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_round.c
index 3cc72d3..6bd762a 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_round.c
@@ -1,5 +1,5 @@
-/* round function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_round.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,21 +16,25 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
 #include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__round, 4, 0)
-	frin	fp1, fp1
-	blr
-	END (__round)
+extern __typeof (__round) __round_ppc32 attribute_hidden;
+extern __typeof (__round) __round_power5plus attribute_hidden;
+
+libc_ifunc (__round,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __round_power5plus
+            : __round_ppc32);
 
 weak_alias (__round, round)
 
 #ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
 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)
+compat_symbol (libm, __round, roundl, GLIBC_2_1);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-power5+.S
similarity index 87%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-power5+.S
index 8bd2d0a..644d976 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-power5+.S
@@ -19,11 +19,8 @@
 #include <sysdep.h>
 
 	.machine	"power5"
-EALIGN (__roundf, 4, 0)
+EALIGN (__roundf_power5plus, 4, 0)
 	frin	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
+	frsp	fp1, fp1	/* But we need to set overflow for float.  */
 	blr
-	END (__roundf)
-
-weak_alias (__roundf, roundf)
-
+END (__roundf_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-ppc32.S
new file mode 100644
index 0000000..96ea5e5
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-ppc32.S
@@ -0,0 +1,9 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a,b)
+
+#define __roundf __roundf_ppc32
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_roundf.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf.c
similarity index 64%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf.c
index 8bd2d0a..da1196b 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf.c
@@ -1,5 +1,5 @@
-/* roundf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_roundf.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,14 +16,17 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__roundf, 4, 0)
-	frin	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__roundf)
+extern __typeof (__roundf) __roundf_ppc32 attribute_hidden;
+extern __typeof (__roundf) __roundf_power5plus attribute_hidden;
 
-weak_alias (__roundf, roundf)
+libc_ifunc (__roundf,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __roundf_power5plus
+            : __roundf_ppc32);
 
+weak_alias (__roundf, roundf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0fc435974c65787a0b1b2dfc149c1433b5a86d2d

commit 0fc435974c65787a0b1b2dfc149c1433b5a86d2d
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Sun Apr 14 09:39:19 2013 -0500

    PowerPC: floor/floorf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index aaafdbe..4251936 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -17,7 +17,9 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_isnanf-ppc32 \
 			s_copysign-power6 s_copysign-ppc32 \
 			s_ceil-power5+ s_ceil-ppc32 \
-			s_ceilf-power5+ s_ceilf-ppc32
+			s_ceilf-power5+ s_ceilf-ppc32 \
+			s_floor-power5+ s_floor-ppc32 \
+			s_floorf-power5+ s_floorf-ppc32
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
index d69b921..81068d5 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
@@ -8,6 +8,6 @@
 #undef compat_symbol
 #define compat_symbol(a,b,c,d)
 
-#define __ceil __ceil_ppc32
+#define __floor __floor_ppc32
 
-#include <sysdeps/powerpc/powerpc32/fpu/s_ceil.S>
+#include <sysdeps/powerpc/powerpc32/fpu/s_floor.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-power5+.S
similarity index 78%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-power5+.S
index 215c67c..c9515df 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-power5+.S
@@ -20,17 +20,7 @@
 #include <math_ldbl_opt.h>
 
 	.machine	"power5"
-EALIGN (__floor, 4, 0)
+EALIGN (__floor_power5plus, 4, 0)
 	frim	fp1, fp1
 	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
+END (__floor_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S
similarity index 70%
copy from sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S
index d69b921..81068d5 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S
@@ -8,6 +8,6 @@
 #undef compat_symbol
 #define compat_symbol(a,b,c,d)
 
-#define __ceil __ceil_ppc32
+#define __floor __floor_ppc32
 
-#include <sysdeps/powerpc/powerpc32/fpu/s_ceil.S>
+#include <sysdeps/powerpc/powerpc32/fpu/s_floor.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c
similarity index 67%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c
index 215c67c..6d3fcba 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c
@@ -1,5 +1,5 @@
-/* floor function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_floor.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,21 +16,25 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
 #include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__floor, 4, 0)
-	frim	fp1, fp1
-	blr
-	END (__floor)
+extern __typeof (__floor) __floor_ppc32 attribute_hidden;
+extern __typeof (__floor) __floor_power5plus attribute_hidden;
+
+libc_ifunc (__floor,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __floor_power5plus
+            : __floor_ppc32);
 
 weak_alias (__floor, floor)
 
 #ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
 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)
+compat_symbol (libm, __floor, floorl, GLIBC_2_0);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-power5+.S
similarity index 93%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-power5+.S
index eb228da..bece550 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-power5+.S
@@ -19,11 +19,8 @@
 #include <sysdep.h>
 
 	.machine	"power5"
-EALIGN (__floorf, 4, 0)
+EALIGN (__floorf_power5plus, 4, 0)
 	frim	fp1, fp1	/* The rounding instructions are double.  */
 	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
 	blr
-	END (__floorf)
-
-weak_alias (__floorf, floorf)
-
+END (__floorf_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S
new file mode 100644
index 0000000..c7be7e5
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S
@@ -0,0 +1,9 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a,b)
+
+#define __floorf __floorf_ppc32
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_floorf.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c
similarity index 64%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c
index eb228da..0bfc7c0 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c
@@ -1,5 +1,5 @@
-/* floorf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_floorf.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,14 +16,17 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__floorf, 4, 0)
-	frim	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__floorf)
+extern __typeof (__floorf) __floorf_ppc32 attribute_hidden;
+extern __typeof (__floorf) __floorf_power5plus attribute_hidden;
 
-weak_alias (__floorf, floorf)
+libc_ifunc (__floorf,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __floorf_power5plus
+            : __floorf_ppc32);
 
+weak_alias (__floorf, floorf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=2bff5a09d22122b699faf29d798d757ae8f6151c

commit 2bff5a09d22122b699faf29d798d757ae8f6151c
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Sun Apr 14 07:48:53 2013 -0500

    PowerPC: ceil/ceilf multilib for PowerPC32

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index 9fb2528..aaafdbe 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -15,7 +15,9 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_isnan-ppc32 \
 			s_isnanf-power7 s_isnanf-power6 s_isnanf-power5 \
 			s_isnanf-ppc32 \
-			s_copysign-power6 s_copysign-ppc32
+			s_copysign-power6 s_copysign-ppc32 \
+			s_ceil-power5+ s_ceil-ppc32 \
+			s_ceilf-power5+ s_ceilf-ppc32
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-power5+.S
similarity index 79%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-power5+.S
index 0469831..6f76b2f 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-power5+.S
@@ -20,17 +20,7 @@
 #include <math_ldbl_opt.h>
 
 	.machine	"power5"
-EALIGN (__ceil, 4, 0)
+EALIGN (__ceil_power5plus, 4, 0)
 	frip	fp1, fp1
 	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
+END (__ceil_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
new file mode 100644
index 0000000..d69b921
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
@@ -0,0 +1,13 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a,b)
+#undef strong_alias
+#define strong_alias(a,b)
+#undef compat_symbol
+#define compat_symbol(a,b,c,d)
+
+#define __ceil __ceil_ppc32
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_ceil.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil.c
similarity index 68%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil.c
index 0469831..2c9a76e 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil.c
@@ -1,5 +1,5 @@
-/* ceil function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_ceil.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,21 +16,25 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
 #include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__ceil, 4, 0)
-	frip	fp1, fp1
-	blr
-	END (__ceil)
+extern __typeof (__ceil) __ceil_ppc32 attribute_hidden;
+extern __typeof (__ceil) __ceil_power5plus attribute_hidden;
+
+libc_ifunc (__ceil,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __ceil_power5plus
+            : __ceil_ppc32);
 
 weak_alias (__ceil, ceil)
 
 #ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
 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)
+compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-power5+.S
similarity index 93%
copy from sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
copy to sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-power5+.S
index 43f74a1..eef69b4 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-power5+.S
@@ -19,11 +19,8 @@
 #include <sysdep.h>
 
 	.machine	"power5"
-EALIGN (__ceilf, 4, 0)
+EALIGN (__ceilf_power5plus, 4, 0)
 	frip	fp1, fp1	/* The rounding instructions are double.  */
 	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
 	blr
-	END (__ceilf)
-
-weak_alias (__ceilf, ceilf)
-
+END (__ceilf_power5plus)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-ppc32.S
new file mode 100644
index 0000000..5d81bb8
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-ppc32.S
@@ -0,0 +1,9 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef weak_alias
+#define weak_alias(a,b)
+
+#define __ceilf __ceilf_ppc32
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_ceilf.S>
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf.c
similarity index 64%
rename from sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf.c
index 43f74a1..21d4267 100644
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf.c
@@ -1,5 +1,5 @@
-/* ceilf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2013 Free Software Foundation, Inc.
+/* Multiple versions of s_ceilf.
+   Copyright (C) 2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,14 +16,17 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <sysdep.h>
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
 
-	.machine	"power5"
-EALIGN (__ceilf, 4, 0)
-	frip	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__ceilf)
+extern __typeof (__ceilf) __ceilf_ppc32 attribute_hidden;
+extern __typeof (__ceilf) __ceilf_power5plus attribute_hidden;
 
-weak_alias (__ceilf, ceilf)
+libc_ifunc (__ceilf,
+	    (hwcap & PPC_FEATURE_POWER5_PLUS)
+	    ? __ceilf_power5plus
+            : __ceilf_ppc32);
 
+weak_alias (__ceilf, ceilf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=50a23bc73af32aa6d0e10e0041c6cf57c0c81830

commit 50a23bc73af32aa6d0e10e0041c6cf57c0c81830
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Apr 12 18:03:48 2013 -0500

    PowerPC: copysign/copysignf multilib for PowerPC

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
index c9003e3..9fb2528 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile
@@ -2,7 +2,8 @@ ifeq ($(subdir),math)
 sysdep_routines += s_isnan-power7 s_isnan-power6 s_isnan-power5 \
 		   s_isnan-ppc32 \
 		   s_isnanf-power7 s_isnanf-power6 s_isnanf-power5 \
-		   s_isnanf-ppc32
+		   s_isnanf-ppc32 \
+		   s_copysign-power6 s_copysign-ppc32
 
 libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_llrint-power6 s_llrint-power4 s_llrint-c \
@@ -13,7 +14,8 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-power4 s_llrintf-c \
 			s_isnan-power7 s_isnan-power6 s_isnan-power5 \
 			s_isnan-ppc32 \
 			s_isnanf-power7 s_isnanf-power6 s_isnanf-power5 \
-			s_isnanf-ppc32
+			s_isnanf-ppc32 \
+			s_copysign-power6 s_copysign-ppc32
 
 CFLAGS-s_llround.c = -fno-builtin-llroundf
 endif
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-power6.S
similarity index 65%
rename from sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
rename to sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-power6.S
index 1b8d73a..7aa28e1 100644
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-power6.S
@@ -27,32 +27,8 @@
 	.section    ".text"
 	.type	    __copysign, @function
 	.machine    power6
-EALIGN (__copysign, 4, 0)
+EALIGN (__copysign_power6, 4, 0)
 	CALL_MCOUNT
 	fcpsgn	fp1,fp2,fp1
 	blr
-END (__copysign)
-
-hidden_def (__copysign)
-weak_alias (__copysign, copysign)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__copysign, __copysignf)
-hidden_def (__copysignf)
-weak_alias (__copysignf, copysignf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__copysign, __copysignl)
-weak_alias (__copysign, copysignl)
-#endif
-
-#ifdef IS_IN_libm
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
-# endif
-#endif
+END (__copysign_power6)
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-ppc32.S b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-ppc32.S
new file mode 100644
index 0000000..c0b9f45
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-ppc32.S
@@ -0,0 +1,12 @@
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+#undef compat_symbol
+#define compat_symbol(a, b, c, d)
+
+#define __copysign __copysign_ppc32
+#undef hidden_def
+#define hidden_def(name)
+  strong_alias (__copysign_ppc32, __GI___copysign)
+
+#include <sysdeps/powerpc/powerpc32/fpu/s_copysign.S>
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign.c
new file mode 100644
index 0000000..67a38e9
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign.c
@@ -0,0 +1,55 @@
+/* Multiple versions of s_copysign.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <shlib-compat.h>
+#include "init-arch.h"
+
+extern __typeof (__copysign) __copysign_ppc32 attribute_hidden;
+extern __typeof (__copysign) __copysign_power6 attribute_hidden;
+
+libc_ifunc (__copysign,
+	    (hwcap & PPC_FEATURE_ARCH_2_05)
+	    ? __copysign_power6
+            : __copysign_ppc32);
+
+weak_alias (__copysign, copysign)
+
+/* It's safe to use double-precision implementation for single-precision.
+   The following assembly directives are basically doing:
+   weak_alias (__copysign,copysignf)
+   strong_alias(__copysign,__copysignf)
+   But the compiler will not let us do it in C because both __copysignf and
+   copysignf are already defined.  */
+asm (".weak copysignf\n"
+     ".set  copysignf, __copysign");
+asm (".globl __copysign\n"
+     "__copysign = __copysignf");
+
+#ifdef NO_LONG_DOUBLE
+weak_alias (__copysign,copysignl)
+strong_alias(__copysign,__copysignl)
+#endif
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
+#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysignf.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysignf.c
new file mode 100644
index 0000000..2838458
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysignf.c
@@ -0,0 +1 @@
+/* copysignf() is in s_copysign.c  */
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
index 840891f..9753cb6 100644
--- a/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
@@ -43,8 +43,10 @@ L(0):	fnabs   fp1,fp1
 weak_alias (__copysign,copysign)
 
 /* It turns out that it's safe to use this code even for single-precision.  */
+#ifndef __isnan
 weak_alias (__copysign,copysignf)
 strong_alias(__copysign,__copysignf)
+#endif
 
 #ifdef NO_LONG_DOUBLE
 weak_alias (__copysign,copysignl)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S
deleted file mode 100644
index d4aa702..0000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_copysign.S.  */

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=ba1b2dec98f825c28c68747f66c020b9352e1480

commit ba1b2dec98f825c28c68747f66c020b9352e1480
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Apr 12 14:40:38 2013 -0500

    PowerPC: fixing missing isnanl symbol

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c
index aea0031..05f1db8 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c
@@ -41,6 +41,10 @@ weak_alias (__isnan, isnan)
 strong_alias (__isnan, __isnanl)
 weak_alias (__isnan, isnanl)
 #endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __isnan, isnanl, GLIBC_2_1);
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+# endif
 #endif

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=dc65929f124c88babc3dd49b85818ca7bc0ea653

commit dc65929f124c88babc3dd49b85818ca7bc0ea653
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Sun Apr 14 09:38:31 2013 -0500

    PowerPC: fixing missing sqrtl libm symbol

diff --git a/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c
index f7a9253..08525db 100644
--- a/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c
+++ b/sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c
@@ -38,3 +38,6 @@ weak_alias (__sqrt, sqrt)
 strong_alias (__sqrt, __sqrtl)
 weak_alias (__sqrt, sqrtl)
 #endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0);
+#endif

-----------------------------------------------------------------------

Summary of changes:
 sysdeps/powerpc/powerpc32/fpu/multiarch/Makefile   |   14 ++++-
 .../powerpc32/fpu/multiarch/s_ceil-power5+.S       |   26 +++++++++
 .../powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S |   13 +++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil.c   |   40 ++++++++++++++
 .../powerpc32/fpu/multiarch/s_ceilf-power5+.S      |   26 +++++++++
 .../powerpc32/fpu/multiarch/s_ceilf-ppc32.S        |    9 +++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf.c  |   32 +++++++++++
 .../powerpc32/fpu/multiarch/s_copysign-power6.S    |   34 ++++++++++++
 .../powerpc32/fpu/multiarch/s_copysign-ppc32.S     |   12 ++++
 .../powerpc/powerpc32/fpu/multiarch/s_copysign.c   |   55 +++++++++++++++++++
 .../powerpc/powerpc32/fpu/multiarch/s_copysignf.c  |    1 +
 .../powerpc32/fpu/multiarch/s_floor-power5+.S      |   26 +++++++++
 .../powerpc32/fpu/multiarch/s_floor-ppc32.S        |   13 +++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c  |   40 ++++++++++++++
 .../powerpc32/fpu/multiarch/s_floorf-power5+.S     |   26 +++++++++
 .../powerpc32/fpu/multiarch/s_floorf-ppc32.S       |    9 +++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c |   32 +++++++++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_isnan.c  |    8 ++-
 .../powerpc32/fpu/multiarch/s_round-power5+.S      |   26 +++++++++
 .../powerpc32/fpu/multiarch/s_round-ppc32.S        |   13 +++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_round.c  |   40 ++++++++++++++
 .../powerpc32/fpu/multiarch/s_roundf-power5+.S     |   26 +++++++++
 .../powerpc32/fpu/multiarch/s_roundf-ppc32.S       |    9 +++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf.c |   32 +++++++++++
 .../powerpc32/fpu/multiarch/s_trunc-power5+.S      |   26 +++++++++
 .../powerpc32/fpu/multiarch/s_trunc-ppc32.S        |   13 +++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc.c  |   40 ++++++++++++++
 .../powerpc32/fpu/multiarch/s_truncf-power5+.S     |   26 +++++++++
 .../powerpc32/fpu/multiarch/s_truncf-ppc32.S       |    9 +++
 sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf.c |   32 +++++++++++
 sysdeps/powerpc/powerpc32/fpu/multiarch/w_sqrt.c   |    3 +
 sysdeps/powerpc/powerpc32/fpu/s_copysign.S         |    2 +
 sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S     |   36 ------------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S    |   29 ----------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S    |   36 ------------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S   |   29 ----------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S    |   36 ------------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S   |   29 ----------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S    |   36 ------------
 sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S   |   29 ----------
 sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S  |   58 --------------------
 sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S |    1 -
 42 files changed, 709 insertions(+), 323 deletions(-)
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceil.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_ceilf.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-power6.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysign.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_copysignf.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floor.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_floorf.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_round-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_round.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_roundf.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_trunc.c
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-power5+.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf-ppc32.S
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/multiarch/s_truncf.c
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
 delete mode 100644 sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]