summaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2013-11-26 11:17:08 -0800
committerH.J. Lu <hjl.tools@gmail.com>2013-11-26 11:17:08 -0800
commitb27caf75c311991772b316fe7c0eecfd5788eeaf (patch)
tree90f0032a6a93fcabbf0fe308995ade85e642783e /ld
parentd24a9f159c4b62ea5a64f619bd2090bbc98d8abd (diff)
downloadbinutils-gdb-b27caf75c311991772b316fe7c0eecfd5788eeaf.tar.gz
Add HOSTING_SLIBS and use it for -pie
ld/ PR ld/16259 * Makefile.am (HOSTING_SLIBS): New. * configure.host (HOSTING_SLIBS): New. Used for PIE. * configure.in (HOSTING_SLIBS): New AC_SUBST. * Makefile.in: Regenerated. * configure: Likewise. ld/testsuite/ PR ld/16259 * config/default.exp (get_target_emul): Also set HOSTING_SLIBS. * lib/ld-lib.exp (default_ld_link): Use HOSTING_SLIBS for -pie.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog9
-rw-r--r--ld/Makefile.am1
-rw-r--r--ld/Makefile.in1
-rwxr-xr-xld/configure6
-rw-r--r--ld/configure.host7
-rw-r--r--ld/configure.in1
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/config/default.exp4
-rw-r--r--ld/testsuite/lib/ld-lib.exp4
9 files changed, 34 insertions, 5 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4582adb1a4e..310006b6530 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,12 @@
+2013-11-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/16259
+ * Makefile.am (HOSTING_SLIBS): New.
+ * configure.host (HOSTING_SLIBS): New. Used for PIE.
+ * configure.in (HOSTING_SLIBS): New AC_SUBST.
+ * Makefile.in: Regenerated.
+ * configure: Likewise.
+
2013-11-22 Cory Fields <cory@coryfields.com>
* pe-dll.c (fill_edata): Only use a real timestamp if
diff --git a/ld/Makefile.am b/ld/Makefile.am
index b2b2a6ebe36..9b3d00fa7d0 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -88,6 +88,7 @@ POD2MAN = pod2man --center="GNU Development Tools" \
HOSTING_CRT0 = @HOSTING_CRT0@
HOSTING_SCRT0 = @HOSTING_SCRT0@
HOSTING_LIBS = @HOSTING_LIBS@
+HOSTING_SLIBS = @HOSTING_SLIBS@
HOSTING_EMU = -m $(EMUL)
# Setup the testing framework, if you have one
diff --git a/ld/Makefile.in b/ld/Makefile.in
index b95a3d103de..abb5adda725 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -231,6 +231,7 @@ HDEFINES = @HDEFINES@
HOSTING_CRT0 = @HOSTING_CRT0@
HOSTING_LIBS = @HOSTING_LIBS@
HOSTING_SCRT0 = @HOSTING_SCRT0@
+HOSTING_SLIBS = @HOSTING_SLIBS@
INCINTL = @INCINTL@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/ld/configure b/ld/configure
index 63d17e27be5..8452a138765 100755
--- a/ld/configure
+++ b/ld/configure
@@ -613,6 +613,7 @@ enable_initfini_array
ENABLE_PLUGINS_FALSE
ENABLE_PLUGINS_TRUE
NATIVE_LIB_DIRS
+HOSTING_SLIBS
HOSTING_LIBS
HOSTING_SCRT0
HOSTING_CRT0
@@ -12192,7 +12193,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12195 "configure"
+#line 12196 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12298,7 +12299,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12301 "configure"
+#line 12302 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -16208,6 +16209,7 @@ do_compare="$gcc_cv_prog_cmp_skip"
+
for ac_header in string.h strings.h stdlib.h unistd.h elf-hints.h limits.h locale.h sys/param.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
diff --git a/ld/configure.host b/ld/configure.host
index c56f67debeb..71f695d80aa 100644
--- a/ld/configure.host
+++ b/ld/configure.host
@@ -57,6 +57,7 @@ case "${host}" in
*-*-linux*)
HOSTING_CRT0='-dynamic-linker `${CC} --help --verbose 2>&1 | egrep "ld[^ ]*\.so" | sed -e "s,.*-dynamic-linker[ ][ ]*\(.*/ld[^ ]*\.so..\).*,\1,"` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} --print-file-name=crtbegin.o; fi`'
HOSTING_SCRT0='-dynamic-linker `${CC} --help --verbose 2>&1 | egrep "ld[^ ]*\.so" | sed -e "s,.*-dynamic-linker[ ][ ]*\(.*/ld[^ ]*\.so..\).*,\1,"` `${CC} --print-file-name=Scrt1.o` `${CC} --print-file-name=crti.o` `if [ -f ../gcc/crtbeginS.o ]; then echo ../gcc/crtbeginS.o; else ${CC} --print-file-name=crtbeginS.o; fi`'
+ HOSTING_SLIBS='-L`dirname \`${CC} --print-file-name=libc.so\`` '"$HOSTING_LIBS"' `if [ -f ../gcc/crtendS.o ]; then echo ../gcc/crtendS.o; else ${CC} --print-file-name=crtendS.o; fi` `${CC} --print-file-name=crtn.o`'
HOSTING_LIBS='-L`dirname \`${CC} --print-file-name=libc.so\`` '"$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`'
;;
@@ -249,3 +250,9 @@ esac
if test -z "$HOSTING_SCRT0"; then
HOSTING_SCRT0="$HOSTING_CRT0"
fi
+
+# Provide default HOSTING_SLIBS. Each host should define a proper one
+# if needed.
+if test -z "$HOSTING_SLIBS"; then
+ HOSTING_SLIBS="$HOSTING_SLIBS"
+fi
diff --git a/ld/configure.in b/ld/configure.in
index 2af3dfc2fd5..619c15161cf 100644
--- a/ld/configure.in
+++ b/ld/configure.in
@@ -187,6 +187,7 @@ AC_SUBST(HDEFINES)
AC_SUBST(HOSTING_CRT0)
AC_SUBST(HOSTING_SCRT0)
AC_SUBST(HOSTING_LIBS)
+AC_SUBST(HOSTING_SLIBS)
AC_SUBST(NATIVE_LIB_DIRS)
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h elf-hints.h limits.h locale.h sys/param.h)
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index bbd8eb35be0..3ccefaf19a2 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2013-11-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/16259
+ * config/default.exp (get_target_emul): Also set HOSTING_SLIBS.
+ * lib/ld-lib.exp (default_ld_link): Use HOSTING_SLIBS for -pie.
+
2013-11-26 Will Newton <will.newton@linaro.org>
* ld-aarch64/aarch64-elf.exp: Add ifunc-22.
diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp
index d540f1992a7..1d3ce6a03f1 100644
--- a/ld/testsuite/config/default.exp
+++ b/ld/testsuite/config/default.exp
@@ -139,11 +139,11 @@ proc get_target_emul {} {
}
if [isnative] {
- foreach x {HOSTING_CRT0 HOSTING_SCRT0 HOSTING_LIBS} {
+ foreach x {HOSTING_CRT0 HOSTING_SCRT0 HOSTING_LIBS HOSTING_SLIBS} {
get_link_files $x
}
} else {
- foreach x {HOSTING_CRT0 HOSTING_SCRT0 HOSTING_LIBS} { set $x "" }
+ foreach x {HOSTING_CRT0 HOSTING_SCRT0 HOSTING_LIBS HOSTING_SLIBS} { set $x "" }
}
if ![info exists HOSTING_EMU] { set HOSTING_EMU "-m [get_target_emul]" }
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 67c429ffec5..8df42ae85ed 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -179,6 +179,7 @@ proc default_ld_link { ld target objects } {
global HOSTING_CRT0
global HOSTING_SCRT0
global HOSTING_LIBS
+ global HOSTING_SLIBS
global LIBS
global host_triplet
global link_output
@@ -186,10 +187,11 @@ proc default_ld_link { ld target objects } {
if { [ string match "* -pie *" $objects ] } {
set objs "$HOSTING_SCRT0 $objects"
+ set libs "$LIBS $HOSTING_SLIBS"
} else {
set objs "$HOSTING_CRT0 $objects"
+ set libs "$LIBS $HOSTING_LIBS"
}
- set libs "$LIBS $HOSTING_LIBS"
if [is_endian_output_format $objects] then {
set flags [big_or_little_endian]