[PATCH] ld: Ad emultempl/emulation.em
H.J. Lu
hjl.tools@gmail.com
Sun Feb 6 14:25:08 GMT 2022
On Fri, Feb 4, 2022 at 1:05 PM H.J. Lu <hjl.tools@gmail.com> 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
> EOF
> fi
>
> -fragment <<EOF
> -
> +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 <<EOF
> -
> -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 <<EOF
> +
> +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 <<EOF
> -
> -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 <basefile> 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
> EOF
> fi
>
> -fragment <<EOF
> -
> -
> -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 <basefile> 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
> EOF
> fi
>
> -fragment <<EOF
> -
> -
> -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 <<EOF
> -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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ld.diff
Type: text/x-patch
Size: 51169 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20220206/5ffc9d64/attachment-0001.bin>
More information about the Binutils
mailing list