aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog10
-rw-r--r--bfd/config.in4
-rwxr-xr-xbfd/configure33
-rw-r--r--bfd/configure.ac24
-rw-r--r--bfd/elf64-x86-64.c12
5 files changed, 79 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 5c2a888cd00..59f7c9cfd48 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2018-02-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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.
+
2018-02-27 Nick Clifton <nickc@redhat.com>
* aout-cris.c (swap_ext_reloc_out): Standadize error/warning
diff --git a/bfd/config.in b/bfd/config.in
index 75a5ff015ed..186741d6128 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
diff --git a/bfd/configure b/bfd/configure
index 6c2b24ebe3d..d1fe335530c 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -793,6 +793,7 @@ enable_targets
enable_64_bit_archive
with_mmap
enable_secureplt
+enable_separate_code
enable_leading_mingw64_underscores
with_separate_debug_dir
with_pkgversion
@@ -1446,6 +1447,7 @@ Optional Features:
--enable-targets alternative target configurations
--enable-64-bit-archive force 64-bit archives
--enable-secureplt Default to creating read-only plt entries
+ --enable-separate-code enable -z separate-code in ELF linker by default
--enable-leading-mingw64-underscores
Enable leading underscores on 64 bit mingw targets
--enable-werror treat compile warnings as errors
@@ -11428,7 +11430,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11431 "configure"
+#line 11433 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11534,7 +11536,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11537 "configure"
+#line 11539 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12171,6 +12173,33 @@ $as_echo "#define USE_SECUREPLT 1" >>confdefs.h
fi
+# Decide if -z separate-code should be enabled in ELF linker by default.
+ac_default_ld_z_separate_code=unset
+# Check whether --enable-separate-code was given.
+if test "${enable_separate_code+set}" = set; then :
+ enableval=$enable_separate_code; case "${enableval}" in
+ yes) ac_default_ld_z_separate_code=1 ;;
+ no) ac_default_ld_z_separate_code=0 ;;
+esac
+fi
+
+# Enable -z separate-code by default for Linux/x86.
+case "${target}" in
+i3-786-*-linux-* | x86_64-*-linux-*)
+ if test ${ac_default_ld_z_separate_code} = unset; then
+ ac_default_ld_z_separate_code=1
+ fi
+ ;;
+esac
+if test "${ac_default_ld_z_separate_code}" = unset; then
+ ac_default_ld_z_separate_code=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_LD_Z_SEPARATE_CODE $ac_default_ld_z_separate_code
+_ACEOF
+
+
# Check whether --enable-leading-mingw64-underscores was given.
if test "${enable_leading_mingw64_underscores+set}" = set; then :
enableval=$enable_leading_mingw64_underscores;
diff --git a/bfd/configure.ac b/bfd/configure.ac
index 2342f3faeac..20e2c022e8a 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -97,6 +97,30 @@ if test $use_secureplt = true; then
[Define if we should default to creating read-only plt entries])
fi
+# Decide if -z separate-code should be enabled in ELF linker by default.
+ac_default_ld_z_separate_code=unset
+AC_ARG_ENABLE(separate-code,
+ AS_HELP_STRING([--enable-separate-code],
+ [enable -z separate-code in ELF linker by default]),
+[case "${enableval}" in
+ yes) ac_default_ld_z_separate_code=1 ;;
+ no) ac_default_ld_z_separate_code=0 ;;
+esac])
+# Enable -z separate-code by default for Linux/x86.
+case "${target}" in
+i[3-7]86-*-linux-* | x86_64-*-linux-*)
+ if test ${ac_default_ld_z_separate_code} = unset; then
+ ac_default_ld_z_separate_code=1
+ fi
+ ;;
+esac
+if test "${ac_default_ld_z_separate_code}" = unset; then
+ ac_default_ld_z_separate_code=0
+fi
+AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_SEPARATE_CODE,
+ $ac_default_ld_z_separate_code,
+ [Define to 1 if you want to enable -z separate-code in ELF linker by default.])
+
AC_ARG_ENABLE(leading-mingw64-underscores,
AS_HELP_STRING([--enable-leading-mingw64-underscores],
[Enable leading underscores on 64 bit mingw targets]),
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 02a3d37e43c..7016964aceb 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -4942,7 +4942,11 @@ elf_x86_64_special_sections[]=
#define ELF_ARCH bfd_arch_i386
#define ELF_TARGET_ID X86_64_ELF_DATA
#define ELF_MACHINE_CODE EM_X86_64
-#define ELF_MAXPAGESIZE 0x200000
+#if DEFAULT_LD_Z_SEPARATE_CODE
+# define ELF_MAXPAGESIZE 0x1000
+#else
+# define ELF_MAXPAGESIZE 0x200000
+#endif
#define ELF_MINPAGESIZE 0x1000
#define ELF_COMMONPAGESIZE 0x1000
@@ -5335,7 +5339,11 @@ elf64_l1om_elf_object_p (bfd *abfd)
#undef ELF_MAXPAGESIZE
#undef ELF_MINPAGESIZE
#undef ELF_COMMONPAGESIZE
-#define ELF_MAXPAGESIZE 0x200000
+#if DEFAULT_LD_Z_SEPARATE_CODE
+# define ELF_MAXPAGESIZE 0x1000
+#else
+# define ELF_MAXPAGESIZE 0x200000
+#endif
#define ELF_MINPAGESIZE 0x1000
#define ELF_COMMONPAGESIZE 0x1000
#undef elf_backend_plt_alignment