On Fri, Feb 4, 2022 at 1:05 PM H.J. Lu wrote: > > Add emultempl/emulation.em to define ld_${EMULATION_NAME}_emulation so > that new emulation hooks can be added easily. > > * emultempl/aix.em (LDEMUL_AFTER_OPEN): New. > (LDEMUL_SET_OUTPUT_ARCH): Likewise. > (LDEMUL_CHOOSE_TARGET): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PARSE_ARGS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (LDEMUL_PRINT_SYMBOL): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/beos.em (gld_${EMULATION_NAME}_before_parse): > Renamed to ... > (gld${EMULATION_NAME}_before_parse): This. > (gld_${EMULATION_NAME}_set_symbols): Renamed to ... > (gld${EMULATION_NAME}_set_symbols): This. > (gld_${EMULATION_NAME}_after_open): Renamed to ... > (gld${EMULATION_NAME}_after_open): This. > (gld_${EMULATION_NAME}_before_allocation): Renamed to ... > (gld${EMULATION_NAME}_before_allocation): This. > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_AFTER_OPEN): New. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_SET_SYMBOLS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/elf.em (LDEMUL_AFTER_PARSE): New. > (LDEMUL_AFTER_OPEN): Likewise. > (LDEMUL_BEFORE_PLACE_ORPHANS): Likewise. > (LDEMUL_AFTER_ALLOCATION): Likewise. > (LDEMUL_SET_OUTPUT_ARCH): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/emulation.em: New file. > * emultempl/generic.em (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/msp430.em (LDEMUL_AFTER_OPEN): New. > (LDEMUL_AFTER_ALLOCATION): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_FINISH): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/pe.em (gld_${EMULATION_NAME}_before_parse): Renamed > to ... > (gld${EMULATION_NAME}_before_parse): This. > (gld_${EMULATION_NAME}_list_options): Renamed to ... > (gld${EMULATION_NAME}_list_options): This. > (gld_${EMULATION_NAME}_set_symbols): Renamed to ... > (gld${EMULATION_NAME}_set_symbols): This. > (gld_${EMULATION_NAME}_after_parse): Renamed to ... > (gld${EMULATION_NAME}_after_parse): This. > (gld_${EMULATION_NAME}_after_open): Renamed to ... > (gld${EMULATION_NAME}_after_open): This. > (gld_${EMULATION_NAME}_before_allocation): Renamed to ... > (gld${EMULATION_NAME}_before_allocation): This. > (gld_${EMULATION_NAME}_unrecognized_file): Renamed to ... > (gld${EMULATION_NAME}_unrecognized_file): This. > (gld_${EMULATION_NAME}_recognized_file): Renamed to ... > (gld${EMULATION_NAME}_recognized_file): This. > (gld_${EMULATION_NAME}_finish): Renamed to ... > (gld${EMULATION_NAME}_finish): This. > (gld_${EMULATION_NAME}_place_orphan): Renamed to ... > (gld${EMULATION_NAME}_place_orphan): This. > (gld_${EMULATION_NAME}_open_dynamic_archive): Renamed to ... > (gld${EMULATION_NAME}_open_dynamic_archive): This. > (gld_${EMULATION_NAME}_find_potential_libraries): Renamed to ... > (gld${EMULATION_NAME}_find_potential_libraries): This. > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_AFTER_PARSE): New. > (LDEMUL_AFTER_OPEN): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_FINISH=): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_SET_SYMBOLS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (LDEMUL_RECOGNIZED_FILE): Likewise. > (LDEMUL_FIND_POTENTIAL_LIBRARIES): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/pep.em (gld_${EMULATION_NAME}_before_parse): Renamed > to ... > (gld${EMULATION_NAME}_before_parse): This. > (gld_${EMULATION_NAME}_list_options): Renamed to ... > (gld${EMULATION_NAME}_list_options): This. > (gld_${EMULATION_NAME}_set_symbols): Renamed to ... > (gld${EMULATION_NAME}_set_symbols): This. > (gld_${EMULATION_NAME}_after_parse): Renamed to ... > (gld${EMULATION_NAME}_after_parse): This. > (gld_${EMULATION_NAME}_after_open): Renamed to ... > (gld${EMULATION_NAME}_after_open): This. > (gld_${EMULATION_NAME}_before_allocation): Renamed to ... > (gld${EMULATION_NAME}_before_allocation): This. > (gld_${EMULATION_NAME}_unrecognized_file): Renamed to ... > (gld${EMULATION_NAME}_unrecognized_file): This. > (gld_${EMULATION_NAME}_recognized_file): Renamed to ... > (gld${EMULATION_NAME}_recognized_file): This. > (gld_${EMULATION_NAME}_finish): Renamed to ... > (gld${EMULATION_NAME}_finish): This. > (gld_${EMULATION_NAME}_place_orphan): Renamed to ... > (gld${EMULATION_NAME}_place_orphan): This. > (gld_${EMULATION_NAME}_open_dynamic_archive): Renamed to ... > (gld${EMULATION_NAME}_open_dynamic_archive): This. > (gld_${EMULATION_NAME}_find_potential_libraries): Renamed to ... > (gld${EMULATION_NAME}_find_potential_libraries): This. > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_AFTER_PARSE): New. > (LDEMUL_AFTER_OPEN): Likewise. > (LDEMUL_BEFORE_ALLOCATION): Likewise. > (LDEMUL_FINISH=): Likewise. > (LDEMUL_OPEN_DYNAMIC_ARCHIVE): Likewise. > (LDEMUL_PLACE_ORPHAN): Likewise. > (LDEMUL_SET_SYMBOLS): Likewise. > (LDEMUL_ADD_OPTIONS): Likewise. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_UNRECOGNIZED_FILE): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (LDEMUL_RECOGNIZED_FILE): Likewise. > (LDEMUL_FIND_POTENTIAL_LIBRARIES): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/ticoff.em (gld_${EMULATION_NAME}_list_options): > Renamed to ... > (gld${EMULATION_NAME}_list_options): This. > (gld_${EMULATION_NAME}_before_parse): Renamed to ... > (gld_${EMULATION_NAME}_get_script): Renamed to ... > (gld${EMULATION_NAME}_get_script): This. > (LDEMUL_ADD_OPTIONS): New. > (LDEMUL_HANDLE_OPTION): Likewise. > (LDEMUL_LIST_OPTIONS): Likewise. > (ld_${EMULATION_NAME}_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > * emultempl/vanilla.em (LDEMUL_BEFORE_PARSE): New. > (LDEMUL_SET_OUTPUT_ARCH): Likewise. > (LDEMUL_GET_SCRIPT): Likewise. > (EMULATION_NAME): Likewise. > (OUTPUT_FORMAT): Likewise. > (ld_vanilla_emulation): Removed. > Source ${srcdir}/emultempl/emulation.em. > --- > ld/emultempl/aix.em | 49 +++++++---------------- > ld/emultempl/beos.em | 55 ++++++------------------- > ld/emultempl/elf.em | 52 +++++++----------------- > ld/emultempl/emulation.em | 40 +++++++++++++++++++ > ld/emultempl/generic.em | 39 +----------------- > ld/emultempl/msp430.em | 46 +++++---------------- > ld/emultempl/pe.em | 84 ++++++++++++++------------------------- > ld/emultempl/pep.em | 80 +++++++++++++------------------------ > ld/emultempl/ticoff.em | 48 ++++------------------ > ld/emultempl/vanilla.em | 44 ++++---------------- > 10 files changed, 165 insertions(+), 372 deletions(-) > create mode 100644 ld/emultempl/emulation.em > > diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em > index b82305dc09e..6807aaee1c8 100644 > --- a/ld/emultempl/aix.em > +++ b/ld/emultempl/aix.em > @@ -1601,39 +1601,18 @@ gld${EMULATION_NAME}_print_symbol (struct bfd_link_hash_entry *hash_entry, > > return true; > } > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = { > - gld${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - gld${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - gld${EMULATION_NAME}_set_output_arch, > - gld${EMULATION_NAME}_choose_target, > - gld${EMULATION_NAME}_before_allocation, > - gld${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - finish_default, > - gld${EMULATION_NAME}_create_output_section_statements, > - gld${EMULATION_NAME}_open_dynamic_archive, > - 0, /* place_orphan */ > - 0, /* set_symbols */ > - gld${EMULATION_NAME}_parse_args, > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - gld${EMULATION_NAME}_unrecognized_file, > - NULL, /* list_options */ > - NULL, /* recognized_file */ > - NULL, /* find potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - gld${EMULATION_NAME}_print_symbol > -}; > EOF > + > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_SET_OUTPUT_ARCH=gld${EMULATION_NAME}_set_output_arch > +LDEMUL_CHOOSE_TARGET=gld${EMULATION_NAME}_choose_target > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=gld${EMULATION_NAME}_create_output_section_statements > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=gld${EMULATION_NAME}_open_dynamic_archive > +LDEMUL_PARSE_ARGS=gld${EMULATION_NAME}_parse_args > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_UNRECOGNIZED_FILE=gld${EMULATION_NAME}_unrecognized_file > +LDEMUL_PRINT_SYMBOL=gld${EMULATION_NAME}_print_symbol > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em > index bebad8af2f7..93e85a792a3 100644 > --- a/ld/emultempl/beos.em > +++ b/ld/emultempl/beos.em > @@ -62,7 +62,7 @@ static int dll; > extern const char *output_filename; > > static void > -gld_${EMULATION_NAME}_before_parse (void) > +gld${EMULATION_NAME}_before_parse (void) > { > ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`); > output_filename = "a.exe"; > @@ -322,7 +322,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > read. */ > > static void > -gld_${EMULATION_NAME}_set_symbols (void) > +gld${EMULATION_NAME}_set_symbols (void) > { > /* Run through and invent symbols for all the > names and insert the defaults. */ > @@ -372,7 +372,7 @@ gld_${EMULATION_NAME}_set_symbols (void) > } > > static void > -gld_${EMULATION_NAME}_after_open (void) > +gld${EMULATION_NAME}_after_open (void) > { > after_open_default (); > > @@ -606,7 +606,7 @@ sort_sections (lang_statement_union_type *s) > } > > static void > -gld_${EMULATION_NAME}_before_allocation (void) > +gld${EMULATION_NAME}_before_allocation (void) > { > #ifdef TARGET_IS_armpe > /* FIXME: we should be able to set the size of the interworking stub > @@ -710,7 +710,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s, > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > > if test x"$COMPILE_IN" = xyes > @@ -759,42 +759,11 @@ fragment < EOF > fi > > -fragment < - > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_PLACE_ORPHAN=gld${EMULATION_NAME}_place_orphan > +LDEMUL_SET_SYMBOLS=gld${EMULATION_NAME}_set_symbols > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - gld_${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - gld_${EMULATION_NAME}_before_allocation, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - finish_default, > - NULL, /* create output section statements */ > - NULL, /* open dynamic archive */ > - gld${EMULATION_NAME}_place_orphan, > - gld_${EMULATION_NAME}_set_symbols, > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - NULL, /* unrecognized file */ > - NULL, /* list options */ > - NULL, /* recognized file */ > - NULL, /* find_potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em > index 7325872e1d9..55dd20f0b02 100644 > --- a/ld/emultempl/elf.em > +++ b/ld/emultempl/elf.em > @@ -909,41 +909,17 @@ EOF > fi > fi > > -fragment < - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > - ${LDEMUL_SYSLIB-syslib_default}, > - ${LDEMUL_HLL-hll_default}, > - ${LDEMUL_AFTER_PARSE-ldelf_after_parse}, > - ${LDEMUL_AFTER_OPEN-gld${EMULATION_NAME}_after_open}, > - ${LDEMUL_AFTER_CHECK_RELOCS-after_check_relocs_default}, > - ${LDEMUL_BEFORE_PLACE_ORPHANS-ldelf_before_place_orphans}, > - ${LDEMUL_AFTER_ALLOCATION-gld${EMULATION_NAME}_after_allocation}, > - ${LDEMUL_SET_OUTPUT_ARCH-ldelf_set_output_arch}, > - ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > - ${LDEMUL_BEFORE_ALLOCATION-gld${EMULATION_NAME}_before_allocation}, > - ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - ${LDEMUL_FINISH-finish_default}, > - ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > - ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-ldelf_open_dynamic_archive}, > - ${LDEMUL_PLACE_ORPHAN-ldelf_place_orphan}, > - ${LDEMUL_SET_SYMBOLS-NULL}, > - ${LDEMUL_PARSE_ARGS-NULL}, > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > - ${LDEMUL_LIST_OPTIONS-${gld_list_options}}, > - ${LDEMUL_RECOGNIZED_FILE-ldelf_load_symbols}, > - ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > - ${LDEMUL_NEW_VERS_PATTERN-NULL}, > - ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_AFTER_PARSE=${LDEMUL_AFTER_PARSE-ldelf_after_parse} > +LDEMUL_AFTER_OPEN=${LDEMUL_AFTER_OPEN-gld${EMULATION_NAME}_after_open} > +LDEMUL_BEFORE_PLACE_ORPHANS=${LDEMUL_BEFORE_PLACE_ORPHANS-ldelf_before_place_orphans} > +LDEMUL_AFTER_ALLOCATION=${LDEMUL_AFTER_ALLOCATION-gld${EMULATION_NAME}_after_allocation} > +LDEMUL_SET_OUTPUT_ARCH=${LDEMUL_SET_OUTPUT_ARCH-ldelf_set_output_arch} > +LDEMUL_BEFORE_ALLOCATION=${LDEMUL_BEFORE_ALLOCATION-gld${EMULATION_NAME}_before_allocation} > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=${LDEMUL_OPEN_DYNAMIC_ARCHIVE-ldelf_open_dynamic_archive} > +LDEMUL_PLACE_ORPHAN=${LDEMUL_PLACE_ORPHAN-ldelf_place_orphan} > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_LIST_OPTIONS=${LDEMUL_LIST_OPTIONS-${gld_list_options}} > +LDEMUL_RECOGNIZED_FILE=${LDEMUL_RECOGNIZED_FILE-ldelf_load_symbols} > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/emulation.em b/ld/emultempl/emulation.em > new file mode 100644 > index 00000000000..cfa6567ac2b > --- /dev/null > +++ b/ld/emultempl/emulation.em > @@ -0,0 +1,40 @@ > +# This shell script emits a C file. -*- C -*- > +# It does some substitutions. > +fragment < + > +struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > +{ > + ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > + ${LDEMUL_SYSLIB-syslib_default}, > + ${LDEMUL_HLL-hll_default}, > + ${LDEMUL_AFTER_PARSE-after_parse_default}, > + ${LDEMUL_AFTER_OPEN-after_open_default}, > + ${LDEMUL_AFTER_CHECK_RELOCS-after_check_relocs_default}, > + ${LDEMUL_BEFORE_PLACE_ORPHANS-before_place_orphans_default}, > + ${LDEMUL_AFTER_ALLOCATION-after_allocation_default}, > + ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default}, > + ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > + ${LDEMUL_BEFORE_ALLOCATION-before_allocation_default}, > + ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > + "${EMULATION_NAME}", > + "${OUTPUT_FORMAT}", > + ${LDEMUL_FINISH-finish_default}, > + ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > + ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-NULL}, > + ${LDEMUL_PLACE_ORPHAN-NULL}, > + ${LDEMUL_SET_SYMBOLS-NULL}, > + ${LDEMUL_PARSE_ARGS-NULL}, > + ${LDEMUL_ADD_OPTIONS-NULL}, > + ${LDEMUL_HANDLE_OPTION-NULL}, > + ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > + ${LDEMUL_LIST_OPTIONS-NULL}, > + ${LDEMUL_RECOGNIZED_FILE-NULL}, > + ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > + ${LDEMUL_NEW_VERS_PATTERN-NULL}, > + ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > + ${LDEMUL_EMIT_CTF_EARLY-NULL}, > + ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > + ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > + ${LDEMUL_PRINT_SYMBOL-NULL} > +}; > +EOF > diff --git a/ld/emultempl/generic.em b/ld/emultempl/generic.em > index e7c990e7260..cecbb1c2728 100644 > --- a/ld/emultempl/generic.em > +++ b/ld/emultempl/generic.em > @@ -128,41 +128,4 @@ EOF > fi > fi > > -fragment < - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > - ${LDEMUL_SYSLIB-syslib_default}, > - ${LDEMUL_HLL-hll_default}, > - ${LDEMUL_AFTER_PARSE-after_parse_default}, > - ${LDEMUL_AFTER_OPEN-after_open_default}, > - ${LDEMUL_AFTER_CHECK_RELOCS-after_check_relocs_default}, > - ${LDEMUL_BEFORE_PLACE_ORPHANS-before_place_orphans_default}, > - ${LDEMUL_AFTER_ALLOCATION-after_allocation_default}, > - ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default}, > - ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > - ${LDEMUL_BEFORE_ALLOCATION-before_allocation_default}, > - ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - ${LDEMUL_FINISH-finish_default}, > - ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > - ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-NULL}, > - ${LDEMUL_PLACE_ORPHAN-NULL}, > - ${LDEMUL_SET_SYMBOLS-NULL}, > - ${LDEMUL_PARSE_ARGS-NULL}, > - ${LDEMUL_ADD_OPTIONS-NULL}, > - ${LDEMUL_HANDLE_OPTION-NULL}, > - ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > - ${LDEMUL_LIST_OPTIONS-NULL}, > - ${LDEMUL_RECOGNIZED_FILE-NULL}, > - ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > - ${LDEMUL_NEW_VERS_PATTERN-NULL}, > - ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/msp430.em b/ld/emultempl/msp430.em > index abfbdcb64a8..f188b46b4aa 100644 > --- a/ld/emultempl/msp430.em > +++ b/ld/emultempl/msp430.em > @@ -905,43 +905,17 @@ gld${EMULATION_NAME}_finish (void) > finish_default (); > check_array_section_alignment (); > } > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse}, > - ${LDEMUL_SYSLIB-syslib_default}, > - ${LDEMUL_HLL-hll_default}, > - ${LDEMUL_AFTER_PARSE-after_parse_default}, > - msp430_elf_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - msp430_elf_after_allocation, > - ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default}, > - ${LDEMUL_CHOOSE_TARGET-ldemul_default_target}, > - ${LDEMUL_BEFORE_ALLOCATION-before_allocation_default}, > - ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script}, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - gld${EMULATION_NAME}_finish, > - ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL}, > - ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-NULL}, > - ${LDEMUL_PLACE_ORPHAN-gld${EMULATION_NAME}_place_orphan}, > - ${LDEMUL_SET_SYMBOLS-NULL}, > - ${LDEMUL_PARSE_ARGS-NULL}, > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - ${LDEMUL_UNRECOGNIZED_FILE-NULL}, > - gld${EMULATION_NAME}_list_options, > - ${LDEMUL_RECOGNIZED_FILE-NULL}, > - ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL}, > - ${LDEMUL_NEW_VERS_PATTERN-NULL}, > - ${LDEMUL_EXTRA_MAP_FILE_TEXT-NULL}, > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > EOF > + > +LDEMUL_AFTER_OPEN=msp430_elf_after_open > +LDEMUL_AFTER_ALLOCATION=msp430_elf_after_allocation > +LDEMUL_PLACE_ORPHAN=${LDEMUL_PLACE_ORPHAN-gld${EMULATION_NAME}_place_orphan} > +LDEMUL_FINISH=gld${EMULATION_NAME}_finish > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > + > +source_em ${srcdir}/emultempl/emulation.em > # > # Local Variables: > # mode: c > diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em > index 3c6a07e8e86..892bf70b7a6 100644 > --- a/ld/emultempl/pe.em > +++ b/ld/emultempl/pe.em > @@ -172,7 +172,7 @@ static int is_underscoring (void) > } > > static void > -gld_${EMULATION_NAME}_before_parse (void) > +gld${EMULATION_NAME}_before_parse (void) > { > is_underscoring (); > ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`); > @@ -454,7 +454,7 @@ static definfo init[] = > > > static void > -gld_${EMULATION_NAME}_list_options (FILE *file) > +gld${EMULATION_NAME}_list_options (FILE *file) > { > fprintf (file, _(" --base_file Generate a base file for relocatable DLLs\n")); > fprintf (file, _(" --dll Set image base to the default for DLLs\n")); > @@ -1002,7 +1002,7 @@ compute_dll_image_base (const char *ofile) > read. */ > > static void > -gld_${EMULATION_NAME}_set_symbols (void) > +gld${EMULATION_NAME}_set_symbols (void) > { > /* Run through and invent symbols for all the > names and insert the defaults. */ > @@ -1069,7 +1069,7 @@ gld_${EMULATION_NAME}_set_symbols (void) > have been read. */ > > static void > -gld_${EMULATION_NAME}_after_parse (void) > +gld${EMULATION_NAME}_after_parse (void) > { > /* PR ld/6744: Warn the user if they have used an ELF-only > option hoping it will work on PE. */ > @@ -1382,7 +1382,7 @@ setup_build_id (bfd *ibfd) > } > > static void > -gld_${EMULATION_NAME}_after_open (void) > +gld${EMULATION_NAME}_after_open (void) > { > after_open_default (); > > @@ -1803,7 +1803,7 @@ gld_${EMULATION_NAME}_after_open (void) > } > > static void > -gld_${EMULATION_NAME}_before_allocation (void) > +gld${EMULATION_NAME}_before_allocation (void) > { > #if defined(TARGET_IS_armpe) || defined(TARGET_IS_arm_wince_pe) > /* FIXME: we should be able to set the size of the interworking stub > @@ -1849,7 +1849,7 @@ saw_option (char *option) > #endif /* DLL_SUPPORT */ > > static bool > -gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > #ifdef DLL_SUPPORT > const char *ext = entry->filename + strlen (entry->filename) - 4; > @@ -1930,7 +1930,7 @@ gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIB > } > > static bool > -gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > #ifdef DLL_SUPPORT > #ifdef TARGET_IS_i386pe > @@ -1952,7 +1952,7 @@ gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUT > } > > static void > -gld_${EMULATION_NAME}_finish (void) > +gld${EMULATION_NAME}_finish (void) > { > #if defined(TARGET_IS_armpe) || defined(TARGET_IS_arm_wince_pe) > struct bfd_link_hash_entry * h; > @@ -2052,9 +2052,9 @@ gld_${EMULATION_NAME}_finish (void) > sort_sections. */ > > static lang_output_section_statement_type * > -gld_${EMULATION_NAME}_place_orphan (asection *s, > - const char *secname, > - int constraint) > +gld${EMULATION_NAME}_place_orphan (asection *s, > + const char *secname, > + int constraint) > { > const char *orig_secname = secname; > char *dollar = NULL; > @@ -2251,7 +2251,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s, > } > > static bool > -gld_${EMULATION_NAME}_open_dynamic_archive > +gld${EMULATION_NAME}_open_dynamic_archive > (const char *arch ATTRIBUTE_UNUSED, > search_dirs_type *search, > lang_input_statement_type *entry) > @@ -2357,14 +2357,14 @@ gld_${EMULATION_NAME}_open_dynamic_archive > } > > static int > -gld_${EMULATION_NAME}_find_potential_libraries > +gld${EMULATION_NAME}_find_potential_libraries > (char *name, lang_input_statement_type *entry) > { > return ldfile_open_file_search (name, entry, "", ".lib"); > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > > if test x"$COMPILE_IN" = xyes > @@ -2426,42 +2426,18 @@ fragment < EOF > fi > > -fragment < - > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - gld_${EMULATION_NAME}_after_parse, > - gld_${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - gld_${EMULATION_NAME}_before_allocation, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - gld_${EMULATION_NAME}_finish, > - NULL, /* Create output section statements. */ > - gld_${EMULATION_NAME}_open_dynamic_archive, > - gld_${EMULATION_NAME}_place_orphan, > - gld_${EMULATION_NAME}_set_symbols, > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - gld_${EMULATION_NAME}_unrecognized_file, > - gld_${EMULATION_NAME}_list_options, > - gld_${EMULATION_NAME}_recognized_file, > - gld_${EMULATION_NAME}_find_potential_libraries, > - NULL, /* new_vers_pattern. */ > - NULL, /* extra_map_file_text. */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_AFTER_PARSE=gld${EMULATION_NAME}_after_parse > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_FINISH=gld${EMULATION_NAME}_finish > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=gld${EMULATION_NAME}_open_dynamic_archive > +LDEMUL_PLACE_ORPHAN=gld${EMULATION_NAME}_place_orphan > +LDEMUL_SET_SYMBOLS=gld${EMULATION_NAME}_set_symbols > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_UNRECOGNIZED_FILE=gld${EMULATION_NAME}_unrecognized_file > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > +LDEMUL_RECOGNIZED_FILE=gld${EMULATION_NAME}_recognized_file > +LDEMUL_FIND_POTENTIAL_LIBRARIES=gld${EMULATION_NAME}_find_potential_libraries > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em > index 848daa16746..e68d1e69f17 100644 > --- a/ld/emultempl/pep.em > +++ b/ld/emultempl/pep.em > @@ -183,7 +183,7 @@ static int is_underscoring (void) > > > static void > -gld_${EMULATION_NAME}_before_parse (void) > +gld${EMULATION_NAME}_before_parse (void) > { > is_underscoring (); > ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`); > @@ -417,7 +417,7 @@ static definfo init[] = > > > static void > -gld_${EMULATION_NAME}_list_options (FILE *file) > +gld${EMULATION_NAME}_list_options (FILE *file) > { > fprintf (file, _(" --base_file Generate a base file for relocatable DLLs\n")); > fprintf (file, _(" --dll Set image base to the default for DLLs\n")); > @@ -945,7 +945,7 @@ compute_dll_image_base (const char *ofile) > read. */ > > static void > -gld_${EMULATION_NAME}_set_symbols (void) > +gld${EMULATION_NAME}_set_symbols (void) > { > /* Run through and invent symbols for all the > names and insert the defaults. */ > @@ -1012,7 +1012,7 @@ gld_${EMULATION_NAME}_set_symbols (void) > have been read. */ > > static void > -gld_${EMULATION_NAME}_after_parse (void) > +gld${EMULATION_NAME}_after_parse (void) > { > /* PR ld/6744: Warn the user if they have used an ELF-only > option hoping it will work on PE+. */ > @@ -1366,7 +1366,7 @@ setup_build_id (bfd *ibfd) > } > > static void > -gld_${EMULATION_NAME}_after_open (void) > +gld${EMULATION_NAME}_after_open (void) > { > after_open_default (); > > @@ -1694,7 +1694,7 @@ gld_${EMULATION_NAME}_after_open (void) > } > > static void > -gld_${EMULATION_NAME}_before_allocation (void) > +gld${EMULATION_NAME}_before_allocation (void) > { > is_underscoring (); > before_allocation_default (); > @@ -1719,7 +1719,7 @@ saw_option (char *option) > #endif /* DLL_SUPPORT */ > > static bool > -gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > #ifdef DLL_SUPPORT > const char *ext = entry->filename + strlen (entry->filename) - 4; > @@ -1800,7 +1800,7 @@ gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIB > } > > static bool > -gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > +gld${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED) > { > is_underscoring (); > #ifdef DLL_SUPPORT > @@ -1814,7 +1814,7 @@ gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUT > } > > static void > -gld_${EMULATION_NAME}_finish (void) > +gld${EMULATION_NAME}_finish (void) > { > is_underscoring (); > finish_default (); > @@ -1864,7 +1864,7 @@ gld_${EMULATION_NAME}_finish (void) > sort_sections. */ > > static lang_output_section_statement_type * > -gld_${EMULATION_NAME}_place_orphan (asection *s, > +gld${EMULATION_NAME}_place_orphan (asection *s, > const char *secname, > int constraint) > { > @@ -2063,7 +2063,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s, > } > > static bool > -gld_${EMULATION_NAME}_open_dynamic_archive > +gld${EMULATION_NAME}_open_dynamic_archive > (const char *arch ATTRIBUTE_UNUSED, > search_dirs_type *search, > lang_input_statement_type *entry) > @@ -2169,14 +2169,14 @@ gld_${EMULATION_NAME}_open_dynamic_archive > } > > static int > -gld_${EMULATION_NAME}_find_potential_libraries > +gld${EMULATION_NAME}_find_potential_libraries > (char *name, lang_input_statement_type *entry) > { > return ldfile_open_file_search (name, entry, "", ".lib"); > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > > if test x"$COMPILE_IN" = xyes > @@ -2238,42 +2238,18 @@ fragment < EOF > fi > > -fragment < - > - > -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - gld_${EMULATION_NAME}_after_parse, > - gld_${EMULATION_NAME}_after_open, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - gld_${EMULATION_NAME}_before_allocation, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - gld_${EMULATION_NAME}_finish, > - NULL, /* Create output section statements. */ > - gld_${EMULATION_NAME}_open_dynamic_archive, > - gld_${EMULATION_NAME}_place_orphan, > - gld_${EMULATION_NAME}_set_symbols, > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - gld_${EMULATION_NAME}_unrecognized_file, > - gld_${EMULATION_NAME}_list_options, > - gld_${EMULATION_NAME}_recognized_file, > - gld_${EMULATION_NAME}_find_potential_libraries, > - NULL, /* new_vers_pattern. */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_AFTER_PARSE=gld${EMULATION_NAME}_after_parse > +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open > +LDEMUL_BEFORE_ALLOCATION=gld${EMULATION_NAME}_before_allocation > +LDEMUL_FINISH=gld${EMULATION_NAME}_finish > +LDEMUL_OPEN_DYNAMIC_ARCHIVE=gld${EMULATION_NAME}_open_dynamic_archive > +LDEMUL_PLACE_ORPHAN=gld${EMULATION_NAME}_place_orphan > +LDEMUL_SET_SYMBOLS=gld${EMULATION_NAME}_set_symbols > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_UNRECOGNIZED_FILE=gld${EMULATION_NAME}_unrecognized_file > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > +LDEMUL_RECOGNIZED_FILE=gld${EMULATION_NAME}_recognized_file > +LDEMUL_FIND_POTENTIAL_LIBRARIES=gld${EMULATION_NAME}_find_potential_libraries > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em > index 1ac483b9c7f..a57e73bc5c3 100644 > --- a/ld/emultempl/ticoff.em > +++ b/ld/emultempl/ticoff.em > @@ -64,7 +64,7 @@ gld${EMULATION_NAME}_add_options > } > > static void > -gld_${EMULATION_NAME}_list_options (FILE * file) > +gld${EMULATION_NAME}_list_options (FILE * file) > { > fprintf (file, _(" --format 0|1|2 Specify which COFF version to use\n")); > } > @@ -96,7 +96,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > } > > static void > -gld_${EMULATION_NAME}_before_parse(void) > +gld${EMULATION_NAME}_before_parse(void) > { > #ifndef TARGET_ /* I.e., if not generic. */ > ldfile_set_output_arch ("`echo ${ARCH}`", bfd_arch_unknown); > @@ -104,7 +104,7 @@ gld_${EMULATION_NAME}_before_parse(void) > } > > static char * > -gld_${EMULATION_NAME}_get_script (int *isfile) > +gld${EMULATION_NAME}_get_script (int *isfile) > EOF > if test x"$COMPILE_IN" = xyes > then > @@ -154,40 +154,8 @@ EOF > > fi > > -fragment < -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = > -{ > - gld_${EMULATION_NAME}_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - after_open_default, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - set_output_arch_default, > - ldemul_default_target, > - before_allocation_default, > - gld_${EMULATION_NAME}_get_script, > - "${EMULATION_NAME}", > - "${OUTPUT_FORMAT}", > - finish_default, > - NULL, /* create output section statements */ > - NULL, /* open dynamic archive */ > - NULL, /* place orphan */ > - NULL, /* set_symbols */ > - NULL, /* parse_args */ > - gld${EMULATION_NAME}_add_options, > - gld${EMULATION_NAME}_handle_option, > - NULL, /* unrecognized_file */ > - gld_${EMULATION_NAME}_list_options, > - NULL, /* recognized file */ > - NULL, /* find_potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - ${LDEMUL_EMIT_CTF_EARLY-NULL}, > - ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL}, > - ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL}, > - ${LDEMUL_PRINT_SYMBOL-NULL} > -}; > -EOF > +LDEMUL_ADD_OPTIONS=gld${EMULATION_NAME}_add_options > +LDEMUL_HANDLE_OPTION=gld${EMULATION_NAME}_handle_option > +LDEMUL_LIST_OPTIONS=gld${EMULATION_NAME}_list_options > + > +source_em ${srcdir}/emultempl/emulation.em > diff --git a/ld/emultempl/vanilla.em b/ld/emultempl/vanilla.em > index dc47ca13efb..c9aef37742f 100644 > --- a/ld/emultempl/vanilla.em > +++ b/ld/emultempl/vanilla.em > @@ -55,40 +55,12 @@ vanilla_get_script (int *isfile) > *isfile = 0; > return ""; > } > - > -struct ld_emulation_xfer_struct ld_vanilla_emulation = > -{ > - vanilla_before_parse, > - syslib_default, > - hll_default, > - after_parse_default, > - after_open_default, > - after_check_relocs_default, > - before_place_orphans_default, > - after_allocation_default, > - vanilla_set_output_arch, > - ldemul_default_target, > - before_allocation_default, > - vanilla_get_script, > - "vanilla", > - "a.out-sunos-big", > - finish_default, > - NULL, /* create output section statements */ > - NULL, /* open dynamic archive */ > - NULL, /* place orphan */ > - NULL, /* set symbols */ > - NULL, /* parse args */ > - NULL, /* add_options */ > - NULL, /* handle_option */ > - NULL, /* unrecognized file */ > - NULL, /* list options */ > - NULL, /* recognized file */ > - NULL, /* find_potential_libraries */ > - NULL, /* new_vers_pattern */ > - NULL, /* extra_map_file_text */ > - NULL, /* emit_ctf_early */ > - NULL, /* acquire_strings_for_ctf */ > - NULL, /* new_dynsym_for_ctf */ > - NULL /* print_symbol */ > -}; > EOF > + > +LDEMUL_BEFORE_PARSE=vanilla_before_parse > +LDEMUL_SET_OUTPUT_ARCH=vanilla_set_output_arch > +LDEMUL_GET_SCRIPT=vanilla_get_script > +EMULATION_NAME=vanilla > +OUTPUT_FORMAT=a.out-sunos-big > + > +source_em ${srcdir}/emultempl/emulation.em > -- > 2.34.1 > Here are diffs of generated emulation files. All changes are cosmetic. It passed all cross binutils tests. I am checking it in. -- H.J.