[AArch64] Cortex-A53 erratum 835769 linker workaround
[deliverable/binutils-gdb.git] / ld / emultempl / aarch64elf.em
index bb589012061ed3da268887bc290d5cb874a84ab6..42e8056f67e364065bb961a2394925bded1fb4e8 100644 (file)
@@ -30,6 +30,7 @@ fragment <<EOF
 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 void
 gld${EMULATION_NAME}_before_parse (void)
@@ -302,7 +303,7 @@ aarch64_elf_create_output_section_statements (void)
   bfd_elf${ELFSIZE}_aarch64_set_options (link_info.output_bfd, &link_info,
                                 no_enum_size_warning,
                                 no_wchar_size_warning,
-                                pic_veneer);
+                                pic_veneer, fix_erratum_835769);
 
   stub_file = lang_add_input_file ("linker stubs",
                                   lang_input_file_is_fake_enum,
@@ -351,6 +352,7 @@ PARSE_AND_LIST_PROLOGUE='
 #define OPTION_PIC_VENEER              310
 #define OPTION_STUBGROUP_SIZE           311
 #define OPTION_NO_WCHAR_SIZE_WARNING   312
+#define OPTION_FIX_ERRATUM_835769      313
 '
 
 PARSE_AND_LIST_SHORTOPTS=p
@@ -361,6 +363,7 @@ PARSE_AND_LIST_LONGOPTS='
   { "pic-veneer", no_argument, NULL, OPTION_PIC_VENEER},
   { "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},
 '
 
 PARSE_AND_LIST_OPTIONS='
@@ -378,6 +381,7 @@ PARSE_AND_LIST_OPTIONS='
                            after each stub section.  Values of +/-1 indicate\n\
                            the linker should choose suitable defaults.\n"
                   ));
+  fprintf (file, _("  --fix-cortex-a53-835769      Fix erratum 835769\n"));
 '
 
 PARSE_AND_LIST_ARGS_CASES='
@@ -397,6 +401,10 @@ PARSE_AND_LIST_ARGS_CASES='
       pic_veneer = 1;
       break;
 
+    case OPTION_FIX_ERRATUM_835769:
+      fix_erratum_835769 = 1;
+      break;
+
     case OPTION_STUBGROUP_SIZE:
       {
        const char *end;
This page took 0.023749 seconds and 4 git commands to generate.