drop XC16x bits
[binutils-gdb.git] / ld / ldemul.c
index 6dc5112f7dd48907b00c4704af40bf427d587374..4c8cad81f98b55584319b1a708493deffc071293 100644 (file)
@@ -1,5 +1,5 @@
 /* ldemul.c -- clearing house for ld emulation states
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2022 Free Software Foundation, Inc.
 
    This file is part of the GNU Binutils.
 
@@ -59,6 +59,13 @@ ldemul_before_parse (void)
   ld_emulation->before_parse ();
 }
 
+void
+ldemul_before_plugin_all_symbols_read (void)
+{
+  if (ld_emulation->before_plugin_all_symbols_read)
+    ld_emulation->before_plugin_all_symbols_read ();
+}
+
 void
 ldemul_after_open (void)
 {
@@ -121,13 +128,13 @@ ldemul_get_script (int *isfile)
   return ld_emulation->get_script (isfile);
 }
 
-bfd_boolean
+bool
 ldemul_open_dynamic_archive (const char *arch, search_dirs_type *search,
                             lang_input_statement_type *entry)
 {
   if (ld_emulation->open_dynamic_archive)
     return (*ld_emulation->open_dynamic_archive) (arch, search, entry);
-  return FALSE;
+  return false;
 }
 
 lang_output_section_statement_type *
@@ -148,41 +155,41 @@ ldemul_add_options (int ns, char **shortopts, int nl,
                                  nrl, really_longopts);
 }
 
-bfd_boolean
+bool
 ldemul_handle_option (int optc)
 {
   if (ld_emulation->handle_option)
     return (*ld_emulation->handle_option) (optc);
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 ldemul_parse_args (int argc, char **argv)
 {
   /* Try and use the emulation parser if there is one.  */
   if (ld_emulation->parse_args)
     return (*ld_emulation->parse_args) (argc, argv);
-  return FALSE;
+  return false;
 }
 
 /* Let the emulation code handle an unrecognized file.  */
 
-bfd_boolean
+bool
 ldemul_unrecognized_file (lang_input_statement_type *entry)
 {
   if (ld_emulation->unrecognized_file)
     return (*ld_emulation->unrecognized_file) (entry);
-  return FALSE;
+  return false;
 }
 
 /* Let the emulation code handle a recognized file.  */
 
-bfd_boolean
+bool
 ldemul_recognized_file (lang_input_statement_type *entry)
 {
   if (ld_emulation->recognized_file)
     return (*ld_emulation->recognized_file) (entry);
-  return FALSE;
+  return false;
 }
 
 char *
@@ -220,7 +227,7 @@ after_parse_default (void)
   if (entry_symbol.name != NULL
       && (bfd_link_executable (&link_info) || entry_from_cmdline))
     {
-      bfd_boolean is_vma = FALSE;
+      bool is_vma = false;
 
       if (entry_from_cmdline)
        {
@@ -232,35 +239,34 @@ after_parse_default (void)
       if (!is_vma)
        ldlang_add_undef (entry_symbol.name, entry_from_cmdline);
     }
-  if (config.maxpagesize == 0)
-    config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
-  if (config.commonpagesize == 0)
-    config.commonpagesize = bfd_emul_get_commonpagesize (default_target,
-                                                        link_info.relro);
+  if (link_info.maxpagesize == 0)
+    link_info.maxpagesize = bfd_emul_get_maxpagesize (default_target);
+  if (link_info.commonpagesize == 0)
+    link_info.commonpagesize = bfd_emul_get_commonpagesize (default_target);
 }
 
 void
 after_open_default (void)
 {
-  link_info.big_endian = TRUE;
+  link_info.big_endian = true;
 
   if (bfd_big_endian (link_info.output_bfd))
     ;
   else if (bfd_little_endian (link_info.output_bfd))
-    link_info.big_endian = FALSE;
+    link_info.big_endian = false;
   else
     {
       if (command_line.endian == ENDIAN_BIG)
        ;
       else if (command_line.endian == ENDIAN_LITTLE)
-       link_info.big_endian = FALSE;
+       link_info.big_endian = false;
       else if (command_line.endian == ENDIAN_UNSET)
        {
          LANG_FOR_EACH_INPUT_STATEMENT (s)
            if (s->the_bfd != NULL)
              {
                if (bfd_little_endian (s->the_bfd))
-                 link_info.big_endian = FALSE;
+                 link_info.big_endian = false;
                break;
              }
        }
@@ -280,7 +286,7 @@ before_place_orphans_default (void)
 void
 after_allocation_default (void)
 {
-  lang_relax_sections (FALSE);
+  lang_relax_sections (false);
 }
 
 void
@@ -303,9 +309,6 @@ set_output_arch_default (void)
   /* Set the output architecture and machine if possible.  */
   bfd_set_arch_mach (link_info.output_bfd,
                     ldfile_output_architecture, ldfile_output_machine);
-
-  bfd_emul_set_maxpagesize (output_target, config.maxpagesize);
-  bfd_emul_set_commonpagesize (output_target, config.commonpagesize);
 }
 
 void
@@ -347,12 +350,12 @@ void
 ldemul_list_emulations (FILE *f)
 {
   ld_emulation_xfer_type **eptr = ld_emulations;
-  bfd_boolean first = TRUE;
+  bool first = true;
 
   for (; *eptr; eptr++)
     {
       if (first)
-       first = FALSE;
+       first = false;
       else
        fprintf (f, " ");
       fprintf (f, "%s", (*eptr)->emulation_name);
@@ -418,18 +421,22 @@ ldemul_emit_ctf_early (void)
 }
 
 void
-ldemul_examine_strtab_for_ctf (struct ctf_dict *ctf_output,
-                              struct elf_sym_strtab *syms,
-                              bfd_size_type symcount,
-                              struct elf_strtab_hash *symstrtab)
+ldemul_acquire_strings_for_ctf (struct ctf_dict *ctf_output,
+                               struct elf_strtab_hash *symstrtab)
+{
+  if (ld_emulation->acquire_strings_for_ctf)
+    ld_emulation->acquire_strings_for_ctf (ctf_output, symstrtab);
+}
 
+void
+ldemul_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
+                          struct elf_internal_sym *sym)
 {
-  if (ld_emulation->examine_strtab_for_ctf)
-    ld_emulation->examine_strtab_for_ctf (ctf_output, syms,
-                                         symcount, symstrtab);
+  if (ld_emulation->new_dynsym_for_ctf)
+    ld_emulation->new_dynsym_for_ctf (ctf_output, symidx, sym);
 }
 
-bfd_boolean
+bool
 ldemul_print_symbol (struct bfd_link_hash_entry *hash_entry, void *ptr)
 {
   if (ld_emulation->print_symbol)