/* ldemul.c -- clearing house for ld emulation states
- Copyright (C) 1991-2016 Free Software Foundation, Inc.
+ Copyright (C) 1991-2020 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
#include "bfd.h"
#include "getopt.h"
#include "bfdlink.h"
+#include "ctf-api.h"
#include "ld.h"
#include "ldmisc.h"
ld_emulation->after_open ();
}
+void
+ldemul_after_check_relocs (void)
+{
+ ld_emulation->after_check_relocs ();
+}
+
void
ldemul_after_allocation (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);
}
void
after_open_default (void)
+{
+ 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;
+ else
+ {
+ if (command_line.endian == ENDIAN_BIG)
+ ;
+ else if (command_line.endian == ENDIAN_LITTLE)
+ 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;
+ break;
+ }
+ }
+ }
+}
+
+void
+after_check_relocs_default (void)
{
}
void
syslib_default (char *ignore ATTRIBUTE_UNUSED)
{
- info_msg (_("%S SYSLIB ignored\n"), NULL);
+ info_msg (_("%pS SYSLIB ignored\n"), NULL);
}
void
hll_default (char *ignore ATTRIBUTE_UNUSED)
{
- info_msg (_("%S HLL ignored\n"), NULL);
+ info_msg (_("%pS HLL ignored\n"), NULL);
}
ld_emulation_xfer_type *ld_emulations[] = { EMULATION_LIST };
if (ld_emulation->extra_map_file_text)
ld_emulation->extra_map_file_text (abfd, info, mapf);
}
+
+int
+ldemul_emit_ctf_early (void)
+{
+ if (ld_emulation->emit_ctf_early)
+ return ld_emulation->emit_ctf_early ();
+ /* If the emulation doesn't know if it wants to emit CTF early, it is going
+ to do so. */
+ return 1;
+}
+
+void
+ldemul_examine_strtab_for_ctf (struct ctf_file *ctf_output,
+ struct elf_sym_strtab *syms,
+ bfd_size_type symcount,
+ struct elf_strtab_hash *symstrtab)
+
+{
+ if (ld_emulation->examine_strtab_for_ctf)
+ ld_emulation->examine_strtab_for_ctf (ctf_output, syms,
+ symcount, symstrtab);
+}