PowerPC: Fix bzero definition for static libc

Message ID 531E26F2.202@linux.vnet.ibm.com
State Committed
Delegated to: Adhemerval Zanella Netto
Headers

Commit Message

Adhemerval Zanella Netto March 10, 2014, 8:56 p.m. UTC
  This patch fixes an issue for powerpc64[le] static build where __bzero
is definied in multiple places (memset-ppc64.o and bzero.o). It is now
defined only in bzero.o and memset-ppc64.o only defined __bzero_ppc for
both dynamic and static library.

Fixes BZ#16683.

Tested on powerpc64 and powerpc64le. If no one oppose it, I will commit
tomorrow.

--

2014-03-10  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>

	[BZ #16683]
	* sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S (__bzero_ppc):
	Define it for static builds as well.
	(NO_BZERO_IMPL): Likewise.

---
  

Comments

Adhemerval Zanella Netto March 11, 2014, 3:24 p.m. UTC | #1
On 10-03-2014 17:56, Adhemerval Zanella wrote:
> This patch fixes an issue for powerpc64[le] static build where __bzero
> is definied in multiple places (memset-ppc64.o and bzero.o). It is now
> defined only in bzero.o and memset-ppc64.o only defined __bzero_ppc for
> both dynamic and static library.
>
> Fixes BZ#16683.
>
> Tested on powerpc64 and powerpc64le. If no one oppose it, I will commit
> tomorrow.

Pushed as 4facea473059914983b7da8dd654c06b8e3dcc41
  

Patch

diff --git a/NEWS b/NEWS
index 64a0500..df126f3 100644
--- a/NEWS
+++ b/NEWS
@@ -10,7 +10,7 @@  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.
+  16611, 16613, 16623, 16632, 16639, 16670, 16674, 16683.
 
 * The am33 port, which had not worked for several years, has been removed
   from ports.
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
index 5b234d9e..65b3afe 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
@@ -18,10 +18,9 @@ 
 
 #include <sysdep.h>
 
-#if defined SHARED && !defined NOT_IN_libc
-
 /* Copied from bzero.S to prevent the linker from inserting a stub
-   between bzero and memset.  */
+   between bzero and memset.  NOTE: this code should be positioned
+   before ENTRY/END_GEN_TB redefinition.  */
 ENTRY (__bzero_ppc)
         CALL_MCOUNT 3
         mr      r5,r4
@@ -29,6 +28,8 @@  ENTRY (__bzero_ppc)
         b       L(_memset)
 END_GEN_TB (__bzero_ppc,TB_TOCLESS)
 
+
+#if defined SHARED && !defined NOT_IN_libc
 # undef EALIGN
 # define EALIGN(name, alignt, words)				\
   .section ".text";						\
@@ -48,9 +49,9 @@  END_GEN_TB (__bzero_ppc,TB_TOCLESS)
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)				\
   .globl __GI_memset; __GI_memset = __memset_ppc
+#endif
 
 /* Do not implement __bzero at powerpc64/memset.S.  */
-# define NO_BZERO_IMPL
-#endif
+#define NO_BZERO_IMPL
 
 #include <sysdeps/powerpc/powerpc64/memset.S>