aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-03-12 08:55:50 -0500
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-03-12 09:03:22 -0500
commitdd3946c615184e1957a0cb09352cac72be5d6d5b (patch)
tree4ff621b441f436fbc37faa2f532a271ce0f1dad6
parentc44496df2f090a56d3bf75df930592dac6bba46f (diff)
downloadglibc-dd3946c615184e1957a0cb09352cac72be5d6d5b.zip
glibc-dd3946c615184e1957a0cb09352cac72be5d6d5b.tar.gz
glibc-dd3946c615184e1957a0cb09352cac72be5d6d5b.tar.bz2
PowerPC: Fix bzero definition for static libc for PPC32
This patch fixes an issue for powerpc32-fpu static build which fails with an 'bzero' undefined reference. This patch adds bzero ifunc selector for static builds and fixes the '__bzero_ppc' reference to default memset symbol (since static memset build does not provide ifunc selector). Fixes BZ#16689.
-rw-r--r--ChangeLog9
-rw-r--r--NEWS3
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S11
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c2
4 files changed, 22 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index ef301d8..398cc5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2014-03-12 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+
+ [BZ #16689]
+ * sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S
+ (__bzero_ppc): Call memset@local instead of __memset_ppc@local for
+ static build.
+ * sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c: Build IFUNC
+ selector for static builds.
+
2014-03-12 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #16695]
diff --git a/NEWS b/NEWS
index 483eff1..aa097db 100644
--- a/NEWS
+++ b/NEWS
@@ -10,7 +10,8 @@ Version 2.20
* The following bugs are resolved with this release:
15347, 15804, 15894, 16447, 16532, 16545, 16574, 16600, 16609, 16610,
- 16611, 16613, 16623, 16632, 16639, 16670, 16674, 16677, 16683, 16695.
+ 16611, 16613, 16623, 16632, 16639, 16670, 16674, 16677, 16683, 16689,
+ 16695.
* The am33 port, which had not worked for several years, has been removed
from ports.
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S
index 7a7cca9..80a2dc5 100644
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S
+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S
@@ -19,8 +19,17 @@
#include <sysdep.h>
+/* memset ifunc selector is not built for static and memset@local
+ for shared builds makes the linker point the call to the ifunc
+ selector. */
+#ifdef SHARED
+# define MEMSET __memset_ppc
+#else
+# define MEMSET memset
+#endif
+
ENTRY (__bzero_ppc)
mr r5,r4
li r4,0
- b __memset_ppc@local
+ b MEMSET@local
END (__bzero_ppc)
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c
index 2a6298a..baaa6b4 100644
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c
+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c
@@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */
/* Define multiple versions only for definition in libc. */
-#if defined SHARED && !defined NOT_IN_libc
+#ifndef NOT_IN_libc
# include <string.h>
# include <strings.h>
# include "init-arch.h"