gdb/23712: Test case for multidictionary
[deliverable/binutils-gdb.git] / ld / emultempl / tic6xdsbt.em
index b6691fdcfcb0f6e5b98ba83c1c39d7810756e710..29b90e58a28387ea182d09b96ef7f742e7c00cba 100644 (file)
@@ -1,5 +1,5 @@
 # This shell script emits a C file. -*- C -*-
-#   Copyright (C) 2011-2014 Free Software Foundation, Inc.
+#   Copyright (C) 2011-2019 Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
@@ -36,19 +36,19 @@ static int merge_exidx_entries = -1;
 static int
 is_tic6x_target (void)
 {
-  extern const bfd_target bfd_elf32_tic6x_le_vec;
-  extern const bfd_target bfd_elf32_tic6x_be_vec;
-  extern const bfd_target bfd_elf32_tic6x_linux_le_vec;
-  extern const bfd_target bfd_elf32_tic6x_linux_be_vec;
-  extern const bfd_target bfd_elf32_tic6x_elf_le_vec;
-  extern const bfd_target bfd_elf32_tic6x_elf_be_vec;
-
-  return (link_info.output_bfd->xvec == &bfd_elf32_tic6x_le_vec
-         || link_info.output_bfd->xvec == &bfd_elf32_tic6x_be_vec
-         || link_info.output_bfd->xvec == &bfd_elf32_tic6x_linux_le_vec
-         || link_info.output_bfd->xvec == &bfd_elf32_tic6x_linux_be_vec
-         || link_info.output_bfd->xvec == &bfd_elf32_tic6x_elf_le_vec
-         || link_info.output_bfd->xvec == &bfd_elf32_tic6x_elf_be_vec);
+  extern const bfd_target tic6x_elf32_le_vec;
+  extern const bfd_target tic6x_elf32_be_vec;
+  extern const bfd_target tic6x_elf32_linux_le_vec;
+  extern const bfd_target tic6x_elf32_linux_be_vec;
+  extern const bfd_target tic6x_elf32_c6000_le_vec;
+  extern const bfd_target tic6x_elf32_c6000_be_vec;
+
+  return (link_info.output_bfd->xvec == &tic6x_elf32_le_vec
+         || link_info.output_bfd->xvec == &tic6x_elf32_be_vec
+         || link_info.output_bfd->xvec == &tic6x_elf32_linux_le_vec
+         || link_info.output_bfd->xvec == &tic6x_elf32_linux_be_vec
+         || link_info.output_bfd->xvec == &tic6x_elf32_c6000_le_vec
+         || link_info.output_bfd->xvec == &tic6x_elf32_c6000_be_vec);
 }
 
 /* Pass params to backend.  */
@@ -60,7 +60,7 @@ tic6x_after_open (void)
     {
       if (params.dsbt_index >= params.dsbt_size)
        {
-         einfo (_("%P%F: invalid --dsbt-index %d, outside DSBT size.\n"),
+         einfo (_("%F%P: invalid --dsbt-index %d, outside DSBT size\n"),
                 params.dsbt_index);
        }
       elf32_tic6x_setup (&link_info, &params);
@@ -95,14 +95,15 @@ static void
 gld${EMULATION_NAME}_after_allocation (void)
 {
   int layout_changed = 0;
+  int ret;
 
-  if (!link_info.relocatable)
+  if (!bfd_link_relocatable (&link_info))
     {
       /* Build a sorted list of input text sections, then use that to process
         the unwind table index.  */
       unsigned int list_size = 10;
       asection **sec_list = (asection **)
-          xmalloc (list_size * sizeof (asection *));
+       xmalloc (list_size * sizeof (asection *));
       unsigned int sec_count = 0;
 
       LANG_FOR_EACH_INPUT_STATEMENT (is)
@@ -129,7 +130,7 @@ gld${EMULATION_NAME}_after_allocation (void)
                    {
                      list_size *= 2;
                      sec_list = (asection **)
-                          xrealloc (sec_list, list_size * sizeof (asection *));
+                       xrealloc (sec_list, list_size * sizeof (asection *));
                    }
 
                  sec_list[sec_count++] = sec;
@@ -149,7 +150,13 @@ gld${EMULATION_NAME}_after_allocation (void)
   /* bfd_elf32_discard_info just plays with debugging sections,
      ie. doesn't affect any code, so we can delay resizing the
      sections.  */
-  if (bfd_elf_discard_info (link_info.output_bfd, & link_info))
+  ret = bfd_elf_discard_info (link_info.output_bfd, & link_info);
+  if (ret < 0)
+    {
+      einfo (_("%X%P: .eh_frame/.stab edit: %E\n"));
+      return;
+    }
+  else if (ret > 0)
     layout_changed = 1;
 
   gld${EMULATION_NAME}_map_segments (layout_changed);
@@ -171,11 +178,10 @@ PARSE_AND_LIST_LONGOPTS='
 '
 
 PARSE_AND_LIST_OPTIONS='
-  fprintf (file, _("  --dsbt-index <index>\n"));
-  fprintf (file, _("\t\t\tUse this as the DSBT index for the output object\n"));
-  fprintf (file, _("  --dsbt-size <index>\n"));
-  fprintf (file, _("\t\t\tUse this as the number of entries in the DSBT table\n"));
-  fprintf (file, _("  --no-merge-exidx-entries    Disable merging exidx entries\n"));
+  fprintf (file, _("  --dsbt-index <index>    Use this as the DSBT index for the output object\n"));
+  fprintf (file, _("  --dsbt-size <index>     Use this as the number of entries in the DSBT table\n"));
+  fprintf (file, _("  --no-merge-exidx-entries\n"));
+  fprintf (file, _("                          Disable merging exidx entries\n"));
 '
 
 PARSE_AND_LIST_ARGS_CASES='
@@ -186,7 +192,7 @@ PARSE_AND_LIST_ARGS_CASES='
        if (*end == 0
            && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff)
          break;
-       einfo (_("%P%F: invalid --dsbt-index %s\n"), optarg);
+       einfo (_("%F%P: invalid --dsbt-index %s\n"), optarg);
       }
       break;
     case OPTION_DSBT_SIZE:
@@ -196,7 +202,7 @@ PARSE_AND_LIST_ARGS_CASES='
        if (*end == 0
            && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff)
          break;
-       einfo (_("%P%F: invalid --dsbt-size %s\n"), optarg);
+       einfo (_("%F%P: invalid --dsbt-size %s\n"), optarg);
       }
       break;
    case OPTION_NO_MERGE_EXIDX_ENTRIES:
This page took 0.025401 seconds and 4 git commands to generate.