From 6734f10ae9af6cfd47e70baa2cd3e326afabe5ed Mon Sep 17 00:00:00 2001 From: Slava Barinov Date: Mon, 5 Jun 2017 09:27:38 +0930 Subject: [PATCH] Introduce --enable-new-dtags configure option. This option switches on ld.bfd --enable-new-dtags by default. * configure.ac: Add --enable-new-dtags option. * ldmain.c: Set link_info.new_dtags to 1 if when --enable-new-dtags is switched on. * configure: Regenerate. * config.in: Regenerate. --- ld/ChangeLog | 14 +++++++++++--- ld/config.in | 4 ++++ ld/configure | 26 ++++++++++++++++++++++++-- ld/configure.ac | 18 ++++++++++++++++++ ld/ldmain.c | 3 +++ 5 files changed, 60 insertions(+), 5 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index ee9fff0c60..2e63b26bc2 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2017-06-05 Slava Barinov + + * configure.ac: Add --enable-new-dtags option. + * ldmain.c: Set link_info.new_dtags to 1 if when --enable-new-dtags is + switched on. + * configure: Regenerate. + * config.in: Regenerate. + 2017-06-02 H.J. Lu * emulparams/call_nop.sh: Remove -z prefix-nop. @@ -804,9 +812,9 @@ 2017-02-27 Georg-Johann Lay PR target/20849 - * scripttempl/avrtiny.sc (__RODATA_PM_OFFSET__): New define. - (.rodata): New section. - (.data): Remove .rodata*. + * scripttempl/avrtiny.sc (__RODATA_PM_OFFSET__): New define. + (.rodata): New section. + (.data): Remove .rodata*. 2017-02-25 Alan Modra diff --git a/ld/config.in b/ld/config.in index 2c6d698b6c..5d91380ec2 100644 --- a/ld/config.in +++ b/ld/config.in @@ -13,6 +13,10 @@ /* Define to 1 if you want to enable -z relro in ELF linker by default. */ #undef DEFAULT_LD_Z_RELRO +/* Define to 1 if you want to set DT_RUNPATH instead of DT_RPATH by default. + */ +#undef DEFAULT_NEW_DTAGS + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS diff --git a/ld/configure b/ld/configure index dd94301ad0..919fbc2005 100755 --- a/ld/configure +++ b/ld/configure @@ -788,6 +788,7 @@ with_sysroot enable_gold enable_got enable_compressed_debug_sections +enable_new_dtags enable_relro enable_werror enable_build_warnings @@ -1447,6 +1448,7 @@ Optional Features: multigot) --enable-compressed-debug-sections={all,ld,none} compress debug sections by default] + --enable-new-dtags set DT_RUNPATH instead of DT_RPATH by default] --enable-relro enable -z relro in ELF linker by default --enable-werror treat compile warnings as errors --enable-build-warnings enable build-time compiler warnings @@ -11720,7 +11722,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11723 "configure" +#line 11725 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11826,7 +11828,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11829 "configure" +#line 11831 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15540,6 +15542,17 @@ if test "${enable_compressed_debug_sections+set}" = set; then : esac fi +# Decide setting DT_RUNPATH instead of DT_RPATH by default +ac_default_new_dtags=unset +# Provide a configure time option to override our default. +# Check whether --enable-new_dtags was given. +if test "${enable_new_dtags+set}" = set; then : + enableval=$enable_new_dtags; case "${enableval}" in + yes) ac_default_new_dtags=1 ;; + no) ac_default_new_dtags=0 ;; +esac +fi + # Decide if -z relro should be enabled in ELF linker by default. ac_default_ld_z_relro=unset # Provide a configure time option to override our default. @@ -17196,6 +17209,15 @@ $as_echo "#define DEFAULT_FLAG_COMPRESS_DEBUG 1" >>confdefs.h fi +if test "${ac_default_new_dtags}" = unset; then + ac_default_new_dtags=0 +fi + +cat >>confdefs.h <<_ACEOF +#define DEFAULT_NEW_DTAGS $ac_default_new_dtags +_ACEOF + + if test "${ac_default_ld_z_relro}" = unset; then ac_default_ld_z_relro=0 fi diff --git a/ld/configure.ac b/ld/configure.ac index f3a7f54814..4e2dc86b8e 100644 --- a/ld/configure.ac +++ b/ld/configure.ac @@ -155,6 +155,17 @@ AC_ARG_ENABLE(compressed_debug_sections, ,no, | ,none,) ac_default_compressed_debug_sections=no ;; esac])dnl +# Decide setting DT_RUNPATH instead of DT_RPATH by default +ac_default_new_dtags=unset +# Provide a configure time option to override our default. +AC_ARG_ENABLE(new_dtags, + AS_HELP_STRING([--enable-new-dtags], + [set DT_RUNPATH instead of DT_RPATH by default])], +[case "${enableval}" in + yes) ac_default_new_dtags=1 ;; + no) ac_default_new_dtags=0 ;; +esac])dnl + # Decide if -z relro should be enabled in ELF linker by default. ac_default_ld_z_relro=unset # Provide a configure time option to override our default. @@ -383,6 +394,13 @@ if test x$ac_default_compressed_debug_sections = xyes ; then AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.]) fi +if test "${ac_default_new_dtags}" = unset; then + ac_default_new_dtags=0 +fi +AC_DEFINE_UNQUOTED(DEFAULT_NEW_DTAGS, + $ac_default_new_dtags, + [Define to 1 if you want to set DT_RUNPATH instead of DT_RPATH by default.]) + if test "${ac_default_ld_z_relro}" = unset; then ac_default_ld_z_relro=0 fi diff --git a/ld/ldmain.c b/ld/ldmain.c index e049de36d7..045f3231fa 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -298,6 +298,9 @@ main (int argc, char **argv) #ifdef DEFAULT_FLAG_COMPRESS_DEBUG link_info.compress_debug = COMPRESS_DEBUG_GABI_ZLIB; #endif +#ifdef DEFAULT_NEW_DTAGS + link_info.new_dtags = TRUE; +#endif ldfile_add_arch (""); emulation = get_emulation (argc, argv); -- 2.34.1