summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--csu/libc-start.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/csu/libc-start.c b/csu/libc-start.c
index a2f6e12728..feb0d7ce11 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -146,8 +146,6 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
int result;
#ifndef SHARED
- _dl_relocate_static_pie ();
-
char **ev = &argv[argc + 1];
__environ = ev;
@@ -199,6 +197,11 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
ARCH_INIT_CPU_FEATURES ();
+ /* Do static pie self relocation after tunables and cpu features
+ are setup for ifunc resolvers. Before this point relocations
+ must be avoided. */
+ _dl_relocate_static_pie ();
+
/* Perform IREL{,A} relocations. */
ARCH_SETUP_IREL ();