This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] PR ld/20283: gold: Add a linker configure option --enable-relro


Add a configure option --enable-relro to decide whether -z relro should
be enabled by default.  Enable it if --disable-relro isn't specified.

OK for master?

H.J.
---
	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.
---
 gold/NEWS         |  3 +++
 gold/config.in    |  3 +++
 gold/configure    | 20 ++++++++++++++++++++
 gold/configure.ac | 16 ++++++++++++++++
 gold/options.h    |  2 +-
 5 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/gold/NEWS b/gold/NEWS
index 6f2cf3f..aef6368 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 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..8a12fd5 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 695a2fd..f07db1d 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 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,
-- 
2.5.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]