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)
#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)
<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"
#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
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"; \
# 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>