diff options
author | Brooks Moses <bmoses@google.com> | 2014-04-25 13:59:50 -0700 |
---|---|---|
committer | Brooks Moses <bmoses@google.com> | 2014-04-25 13:59:50 -0700 |
commit | 1ecb690ee61b079cb89c53fa860eb5649aba4d70 (patch) | |
tree | f69b5c4f2587f7c9a3e6ec17a9002f4cb28b861a | |
parent | ae4d5ce7debf3108345fd6b4baaae20880d74e37 (diff) | |
download | glibc-1ecb690ee61b079cb89c53fa860eb5649aba4d70.tar.gz glibc-1ecb690ee61b079cb89c53fa860eb5649aba4d70.tar.xz glibc-1ecb690ee61b079cb89c53fa860eb5649aba4d70.zip |
For b/14302447, backport upstream patches for __bzero_ppc.
-rw-r--r-- | README.google | 9 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S | 11 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c | 2 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S | 11 |
4 files changed, 26 insertions, 7 deletions
diff --git a/README.google b/README.google index 81cc9359d8..39313f0836 100644 --- a/README.google +++ b/README.google @@ -291,3 +291,12 @@ sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/localplt.data elf/rtld.c For b/12342355, remove inappropriate assert in EXEC_ORIGIN support. (bmoses, google-local) + +sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c +sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S +sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S + For b/14302447, backport upstream patches for __bzero_ppc: + https://sourceware.org/bugzilla/show_bug.cgi?id=16683 + https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=4facea473059914983b7da8dd654c06b8e3dcc41 + https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=dd3946c615184e1957a0cb09352cac72be5d6d5b + (bmoses, already upstream) diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S index 7a7cca99ed..80a2dc589b 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 2a6298a33d..baaa6b4bcf 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" diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S index 5b234d9ecb..65b3afe250 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> |