diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-06-21 14:17:06 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-06-21 19:41:19 -0700 |
commit | 0aa71cbccd8c6b2a9bdf39614e9e073762e4b777 (patch) | |
tree | 700f625efec80460cd451b90586d77268632ec5d | |
parent | 062279c4a655f4d44a3a4426b8651e9119618e94 (diff) | |
download | binutils-gdb-users/hjl/pr20283.tar.gz |
gold: Add a linker configure option --enable-relrousers/hjl/pr20283
Add a configure option --enable-relro to decide whether -z relro should
be enabled by default. Enable it if --disable-relro isn't specified.
PR ld/20283
* NEWS: Mention --enable-relro.
* configure.ac: Add --enable-relro.
(DEFAULT_LD_Z_RELRO): New. Set by --enable-relro and default
to 1.
* config.in: Regenerated.
* configure: Likewise.
* options.h (General_options::relro): Default to
DEFAULT_LD_Z_RELRO.
-rw-r--r-- | gold/NEWS | 3 | ||||
-rw-r--r-- | gold/config.in | 3 | ||||
-rwxr-xr-x | gold/configure | 20 | ||||
-rw-r--r-- | gold/configure.ac | 16 | ||||
-rw-r--r-- | gold/options.h | 2 |
5 files changed, 43 insertions, 1 deletions
diff --git a/gold/NEWS b/gold/NEWS index 6f2cf3fbe85..aef63686081 100644 --- a/gold/NEWS +++ b/gold/NEWS @@ -1,5 +1,8 @@ Changes in 1.12: +* Add a configure option --enable-relro to decide whether -z relro should + be enabled by default. + * Add support for s390, MIPS, AArch64, and TILE-Gx architectures. * Add support for STT_GNU_IFUNC symbols. diff --git a/gold/config.in b/gold/config.in index 88e8712c75c..d9f7b76f29a 100644 --- a/gold/config.in +++ b/gold/config.in @@ -10,6 +10,9 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD +/* Define to 1 if you want to enable -z relro in ELF linker by default. */ +#undef DEFAULT_LD_Z_RELRO + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS diff --git a/gold/configure b/gold/configure index 6d4f2349bef..3af8c863984 100755 --- a/gold/configure +++ b/gold/configure @@ -792,6 +792,7 @@ with_sysroot enable_gold enable_threads enable_plugins +enable_relro enable_targets with_lib_path enable_dependency_tracking @@ -1441,6 +1442,7 @@ Optional Features: --enable-gold[=ARG] build gold [ARG={default,yes,no}] --enable-threads multi-threaded linking --enable-plugins linker plugins + --enable-relro enable -z relro in ELF linker by default --enable-targets alternative target configurations --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors @@ -3353,6 +3355,24 @@ else 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. +# Check whether --enable-relro was given. +if test "${enable_relro+set}" = set; then : + enableval=$enable_relro; case "${enableval}" in + no) ac_default_ld_z_relro=0 ;; +esac +fi +if test "${ac_default_ld_z_relro}" = unset; then + ac_default_ld_z_relro=1 +fi + +cat >>confdefs.h <<_ACEOF +#define DEFAULT_LD_Z_RELRO $ac_default_ld_z_relro +_ACEOF + + # Check whether --enable-targets was given. if test "${enable_targets+set}" = set; then : enableval=$enable_targets; case "${enableval}" in diff --git a/gold/configure.ac b/gold/configure.ac index 695a2fdcc79..304d51ad475 100644 --- a/gold/configure.ac +++ b/gold/configure.ac @@ -114,6 +114,22 @@ if test "$plugins" = "yes"; then fi AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes") +# 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. +AC_ARG_ENABLE(relro, + AS_HELP_STRING([--enable-relro], + [enable -z relro in ELF linker by default]), +[case "${enableval}" in + no) ac_default_ld_z_relro=0 ;; +esac])dnl +if test "${ac_default_ld_z_relro}" = unset; then + ac_default_ld_z_relro=1 +fi +AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO, + $ac_default_ld_z_relro, + [Define to 1 if you want to enable -z relro in ELF linker by default.]) + AC_ARG_ENABLE([targets], [ --enable-targets alternative target configurations], [case "${enableval}" in diff --git a/gold/options.h b/gold/options.h index 877e6d1bfca..23c9658be3a 100644 --- a/gold/options.h +++ b/gold/options.h @@ -1336,7 +1336,7 @@ class General_options DEFINE_bool(origin, options::DASH_Z, '\0', false, N_("Mark DSO to indicate that needs immediate $ORIGIN " "processing at runtime"), NULL); - DEFINE_bool(relro, options::DASH_Z, '\0', false, + DEFINE_bool(relro, options::DASH_Z, '\0', DEFAULT_LD_Z_RELRO, N_("Where possible mark variables read-only after relocation"), N_("Don't mark variables read-only after relocation")); DEFINE_bool(text, options::DASH_Z, '\0', false, |