summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makerules2
-rw-r--r--Rules.mak5
2 files changed, 4 insertions, 3 deletions
diff --git a/Makerules b/Makerules
index 53a3fba58..307331a20 100644
--- a/Makerules
+++ b/Makerules
@@ -308,7 +308,7 @@ $(top_builddir)lib/interp.c: | $(sub_headers)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)echo "/* Force shared libraries to know about the correct library loader */" > $@
$(Q)echo "#include <features.h>" >> $@
- $(Q)echo "const char __dl_ldso__[] __attribute__ ((section " \
+ $(Q)echo "const char __dl_ldso__[] attribute_hidden __attribute__ ((weak)) __attribute__ ((section " \
"(\".interp\"))) =\""$(SHARED_LIB_LOADER_PREFIX)/$(UCLIBC_LDSO)"\";" >> $@
$(interp): $(top_builddir)lib/interp.c
diff --git a/Rules.mak b/Rules.mak
index 4d7de2f9f..7c3e4f020 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -421,9 +421,10 @@ export PIEFLAG:=$(call check_gcc,$(PIEFLAG_NAME),$(PICFLAG))
endif
# We need to keep track of both the CC PIE flag (above) as
# well as the LD PIE flag (below) because we can't rely on
-# gcc passing -pie if we used -fPIE
+# gcc passing -pie if we used -fPIE. We need to directly use -pie
+# instead of -Wl,-pie as gcc picks up the wrong startfile/endfile
ifndef LDPIEFLAG
-export LDPIEFLAG:=$(shell $(LD) --help 2>/dev/null | grep -q -- -pie && echo "-Wl,-pie")
+export LDPIEFLAG:=$(shell $(LD) --help 2>/dev/null | grep -q -- -pie && echo "-pie")
endif
# Check for AS_NEEDED support in linker script (binutils>=2.16.1 has it)