This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Commit: Allow relro to be enabled by default on AArch64, ARM and Score.
- From: Nick Clifton <nickc at redhat dot com>
- To: binutils at sourceware dot org
- Date: Fri, 19 Aug 2016 09:27:37 +0100
- Subject: Commit: Allow relro to be enabled by default on AArch64, ARM and Score.
- Authentication-results: sourceware.org; auth=none
Hi Guys,
Despite the linker's configure script enabling relro by default for
most linux targets, and supporting a --enable-relro option for all
targets, a few were not in fact enabling relro unless the "-z relro"
command line option was used. This was due to the fact that these
targets define their own before_parse() emulation function, and they
were not initializing the relro field in the link_info structure.
Fixed with the following patch, tested all over the place.
Cheers
Nick
ld/ChangeLog
2016-08-19 Nick Clifton <nickc@redhat.com>
* emultempl/aarch64elf.em (before_parse): Initialise the relro
field in the link_info structure.
* emultempl/armelf.em (before_parse): Likewise.
* emultempl/linux.em (before_parse): Likewise.
* emultempl/scoreelf.em (before_parse): Likewise.
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index a17553a..9f2c349 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -43,6 +43,7 @@ gld${EMULATION_NAME}_before_parse (void)
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
+ link_info.relro = DEFAULT_LD_Z_RELRO;
}
static void
diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
index c21f6a8..2678740 100644
--- a/ld/emultempl/armelf.em
+++ b/ld/emultempl/armelf.em
@@ -53,6 +53,7 @@ gld${EMULATION_NAME}_before_parse (void)
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
+ link_info.relro = DEFAULT_LD_Z_RELRO;
}
static void
diff --git a/ld/emultempl/linux.em b/ld/emultempl/linux.em
index c28e978..64a9130 100644
--- a/ld/emultempl/linux.em
+++ b/ld/emultempl/linux.em
@@ -50,6 +50,7 @@ gld${EMULATION_NAME}_before_parse (void)
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
input_flags.dynamic = TRUE;
config.has_shared = TRUE;
+ link_info.relro = DEFAULT_LD_Z_RELRO;
}
/* Try to open a dynamic archive. This is where we know that Linux
diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em
index 6433365..7df7f5f 100644
--- a/ld/emultempl/scoreelf.em
+++ b/ld/emultempl/scoreelf.em
@@ -39,6 +39,7 @@ gld${EMULATION_NAME}_before_parse (void)
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
+ link_info.relro = DEFAULT_LD_Z_RELRO;
}
static void