diff options
Diffstat (limited to 'contrib/binutils/ld/emultempl/linux.em')
-rw-r--r-- | contrib/binutils/ld/emultempl/linux.em | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/contrib/binutils/ld/emultempl/linux.em b/contrib/binutils/ld/emultempl/linux.em index 888a3dd..85ed138 100644 --- a/contrib/binutils/ld/emultempl/linux.em +++ b/contrib/binutils/ld/emultempl/linux.em @@ -1,5 +1,10 @@ # This shell script emits a C file. -*- C -*- # It does some substitutions. +if [ -z "$MACHINE" ]; then + OUTPUT_ARCH=${ARCH} +else + OUTPUT_ARCH=${ARCH}:${MACHINE} +fi cat >e${EMULATION_NAME}.c <<EOF /* This file is is generated by a shell script. DO NOT EDIT! */ @@ -52,7 +57,15 @@ static char *gld${EMULATION_NAME}_get_script PARAMS ((int *isfile)); static void gld${EMULATION_NAME}_before_parse() { - ldfile_output_architecture = bfd_arch_${ARCH}; + const bfd_arch_info_type *arch = bfd_scan_arch ("${OUTPUT_ARCH}"); + if (arch) + { + ldfile_output_architecture = arch->arch; + ldfile_output_machine = arch->mach; + ldfile_output_machine_name = arch->printable_name; + } + else + ldfile_output_architecture = bfd_arch_${ARCH}; config.dynamic_link = true; config.has_shared = true; } |