aboutsummaryrefslogtreecommitdiff
path: root/bfd/config.in
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2018-02-27 11:34:20 -0800
committerH.J. Lu <hjl.tools@gmail.com>2018-02-27 11:34:29 -0800
commitf6aec96dce1ddbd8961a3aa8a2925db2021719bb (patch)
tree0837083a3f8011754f0fa415afa4a6fb27795580 /bfd/config.in
parent55089490f79ce1ddb9610fd6abeeaf896825fb71 (diff)
downloadgdb-f6aec96dce1ddbd8961a3aa8a2925db2021719bb.zip
gdb-f6aec96dce1ddbd8961a3aa8a2925db2021719bb.tar.gz
gdb-f6aec96dce1ddbd8961a3aa8a2925db2021719bb.tar.bz2
ld: Add --enable-separate-code
This patch adds --enable-separate-code to ld configure to turn on -z separate-code by default and enables it by default for Linux/x86. This avoids mixing code pages with data to improve cache performance as well as security. To reduce x86-64 executable and shared object sizes, the maximum page size is reduced from 2MB to 4KB when -z separate-code is turned on by default. Note: -z max-page-size= can be used to set the maximum page size. We compared SPEC CPU 2017 performance before and after this change on Skylake server. There are no any significant performance changes. Everything is mostly below +/-1%. bfd/ * config.in: Regenerated. * configure: Likewise. * configure.ac: Add --enable-separate-code. (DEFAULT_LD_Z_SEPARATE_CODE): New AC_DEFINE_UNQUOTED. Default to 1 for Linux/x86 targets, * elf64-x86-64.c (ELF_MAXPAGESIZE): Set to 0x1000 if DEFAULT_LD_Z_SEPARATE_CODE is 1. ld/ * NEWS: Mention --enable-separate-code. * configure.ac: Add --enable-separate-code. (DEFAULT_LD_Z_SEPARATE_CODE): New AC_DEFINE_UNQUOTED. * configure.tgt: Default ac_default_ld_z_separate_code to 1 for Linux/x86 targets. * config.in: Regenerated. * configure: Likewise. * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set link_info.separate_code DEFAULT_LD_Z_SEPARATE_CODE.
Diffstat (limited to 'bfd/config.in')
-rw-r--r--bfd/config.in4
1 files changed, 4 insertions, 0 deletions
diff --git a/bfd/config.in b/bfd/config.in
index 75a5ff0..186741d 100644
--- a/bfd/config.in
+++ b/bfd/config.in
@@ -10,6 +10,10 @@
/* Name of host specific core header file to include in elf.c. */
#undef CORE_HEADER
+/* Define to 1 if you want to enable -z separate-code in ELF linker by
+ default. */
+#undef DEFAULT_LD_Z_SEPARATE_CODE
+
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS