Revert "Enable relro by default for AArch64, ARM and SCORE."
[external/binutils.git] / ld / emultempl / aarch64elf.em
index 313263a..a17553a 100644 (file)
@@ -1,5 +1,5 @@
 # This shell script emits a C file. -*- C -*-
-#   Copyright (C) 2009-2015 Free Software Foundation, Inc.
+#   Copyright (C) 2009-2016 Free Software Foundation, Inc.
 #   Contributed by ARM Ltd.
 #
 # This file is part of the GNU Binutils.
@@ -32,6 +32,7 @@ static int no_wchar_size_warning = 0;
 static int pic_veneer = 0;
 static int fix_erratum_835769 = 0;
 static int fix_erratum_843419 = 0;
+static int no_apply_dynamic_relocs = 0;
 
 static void
 gld${EMULATION_NAME}_before_parse (void)
@@ -238,7 +239,7 @@ gld${EMULATION_NAME}_after_allocation (void)
 
   /* If generating a relocatable output file, then we don't
      have to examine the relocs.  */
-  if (stub_file != NULL && !link_info.relocatable)
+  if (stub_file != NULL && !bfd_link_relocatable (&link_info))
     {
       ret = elf${ELFSIZE}_aarch64_setup_section_lists (link_info.output_bfd,
                                                       &link_info);
@@ -273,7 +274,7 @@ gld${EMULATION_NAME}_after_allocation (void)
 static void
 gld${EMULATION_NAME}_finish (void)
 {
-  if (! link_info.relocatable)
+  if (!bfd_link_relocatable (&link_info))
     {
       /* Now build the linker stubs.  */
       if (stub_file->the_bfd->sections != NULL)
@@ -305,7 +306,8 @@ aarch64_elf_create_output_section_statements (void)
                                 no_enum_size_warning,
                                 no_wchar_size_warning,
                                 pic_veneer,
-                                fix_erratum_835769, fix_erratum_843419);
+                                fix_erratum_835769, fix_erratum_843419,
+                                no_apply_dynamic_relocs);
 
   stub_file = lang_add_input_file ("linker stubs",
                                   lang_input_file_is_fake_enum,
@@ -356,6 +358,7 @@ PARSE_AND_LIST_PROLOGUE='
 #define OPTION_NO_WCHAR_SIZE_WARNING   312
 #define OPTION_FIX_ERRATUM_835769      313
 #define OPTION_FIX_ERRATUM_843419      314
+#define OPTION_NO_APPLY_DYNAMIC_RELOCS 315
 '
 
 PARSE_AND_LIST_SHORTOPTS=p
@@ -368,6 +371,7 @@ PARSE_AND_LIST_LONGOPTS='
   { "no-wchar-size-warning", no_argument, NULL, OPTION_NO_WCHAR_SIZE_WARNING},
   { "fix-cortex-a53-835769", no_argument, NULL, OPTION_FIX_ERRATUM_835769},
   { "fix-cortex-a53-843419", no_argument, NULL, OPTION_FIX_ERRATUM_843419},
+  { "no-apply-dynamic-relocs", no_argument, NULL, OPTION_NO_APPLY_DYNAMIC_RELOCS},
 '
 
 PARSE_AND_LIST_OPTIONS='
@@ -387,6 +391,7 @@ PARSE_AND_LIST_OPTIONS='
                   ));
   fprintf (file, _("  --fix-cortex-a53-835769      Fix erratum 835769\n"));
   fprintf (file, _("  --fix-cortex-a53-843419      Fix erratum 843419\n"));
+  fprintf (file, _("  --no-apply-dynamic-relocs           Do not apply link-time values for dynamic relocations\n"));
 '
 
 PARSE_AND_LIST_ARGS_CASES='
@@ -414,6 +419,10 @@ PARSE_AND_LIST_ARGS_CASES='
       fix_erratum_843419 = 1;
       break;
 
+    case OPTION_NO_APPLY_DYNAMIC_RELOCS:
+      no_apply_dynamic_relocs = 1;
+      break;
+
     case OPTION_STUBGROUP_SIZE:
       {
        const char *end;