aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-06-22 05:39:22 -0700
committerH.J. Lu <hjl.tools@gmail.com>2016-06-22 05:39:39 -0700
commit6b1edb94fedc7103b4929354d27304d0bd756f49 (patch)
tree8ec307e7bd06be77c1e3ee1f0035494f54520297
parent647e4d46495f2bfb0950fd1066c8a660173cca40 (diff)
downloadgdb-6b1edb94fedc7103b4929354d27304d0bd756f49.zip
gdb-6b1edb94fedc7103b4929354d27304d0bd756f49.tar.gz
gdb-6b1edb94fedc7103b4929354d27304d0bd756f49.tar.bz2
gold: Add a linker configure option --enable-relro
Add a configure option --enable-relro to decide whether -z relro should be enabled by default. Default to yes. 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/ChangeLog12
-rw-r--r--gold/NEWS3
-rw-r--r--gold/config.in3
-rwxr-xr-xgold/configure21
-rw-r--r--gold/configure.ac17
-rw-r--r--gold/options.h2
6 files changed, 57 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 5177da2..e8980b3 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,15 @@
+2016-06-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ 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.
+
2016-06-20 Cary Coutant <ccoutant@gmail.com>
* NEWS: Add new features in 1.12.
diff --git a/gold/NEWS b/gold/NEWS
index 6f2cf3f..a400489 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. Default to yes.
+
* 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 88e8712..d9f7b76 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 6d4f234..a40b2b5 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,25 @@ 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
+ yes) ac_default_ld_z_relro=1 ;;
+ 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 695a2fd..90e2c22 100644
--- a/gold/configure.ac
+++ b/gold/configure.ac
@@ -114,6 +114,23 @@ 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
+ yes) ac_default_ld_z_relro=1 ;;
+ 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 877e6d1..23c9658 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,