+2013-01-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (HOSTING_SCRT0): New.
+
+ * configure.host (HOSTING_SCRT0): New. Used for PIE.
+
+ * configure.in (HOSTING_SCRT0): New AC_SUBST.
+
+ * Makefile.in: Regenerated.
+ * configure: Likewise.
+
2013-01-18 Mike Frysinger <vapier@gentoo.org>
* NEWS: Mention change in behavior with --enable-new-dtags.
#stuff for self hosting (can be overridden in config file).
HOSTING_CRT0 = @HOSTING_CRT0@
+HOSTING_SCRT0 = @HOSTING_SCRT0@
HOSTING_LIBS = @HOSTING_LIBS@
HOSTING_EMU = -m $(EMUL)
#stuff for self hosting (can be overridden in config file).
HOSTING_CRT0 = @HOSTING_CRT0@
HOSTING_LIBS = @HOSTING_LIBS@
+HOSTING_SCRT0 = @HOSTING_SCRT0@
INCINTL = @INCINTL@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
ENABLE_PLUGINS_TRUE
NATIVE_LIB_DIRS
HOSTING_LIBS
+HOSTING_SCRT0
HOSTING_CRT0
HDEFINES
do_compare
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12188 "configure"
+#line 12189 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12294 "configure"
+#line 12295 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
+
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`
*-*-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_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`'
;;
;;
esac
+
+# Provide default HOSTING_SCRT0. Each host should define a proper one
+# if needed.
+if test -z "$HOSTING_SCRT0"; then
+ HOSTING_SCRT0="$HOSTING_CRT0"
+fi
AC_SUBST(HDEFINES)
AC_SUBST(HOSTING_CRT0)
+AC_SUBST(HOSTING_SCRT0)
AC_SUBST(HOSTING_LIBS)
AC_SUBST(NATIVE_LIB_DIRS)
+2013-01-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/default.exp (get_target_emul): Also set HOSTING_SCRT0.
+
+ * lib/ld-lib.exp (default_ld_link): Use HOSTING_SCRT0 for -pie.
+
2013-01-18 H.J. Lu <hongjiu.lu@intel.com>
* ld-size/size-10.rd: Updated.
}
if [isnative] {
- foreach x {HOSTING_CRT0 HOSTING_LIBS} {
+ foreach x {HOSTING_CRT0 HOSTING_SCRT0 HOSTING_LIBS} {
get_link_files $x
}
} else {
- foreach x {HOSTING_CRT0 HOSTING_LIBS} { set $x "" }
+ foreach x {HOSTING_CRT0 HOSTING_SCRT0 HOSTING_LIBS} { set $x "" }
}
if ![info exists HOSTING_EMU] { set HOSTING_EMU "-m [get_target_emul]" }
proc default_ld_link { ld target objects } {
global HOSTING_EMU
global HOSTING_CRT0
+ global HOSTING_SCRT0
global HOSTING_LIBS
global LIBS
global host_triplet
global link_output
global exec_output
- set objs "$HOSTING_CRT0 $objects"
+ if { [ string match "* -pie *" $objects ] } {
+ set objs "$HOSTING_SCRT0 $objects"
+ } else {
+ set objs "$HOSTING_CRT0 $objects"
+ }
set libs "$LIBS $HOSTING_LIBS"
if [is_endian_output_format $objects] then {