Update year range in copyright notice of binutils files
[deliverable/binutils-gdb.git] / ld / emultempl / aarch64elf.em
index 75f04a7ec82983dcaec223b553bbcd7bc784744b..629e1cc3ce87da7b74575dd7ce2485918b94f618 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-2018 Free Software Foundation, Inc.
 #   Contributed by ARM Ltd.
 #
 # This file is part of the GNU Binutils.
@@ -31,6 +31,8 @@ static int no_enum_size_warning = 0;
 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)
@@ -41,6 +43,8 @@ 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.check_relocs_after_open_input = TRUE;
+  link_info.relro = DEFAULT_LD_Z_RELRO;
 }
 
 static void
@@ -52,10 +56,10 @@ aarch64_elf_before_allocation (void)
     {
       /* Here we rummage through the found bfds to collect information.  */
       LANG_FOR_EACH_INPUT_STATEMENT (is)
-       {
-          /* Initialise mapping tables for code/data.  */
-          bfd_elf${ELFSIZE}_aarch64_init_maps (is->the_bfd);
-       }
+      {
+       /* Initialise mapping tables for code/data.  */
+       bfd_elf${ELFSIZE}_aarch64_init_maps (is->the_bfd);
+      }
     }
 
   /* Call the standard elf routine.  */
@@ -186,7 +190,7 @@ elf${ELFSIZE}_aarch64_add_stub_section (const char *stub_sec_name,
     return stub_sec;
 
  err_ret:
-  einfo ("%X%P: can not make stub section: %E\n");
+  einfo (_("%X%P: can not make stub section: %E\n"));
   return NULL;
 }
 
@@ -229,7 +233,7 @@ gld${EMULATION_NAME}_after_allocation (void)
   ret = bfd_elf_discard_info (link_info.output_bfd, & link_info);
   if (ret < 0)
     {
-      einfo ("%X%P: .eh_frame/.stab edit: %E\n");
+      einfo (_("%X%P: .eh_frame/.stab edit: %E\n"));
       return;
     }
   else if (ret > 0)
@@ -237,7 +241,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);
@@ -245,7 +249,8 @@ gld${EMULATION_NAME}_after_allocation (void)
        {
          if (ret < 0)
            {
-             einfo ("%X%P: could not compute sections lists for stub generation: %E\n");
+             einfo (_("%X%P: could not compute sections lists "
+                      "for stub generation: %E\n"));
              return;
            }
 
@@ -259,7 +264,7 @@ gld${EMULATION_NAME}_after_allocation (void)
                                          & elf${ELFSIZE}_aarch64_add_stub_section,
                                          & gldaarch64_layout_sections_again))
            {
-             einfo ("%X%P: cannot size stub section: %E\n");
+             einfo (_("%X%P: cannot size stub section: %E\n"));
              return;
            }
        }
@@ -272,13 +277,13 @@ 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)
        {
          if (! elf${ELFSIZE}_aarch64_build_stubs (& link_info))
-           einfo ("%X%P: can not build stubs: %E\n");
+           einfo (_("%X%P: can not build stubs: %E\n"));
        }
     }
 
@@ -296,14 +301,17 @@ aarch64_elf_create_output_section_statements (void)
         These will only be created if the output format is an arm format,
         hence we do not support linking and changing output formats at the
         same time.  Use a link followed by objcopy to change output formats.  */
-      einfo ("%F%X%P: error: Cannot change output format whilst linking AArch64 binaries.\n");
+      einfo (_("%F%X%P: error: Cannot change output format "
+              "whilst linking AArch64 binaries.\n"));
       return;
     }
 
   bfd_elf${ELFSIZE}_aarch64_set_options (link_info.output_bfd, &link_info,
                                 no_enum_size_warning,
                                 no_wchar_size_warning,
-                                pic_veneer, fix_erratum_835769);
+                                pic_veneer,
+                                fix_erratum_835769, fix_erratum_843419,
+                                no_apply_dynamic_relocs);
 
   stub_file = lang_add_input_file ("linker stubs",
                                   lang_input_file_is_fake_enum,
@@ -314,7 +322,7 @@ aarch64_elf_create_output_section_statements (void)
                              bfd_get_arch (link_info.output_bfd),
                              bfd_get_mach (link_info.output_bfd)))
     {
-      einfo ("%X%P: can not create BFD %E\n");
+      einfo (_("%X%P: can not create BFD %E\n"));
       return;
     }
 
@@ -350,9 +358,11 @@ EOF
 PARSE_AND_LIST_PROLOGUE='
 #define OPTION_NO_ENUM_SIZE_WARNING    309
 #define OPTION_PIC_VENEER              310
-#define OPTION_STUBGROUP_SIZE           311
+#define OPTION_STUBGROUP_SIZE          311
 #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
@@ -364,6 +374,8 @@ PARSE_AND_LIST_LONGOPTS='
   { "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
   { "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='
@@ -382,6 +394,8 @@ PARSE_AND_LIST_OPTIONS='
                            the linker should choose suitable defaults.\n"
                   ));
   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='
@@ -405,12 +419,20 @@ PARSE_AND_LIST_ARGS_CASES='
       fix_erratum_835769 = 1;
       break;
 
+    case OPTION_FIX_ERRATUM_843419:
+      fix_erratum_843419 = 1;
+      break;
+
+    case OPTION_NO_APPLY_DYNAMIC_RELOCS:
+      no_apply_dynamic_relocs = 1;
+      break;
+
     case OPTION_STUBGROUP_SIZE:
       {
        const char *end;
 
-        group_size = bfd_scan_vma (optarg, &end, 0);
-        if (*end)
+       group_size = bfd_scan_vma (optarg, &end, 0);
+       if (*end)
          einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
       }
       break;
This page took 0.027073 seconds and 4 git commands to generate.