binutils-gdb/bfd/config.bfd
Andrew Jenner b8891f8d62 Add support for the C_SKY series of processors.
This patch series is a new binutils port for C-SKY processors, including support for both the V1 and V2 processor variants.  V1 is derived from the MCore architecture while V2 is substantially different, with mixed 16- and 32-bit instructions, a larger register set, a different (but overlapping) ABI, etc.  There is support for bare-metal ELF targets and Linux with both glibc and uClibc.

This code is being contributed jointly by C-SKY Microsystems and Mentor Graphics.  C-SKY is responsible for the technical content and has proposed Lifang Xia and Yunhai Shang as port maintainers.  (Note that C-SKY does have a corporate copyright assignment on file with the FSF.) Mentor Graphics' role has been cleaning up the code, adding documentation and additional test cases, etc, to address issues we anticipated reviewers would complain about.

bfd     * Makefile.am (ALL_MACHINES, ALL_MACHINES_CFILES): Add C-SKY.
        (BFD32_BACKENDS, BFD_BACKENDS_CFILES): Likewise.
        * Makefile.in: Regenerated.
        * archures.c (enum bfd_architecture): Add bfd_arch_csky and
        related bfd_mach defines.
        (bfd_csky_arch): Declare.
        (bfd_archures_list): Add C-SKY.
        * bfd-in.h (elf32_csky_build_stubs): Declare.
        (elf32_csky_size_stubs): Declare.
        (elf32_csky_next_input_section: Declare.
        (elf32_csky_setup_section_lists): Declare.
        * bfd-in2.h: Regenerated.
        * config.bfd: Add C-SKY.
        * configure.ac: Likewise.
        * configure: Regenerated.
        * cpu-csky.c: New file.
        * elf-bfd.h (enum elf_target_id): Add C-SKY.
        * elf32-csky.c: New file.
        * libbfd.h: Regenerated.
        * reloc.c: Add C-SKY relocations.
        * targets.c (csky_elf32_be_vec, csky_elf32_le_vec): Declare.
        (_bfd_target_vector): Add C-SKY target vector entries.

binutils* readelf.c: Include elf/csky.h.
        (guess_is_rela): Handle EM_CSKY.
        (dump_relocations): Likewise.
        (get_machine_name): Likewise.
        (is_32bit_abs_reloc): Likewise.

include  * dis-asm.h (csky_symbol_is_valid): Declare.
         * opcode/csky.h: New file.

opcodes  * Makefile.am (TARGET_LIBOPCODES_CFILES): Add csky-dis.c.
         * Makefile.in: Regenerated.
         * configure.ac: Add C-SKY.
         * configure: Regenerated.
         * csky-dis.c: New file.
         * csky-opc.h: New file.
         * disassemble.c (ARCH_csky): Define.
         (disassembler, disassemble_init_for_target): Add case for ARCH_csky.
         * disassemble.h (print_insn_csky, csky_get_disassembler): Declare.

gas      * Makefile.am (TARGET_CPU_CFILES): Add entry for C-SKY.
         (TARGET_CPU_HFILES, TARGET_ENV_HFILES): Likewise.
         * Makefile.in: Regenerated.
         * config/tc-csky.c: New file.
         * config/tc-csky.h: New file.
         * config/te-csky_abiv1.h: New file.
         * config/te-csky_abiv1_linux.h: New file.
         * config/te-csky_abiv2.h: New file.
         * config/te-csky_abiv2_linux.h: New file.
         * configure.tgt: Add C-SKY.
         * doc/Makefile.am (CPU_DOCS): Add entry for C-SKY.
         * doc/Makefile.in: Regenerated.
         * doc/all.texi: Set CSKY feature.
         * doc/as.texi (Overview): Add C-SKY options.
         (Machine Dependencies): Likewise.
         * doc/c-csky.texi: New file.
         * testsuite/gas/csky/*: New test cases.

ld      * Makefile.am (ALL_EMULATION_SOURCES): Add C-SKY emulations.
        (ecskyelf.c, ecskyelf_linux.c): New rules.
        * Makefile.in: Regenerated.
        * configure.tgt: Add C-SKY.
        * emulparams/cskyelf.sh: New file.
        * emulparams/cskyelf_linux.sh: New file.
        * emultempl/cskyelf.em: New file.
        * gen-doc.texi: Add C-SKY.
        * ld.texi: Likewise.
        (Options specific to C-SKY targets): New section.
        * testsuite/ld-csky/*: New tests.
2018-07-30 12:24:14 +01:00

1480 lines
43 KiB
Plaintext

# config.bfd
#
# Copyright (C) 2012-2018 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
#
# Convert a canonical host type into a BFD host type.
# Set shell variable targ to canonical target name, and run
# using ``. config.bfd''.
# Sets the following shell variables:
# targ_defvec Default vector for this target
# targ_selvecs Vectors to build for this target
# targ64_selvecs Vectors to build if --enable-64-bit-bfd is given
# or if host is 64 bit.
# targ_archs Architectures for this target
# targ_cflags $(CFLAGS) for this target (FIXME: pretty bogus)
# targ_underscore Whether underscores are used: yes or no
# Part of this file is processed by targmatch.sed to generate the
# targmatch.h file. The #ifdef and #endif lines that appear below are
# copied directly into targmatch.h.
# The binutils c++filt program wants to know whether underscores are
# stripped or not. That is why we set targ_underscore. c++filt uses
# this information to choose a default. This information is
# duplicated in the symbol_leading_char field of the BFD target
# vector, but c++filt does not deal with object files and is not
# linked against libbfd.a. It is not terribly important that c++filt
# get this right; it is just convenient.
targ_defvec=
targ_selvecs=
targ64_selvecs=
targ_cflags=
targ_underscore=no
# Catch obsolete configurations.
case $targ in
openrisc-*-* | or32-*-*)
echo "*** Configuration $targ is obsolete." >&2
echo "*** Use or1k-*-elf or or1k-*-linux as the target instead" >&2
exit 1
;;
powerpc-*-lynxos* | powerpc-*-windiss* | \
null)
if test "x$enable_obsolete" != xyes; then
echo "*** Configuration $targ is obsolete." >&2
echo "*** Specify --enable-obsolete to build it anyway." >&2
echo "*** Support will be REMOVED in the next major release of BINUTILS," >&2
echo "*** unless a maintainer comes forward." >&2
exit 1
fi;;
esac
case $targ in
*-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu | \
mips*-*-irix5* | mips*-*-irix6*)
# Not obsolete
;;
*-adobe-* | \
*-go32-rtems* | \
*-sony-* | \
*-tandem-* | \
*-*-ieee* | \
*-*-netware* | \
*-*-rtemsaout* | \
*-*-rtemscoff* | \
a29k-* | \
arm*-*-aout | \
arm-*-coff | \
arm-*-netbsd* | \
arm-*-openbsd* | \
arm-*-oabi | \
arm-*-riscix* | \
arm-epoc-pe* | \
h8300*-*-coff | \
h8500*-*-coff | \
hppa*-*-rtems* | \
i[3-7]86-*-unixware* | \
i[3-7]86-*-dgux* | \
i[3-7]86-*-chorus* | \
i[3-7]86-*-sysv* | \
i[3-7]86-*-isc* | \
i[3-7]86-*-sco* | \
i[3-7]86-*-coff | \
i[3-7]86-*-aix* | \
i[3-7]86-sequent-bsd* | \
i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | i[3-7]86-*-freebsd[12] | \
i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \
i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3] | \
i[3-7]86-*-linux*aout* | \
i[3-7]86-*-mach* | i[3-7]86-*-osf1mk* | \
i[3-7]86-*-os9k | \
i[3-7]86-none-* | \
i[3-7]86-*-aout* | i[3-7]86*-*-vsta* | \
i370-* | \
i860-*-* | \
i960-*-* | \
m68*-*-*bsd* | \
m68*-*-aout* | \
m68*-*-coff* | \
m68*-*-hpux* | \
m68*-*-linux*aout* | \
m68*-*-lynxos* | \
m68*-*-os68k* | \
m68*-*-psos* | \
m68*-*-sunos* | \
m68*-*-sysv* | \
m68*-*-vsta* | \
m68*-*-vxworks* | \
m68*-apollo-* | \
m68*-apple-aux* | \
m68*-bull-sysv* | \
m68*-ericsson-* | \
m68*-motorola-sysv* | \
m68*-netx-* | \
m88*-*-* | \
maxq-*-coff | \
mips*-*-bsd* | \
mips*-*-ecoff* | \
mips*-*-lnews* | \
mips*-*-mach3* | \
mips*-*-pe* | \
mips*-*-riscos* | \
mips*-*-sysv* | \
mips*-big-* | \
mips*-dec-* | \
mips*-sgi-* | \
mips*el-*-rtems* | \
sh*-*-symbianelf* | sh5*-*-* | sh64*-*-* | \
sparc*-*-*aout* | \
sparc*-*-chorus* | \
sparc*-*-coff* | \
sparc-*-lynxos* | \
sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1] | \
tahoe-*-* | \
vax-*-bsd* | vax-*-ultrix* | vax-*-vms* | \
w65-*-* | \
we32k-*-* | \
null)
echo "*** Configuration $targ is obsolete." >&2
echo "*** Support has been REMOVED." >&2
exit 1
;;
esac
targ_cpu=`echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
case "${targ_cpu}" in
aarch64*) targ_archs="bfd_aarch64_arch bfd_arm_arch";;
alpha*) targ_archs=bfd_alpha_arch ;;
am33_2.0*) targ_archs=bfd_mn10300_arch ;;
arc*) targ_archs=bfd_arc_arch ;;
arm*) targ_archs=bfd_arm_arch ;;
bfin*) targ_archs=bfd_bfin_arch ;;
c30*) targ_archs=bfd_tic30_arch ;;
c4x*) targ_archs=bfd_tic4x_arch ;;
c54x*) targ_archs=bfd_tic54x_arch ;;
cr16*) targ_archs=bfd_cr16_arch ;;
crisv32) targ_archs=bfd_cris_arch ;;
crx*) targ_archs=bfd_crx_arch ;;
csky*) targ_archs=bfd_csky_arch ;;
dlx*) targ_archs=bfd_dlx_arch ;;
fido*) targ_archs=bfd_m68k_arch ;;
hppa*) targ_archs=bfd_hppa_arch ;;
i[3-7]86) targ_archs=bfd_i386_arch ;;
ia16) targ_archs=bfd_i386_arch ;;
lm32) targ_archs=bfd_lm32_arch ;;
m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
m68*) targ_archs=bfd_m68k_arch ;;
s12z*) targ_archs=bfd_s12z_arch ;;
microblaze*) targ_archs=bfd_microblaze_arch ;;
mips*) targ_archs=bfd_mips_arch ;;
nds32*) targ_archs=bfd_nds32_arch ;;
nfp) targ_archs=bfd_nfp_arch ;;
nios2*) targ_archs=bfd_nios2_arch ;;
or1k*|or1knd*) targ_archs=bfd_or1k_arch ;;
pdp11*) targ_archs=bfd_pdp11_arch ;;
pj*) targ_archs="bfd_pj_arch bfd_i386_arch";;
powerpc*) targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;;
pru*) targ_archs=bfd_pru_arch ;;
riscv*) targ_archs=bfd_riscv_arch ;;
rs6000) targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;;
s390*) targ_archs=bfd_s390_arch ;;
sh*) targ_archs=bfd_sh_arch ;;
sparc*) targ_archs=bfd_sparc_arch ;;
spu*) targ_archs=bfd_spu_arch ;;
tilegx*) targ_archs=bfd_tilegx_arch ;;
tilepro*) targ_archs=bfd_tilepro_arch ;;
v850*) targ_archs="bfd_v850_arch bfd_v850_rh850_arch" ;;
visium*) targ_archs=bfd_visium_arch ;;
wasm32) targ_archs=bfd_wasm32_arch ;;
x86_64*) targ_archs=bfd_i386_arch ;;
xtensa*) targ_archs=bfd_xtensa_arch ;;
xgate) targ_archs=bfd_xgate_arch ;;
z80|r800) targ_archs=bfd_z80_arch ;;
z8k*) targ_archs=bfd_z8k_arch ;;
*) targ_archs=bfd_${targ_cpu}_arch ;;
esac
# WHEN ADDING ENTRIES TO THIS MATRIX:
# Make sure that the left side always has two dashes. Otherwise you
# can get spurious matches. Even for unambiguous cases, do this as a
# convention, else the table becomes a real mess to understand and maintain.
case "${targ}" in
plugin)
targ_defvec=plugin_vec
targ_selvecs="plugin_vec"
;;
# START OF targmatch.h
#ifdef BFD64
aarch64-*-darwin*)
targ_defvec=aarch64_mach_o_vec
targ_selvecs="arm_mach_o_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec"
targ_archs="$targ_archs bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch"
want64=true
;;
aarch64-*-elf | aarch64-*-rtems*)
targ_defvec=aarch64_elf64_le_vec
targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
want64=true
;;
aarch64_be-*-elf)
targ_defvec=aarch64_elf64_be_vec
targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
want64=true
;;
aarch64-*-freebsd*)
targ_defvec=aarch64_elf64_le_vec
targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec"
want64=true
;;
aarch64-*-fuchsia*)
targ_defvec=aarch64_elf64_le_vec
targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec"
want64=true
;;
aarch64-*-cloudabi*)
targ_defvec=aarch64_elf64_le_cloudabi_vec
targ_selvecs=aarch64_elf64_be_cloudabi_vec
want64=true
;;
aarch64-*-linux*)
targ_defvec=aarch64_elf64_le_vec
targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
want64=true
;;
aarch64_be-*-linux*)
targ_defvec=aarch64_elf64_be_vec
targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
want64=true
;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
targ_defvec=alpha_elf64_fbsd_vec
targ_selvecs="alpha_elf64_vec alpha_ecoff_le_vec"
want64=true
# FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
case "${targ}" in
alpha*-*-freebsd3* | alpha*-*-freebsd4 | alpha*-*-freebsd4.0*)
targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
esac
;;
alpha*-*-netbsd* | alpha*-*-openbsd*)
targ_defvec=alpha_elf64_vec
targ_selvecs=alpha_ecoff_le_vec
want64=true
;;
alpha*-*-linux*ecoff*)
targ_defvec=alpha_ecoff_le_vec
targ_selvecs=alpha_elf64_vec
want64=true
;;
alpha*-*-linux-* | alpha*-*-elf*)
targ_defvec=alpha_elf64_vec
targ_selvecs=alpha_ecoff_le_vec
want64=true
;;
alpha*-*-*vms*)
targ_defvec=alpha_vms_vec
targ_selvecs=alpha_vms_lib_txt_vec
want64=true
;;
alpha*-*-*)
targ_defvec=alpha_ecoff_le_vec
want64=true
;;
ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
targ_defvec=ia64_elf64_le_vec
targ_selvecs="ia64_elf64_be_vec ia64_pei_vec"
want64=true
;;
ia64*-*-hpux*)
targ_defvec=ia64_elf32_hpux_be_vec
targ_selvecs="ia64_elf64_hpux_be_vec"
want64=true
;;
ia64*-*-*vms*)
targ_defvec=ia64_elf64_vms_vec
targ_selvecs=alpha_vms_lib_txt_vec
want64=true
;;
#endif /* BFD64 */
am33_2.0-*-linux*)
targ_defvec=am33_elf32_linux_vec
;;
arc*eb-*-elf* | arc*eb-*-linux*)
targ_defvec=arc_elf32_be_vec
targ_selvecs=arc_elf32_le_vec
;;
arc*-*-elf* | arc*-*-linux*)
targ_defvec=arc_elf32_le_vec
targ_selvecs=arc_elf32_be_vec
;;
arm-*-darwin*)
targ_defvec=arm_mach_o_vec
targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec"
targ_archs="$targ_archs bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch"
;;
arm-*-fuchsia*)
targ_defvec=arm_elf32_le_vec
targ_selvecs="arm_elf32_be_vec"
;;
arm-*-nacl*)
targ_defvec=arm_elf32_nacl_le_vec
targ_selvecs="arm_elf32_nacl_be_vec i386_elf32_nacl_vec"
targ64_selvecs="x86_64_elf32_nacl_vec x86_64_elf64_nacl_vec"
targ_archs="$targ_archs bfd_i386_arch"
;;
armeb-*-nacl*)
targ_defvec=arm_elf32_nacl_be_vec
targ_selvecs="arm_elf32_nacl_le_vec i386_elf32_nacl_vec"
targ64_selvecs="x86_64_elf32_nacl_vec x86_64_elf64_nacl_vec"
targ_archs="$targ_archs bfd_i386_arch"
;;
armeb-*-netbsdelf*)
targ_defvec=arm_elf32_be_vec
targ_selvecs="arm_elf32_le_vec"
;;
arm-*-netbsdelf*)
targ_defvec=arm_elf32_le_vec
targ_selvecs="arm_elf32_be_vec"
;;
arm-*-nto* | nto*arm*)
targ_defvec=arm_elf32_le_vec
targ_selvecs=arm_elf32_be_vec
targ_cflags=-D__QNXTARGET__
;;
arm-wince-pe | arm-*-wince | arm*-*-mingw32ce* | arm*-*-cegcc*)
targ_defvec=arm_pe_wince_le_vec
targ_selvecs="arm_pe_wince_le_vec arm_pe_wince_be_vec arm_pei_wince_le_vec arm_pei_wince_be_vec"
targ_underscore=no
targ_cflags="-DARM_WINCE -DARM_COFF_BUGFIX"
;;
arm-*-pe*)
targ_defvec=arm_pe_le_vec
targ_selvecs="arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
targ_underscore=yes
;;
arm-*-phoenix*)
targ_defvec=arm_elf32_le_vec
targ_selvecs=arm_elf32_be_vec
;;
armeb-*-elf | arm*b-*-freebsd* | arm*b-*-linux-* | armeb-*-eabi*)
targ_defvec=arm_elf32_be_vec
targ_selvecs=arm_elf32_le_vec
;;
arm-*-kaos*)
targ_defvec=arm_elf32_le_vec
targ_selvecs=arm_elf32_be_vec
;;
arm-*-elf | arm*-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \
arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \
arm*-*-eabi* | arm-*-rtems* | arm*-*-uclinuxfdpiceabi)
targ_defvec=arm_elf32_le_vec
targ_selvecs="arm_elf32_fdpic_le_vec arm_elf32_be_vec arm_elf32_fdpic_be_vec"
;;
arm*-*-vxworks | arm*-*-windiss)
targ_defvec=arm_elf32_vxworks_le_vec
targ_selvecs=arm_elf32_vxworks_be_vec
;;
arm*-*-symbianelf*)
targ_defvec=arm_elf32_symbian_le_vec
targ_selvecs=arm_elf32_symbian_be_vec
;;
arm9e-*-elf)
targ_defvec=arm_elf32_le_vec
targ_selvecs=arm_elf32_be_vec
;;
avr-*-*)
targ_defvec=avr_elf32_vec
;;
bfin-*-*)
targ_defvec=bfin_elf32_vec
targ_selvecs=bfin_elf32_fdpic_vec
targ_underscore=yes
;;
c30-*-*aout* | tic30-*-*aout*)
targ_defvec=tic30_aout_vec
;;
c30-*-*coff* | tic30-*-*coff*)
targ_defvec=tic30_coff_vec
;;
c4x-*-*coff* | tic4x-*-*coff*)
targ_defvec=tic4x_coff1_vec
targ_selvecs="tic4x_coff1_beh_vec tic4x_coff2_vec tic4x_coff2_beh_vec tic4x_coff0_vec tic4x_coff0_beh_vec"
targ_underscore=yes
;;
c54x*-*-*coff* | tic54x-*-*coff*)
targ_defvec=tic54x_coff1_vec
targ_selvecs="tic54x_coff1_beh_vec tic54x_coff2_vec tic54x_coff2_beh_vec tic54x_coff0_vec tic54x_coff0_beh_vec"
targ_underscore=yes
;;
cr16-*-elf* | cr16*-*-uclinux*)
targ_defvec=cr16_elf32_vec
targ_underscore=yes
;;
cr16c-*-elf*)
targ_defvec=cr16c_elf32_vec
targ_underscore=yes
;;
#ifdef BFD64
cris-*-* | crisv32-*-*)
targ_defvec=cris_aout_vec
targ_selvecs="cris_elf32_us_vec cris_elf32_vec"
case "${targ}" in
*-*-linux*) ;;
*) targ_underscore=yes ;;
esac
want64=true
;;
#endif
crx-*-elf*)
targ_defvec=crx_elf32_vec
targ_underscore=yes
;;
csky-*-elf* | csky-*-linux* )
targ_defvec=csky_elf32_be_vec
targ_selvecs="csky_elf32_be_vec csky_elf32_le_vec"
;;
d10v-*-*)
targ_defvec=d10v_elf32_vec
;;
dlx-*-elf*)
targ_defvec=dlx_elf32_be_vec
targ_selvecs="dlx_elf32_be_vec"
;;
d30v-*-*)
targ_defvec=d30v_elf32_vec
;;
epiphany-*-*)
targ_defvec=epiphany_elf32_vec
targ_underscore=yes
;;
fido-*-elf* )
targ_defvec=m68k_elf32_vec
;;
fr30-*-elf)
targ_defvec=fr30_elf32_vec
;;
frv-*-elf)
targ_defvec=frv_elf32_vec
targ_selvecs=frv_elf32_fdpic_vec
;;
frv-*-*linux*)
targ_defvec=frv_elf32_fdpic_vec
targ_selvecs=frv_elf32_vec
;;
moxie-*-elf | moxie-*-rtems* | moxie-*-uclinux)
targ_defvec=moxie_elf32_be_vec
targ_selvecs=moxie_elf32_le_vec
;;
moxie-*-moxiebox*)
targ_defvec=moxie_elf32_le_vec
;;
h8300*-*-elf | h8300*-*-rtems*)
targ_defvec=h8300_elf32_vec
targ_underscore=yes
;;
h8300*-*-linux*)
targ_defvec=h8300_elf32_linux_vec
;;
#ifdef BFD64
hppa*64*-*-linux-*)
targ_defvec=hppa_elf64_linux_vec
targ_selvecs=hppa_elf64_vec
want64=true
;;
hppa*64*-*-hpux11*)
targ_defvec=hppa_elf64_vec
targ_selvecs=hppa_elf64_linux_vec
targ_cflags=-DHPUX_LARGE_AR_IDS
want64=true
;;
#endif
hppa*-*-linux-*)
targ_defvec=hppa_elf32_linux_vec
targ_selvecs=hppa_elf32_vec
;;
hppa*-*-netbsd*)
targ_defvec=hppa_elf32_nbsd_vec
targ_selvecs="hppa_elf32_vec hppa_elf32_linux_vec"
;;
hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-openbsd*)
targ_defvec=hppa_elf32_vec
targ_selvecs=hppa_elf32_linux_vec
;;
hppa*-*-bsd*)
targ_defvec=hppa_som_vec
targ_selvecs=hppa_elf32_vec
;;
hppa*-*-hpux* | hppa*-*-hiux* | hppa*-*-mpeix*)
targ_defvec=hppa_som_vec
;;
hppa*-*-osf*)
targ_defvec=hppa_som_vec
targ_selvecs=hppa_elf32_vec
;;
i[3-7]86-*-elf* | i[3-7]86-*-rtems*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec"
;;
i[3-7]86-*-solaris2*)
targ_defvec=i386_elf32_sol2_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec i386_pei_vec"
targ64_selvecs="x86_64_elf64_sol2_vec l1om_elf64_vec k1om_elf64_vec x86_64_pei_vec"
want64=true
;;
#ifdef BFD64
x86_64-*-solaris2*)
targ_defvec=i386_elf32_sol2_vec
targ_selvecs="x86_64_elf64_sol2_vec l1om_elf64_vec k1om_elf64_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec"
want64=true
;;
#endif
i[3-7]86-*-kaos*)
targ_defvec=i386_elf32_vec
targ_selvecs=i386_elf32_vec
;;
i[3-7]86-*-nto*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec"
;;
i[3-7]86-*-aros*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
;;
i[3-7]86-*-dicos*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
;;
*-*-msdosdjgpp* | *-*-go32* )
targ_defvec=i386_coff_go32_vec
targ_selvecs="i386_coff_go32stubbed_vec i386_aout_vec"
;;
i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*)
targ_defvec=i386_mach_o_vec
targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
targ64_selvecs=x86_64_mach_o_vec
targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch"
;;
i[3-7]86-*-bsd*)
targ_defvec=i386_aout_bsd_vec
targ_underscore=yes
;;
i[3-7]86-*-dragonfly*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
;;
i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
targ_defvec=i386_elf32_fbsd_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_pei_vec i386_coff_vec"
targ64_selvecs="x86_64_elf64_fbsd_vec x86_64_elf64_vec x86_64_pei_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
# FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
case "${targ}" in
i[3-7]86-*-freebsd3* | i[3-7]86-*-freebsd4 | i[3-7]86-*-freebsd4.0*)
targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
esac
;;
i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec"
targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
;;
i[3-7]86-*-netbsdpe*)
targ_defvec=i386_pe_vec
targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
;;
i[3-7]86-*-openbsd*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec"
;;
i[3-7]86-*-linux-*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_pei_vec"
targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
;;
i[3-7]86-*-nacl*)
targ_defvec=i386_elf32_nacl_vec
targ_selvecs="arm_elf32_nacl_be_vec arm_elf32_nacl_le_vec"
targ64_selvecs="x86_64_elf64_nacl_vec x86_64_elf32_nacl_vec"
targ_archs="$targ_archs bfd_arm_arch"
;;
i[3-7]86-*-redox*)
targ_defvec=i386_elf32_vec
targ_selvecs=
targ64_selvecs=x86_64_elf64_vec
;;
#ifdef BFD64
x86_64-*-cloudabi*)
targ_defvec=x86_64_elf64_cloudabi_vec
want64=true
;;
x86_64-*-darwin*)
targ_defvec=x86_64_mach_o_vec
targ_selvecs="i386_mach_o_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch"
want64=true
;;
x86_64-*-dicos*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec l1om_elf64_vec k1om_elf64_vec"
case "${targ}" in
x86_64-*-rtems*)
targ_selvecs="${targ_selvecs} x86_64_pei_vec"
esac
want64=true
;;
x86_64-*-dragonfly*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
targ_defvec=x86_64_elf64_fbsd_vec
targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
want64=true
;;
x86_64-*-netbsd* | x86_64-*-openbsd*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-linux-*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-nacl*)
targ_defvec=x86_64_elf32_nacl_vec
targ_selvecs="i386_elf32_nacl_vec x86_64_elf64_nacl_vec arm_elf32_nacl_be_vec arm_elf32_nacl_le_vec"
targ_archs="$targ_archs bfd_arm_arch"
want64=true
;;
x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin)
targ_defvec=x86_64_pe_vec
targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_be_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
want64=true
targ_underscore=no
;;
x86_64-*-rdos*)
targ_defvec=x86_64_elf64_vec
want64=true
;;
x86_64-*-redox*)
targ_defvec=x86_64_elf64_vec
targ_selvecs=i386_elf32_vec
want64=true
;;
#endif
i[3-7]86-*-lynxos*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_coff_lynx_vec i386_aout_lynx_vec"
;;
i[3-7]86-*-gnu*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
;;
i[3-7]86-*-msdos*)
targ_defvec=i386_aout_vec
targ_selvecs=i386_msdos_vec
;;
i[3-7]86-*-moss*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_msdos_vec i386_aout_vec"
;;
i[3-7]86-*-beospe*)
targ_defvec=i386_pe_vec
targ_selvecs="i386_pe_vec i386_pei_vec"
;;
i[3-7]86-*-beoself* | i[3-7]86-*-beos*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_pe_vec i386_pei_vec"
;;
i[3-7]86-*-interix*)
targ_defvec=i386_pei_vec
targ_selvecs="i386_pe_vec"
# FIXME: This should eventually be checked at runtime.
targ_cflags=-DSTRICT_PE_FORMAT
;;
i[3-7]86-*-rdos*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec"
;;
i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
targ_defvec=i386_pe_vec
targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
targ_underscore=yes
;;
i[3-7]86-*-vxworks*)
targ_defvec=i386_elf32_vxworks_vec
targ_underscore=yes
;;
i[3-7]86-*-chaos)
targ_defvec=i386_elf32_vec
targ_selfvecs="iamcu_elf32_vec i386chaos_vec"
;;
ia16-*-elf)
targ_defvec=i386_elf32_vec
targ_selvecs="i386_msdos_vec i386_aout_vec"
;;
ip2k-*-elf)
targ_defvec=ip2k_elf32_vec
targ_underscore=yes
;;
iq2000-*-elf)
targ_defvec=iq2000_elf32_vec
;;
lm32-*-elf | lm32-*-rtems*)
targ_defvec=lm32_elf32_vec
targ_selvecs=lm32_elf32_fdpic_vec
;;
lm32-*-*linux*)
targ_defvec=lm32_elf32_fdpic_vec
targ_selvecs=lm32_elf32_vec
;;
m32c-*-elf | m32c-*-rtems*)
targ_defvec=m32c_elf32_vec
targ_underscore=yes
;;
m32r*le-*-linux*)
targ_defvec=m32r_elf32_linux_le_vec
targ_selvecs="m32r_elf32_linux_vec m32r_elf32_linux_le_vec"
;;
m32r*-*-linux*)
targ_defvec=m32r_elf32_linux_vec
targ_selvecs="m32r_elf32_linux_vec m32r_elf32_linux_le_vec"
;;
m32r*le-*-*)
targ_defvec=m32r_elf32_le_vec
targ_selvecs="m32r_elf32_vec m32r_elf32_le_vec"
;;
m32r-*-*)
targ_defvec=m32r_elf32_vec
;;
m68hc11-*-* | m6811-*-*)
targ_defvec=m68hc11_elf32_vec
targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
;;
m68hc12-*-* | m6812-*-*)
targ_defvec=m68hc12_elf32_vec
targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
;;
m68*-*-*)
targ_defvec=m68k_elf32_vec
;;
s12z-*-*)
targ_defvec=s12z_elf32_vec
;;
mcore-*-elf)
targ_defvec=mcore_elf32_be_vec
targ_selvecs="mcore_elf32_be_vec mcore_elf32_le_vec"
;;
mcore-*-pe)
targ_defvec=mcore_pe_be_vec
targ_selvecs="mcore_pe_be_vec mcore_pe_le_vec mcore_pei_be_vec mcore_pei_le_vec"
;;
mep-*-elf)
targ_defvec=mep_elf32_vec
targ_selvecs=mep_elf32_le_vec
;;
metag-*-*)
targ_defvec=metag_elf32_vec
targ_underscore=yes
;;
microblazeel*-*)
targ_defvec=microblaze_elf32_le_vec
targ_selvecs=microblaze_elf32_vec
;;
microblaze*-*)
targ_defvec=microblaze_elf32_vec
targ_selvecs=microblaze_elf32_le_vec
;;
#ifdef BFD64
mips*el-*-netbsd*)
targ_defvec=mips_elf32_trad_le_vec
targ_selvecs="mips_elf32_trad_be_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec mips_ecoff_le_vec mips_ecoff_be_vec"
;;
mips*-*-netbsd*)
targ_defvec=mips_elf32_trad_be_vec
targ_selvecs="mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
;;
mips*-*-irix6*)
targ_defvec=mips_elf32_n_be_vec
targ_selvecs="mips_elf32_n_le_vec mips_elf32_be_vec mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
mips64*-ps2-elf*)
targ_defvec=mips_elf32_n_le_vec
targ_selvecs="mips_elf32_n_le_vec mips_elf32_n_be_vec mips_elf32_be_vec mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
mips*-ps2-elf*)
targ_defvec=mips_elf32_le_vec
targ_selvecs="mips_elf32_be_vec mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
mips*-*-irix5*)
targ_defvec=mips_elf32_be_vec
targ_selvecs="mips_elf32_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
;;
mips*el-*-vxworks*)
targ_defvec=mips_elf32_vxworks_le_vec
targ_selvecs="mips_elf32_le_vec mips_elf32_vxworks_be_vec mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
mips*-*-vxworks*)
targ_defvec=mips_elf32_vxworks_be_vec
targ_selvecs="mips_elf32_be_vec mips_elf32_vxworks_le_vec mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
mips*el-sde-elf*)
targ_defvec=mips_elf32_trad_le_vec
targ_selvecs="mips_elf32_trad_be_vec mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
;;
mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
targ_defvec=mips_elf32_trad_be_vec
targ_selvecs="mips_elf32_trad_le_vec mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
;;
mips*el-*-elf* | mips*-*-chorus*)
targ_defvec=mips_elf32_le_vec
targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
mips*-*-elf* | mips*-*-rtems* | mips*-*-windiss | mips*-*-none)
targ_defvec=mips_elf32_be_vec
targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
mips64*-*-openbsd*)
targ_defvec=mips_elf64_trad_be_vec
targ_selvecs="mips_elf32_ntrad_le_vec mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf64_trad_le_vec"
;;
mips*el-*-openbsd*)
targ_defvec=mips_elf32_le_vec
targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_le_vec mips_ecoff_be_vec"
;;
mips*-*-openbsd*)
targ_defvec=mips_elf32_be_vec
targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
;;
mips64*el-*-linux*)
targ_defvec=mips_elf32_ntrad_le_vec
targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf64_trad_le_vec mips_elf64_trad_be_vec"
;;
mips64*-*-linux*)
targ_defvec=mips_elf32_ntrad_be_vec
targ_selvecs="mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
;;
mips*el-*-linux*)
targ_defvec=mips_elf32_trad_le_vec
targ_selvecs="mips_elf32_trad_be_vec mips_ecoff_le_vec mips_ecoff_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_le_vec mips_elf32_ntrad_be_vec mips_elf64_trad_be_vec"
;;
mips*-*-linux*)
targ_defvec=mips_elf32_trad_be_vec
targ_selvecs="mips_elf32_trad_le_vec mips_ecoff_be_vec mips_ecoff_le_vec mips_elf32_ntrad_be_vec mips_elf64_trad_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_le_vec"
;;
mips64*el-*-freebsd* | mips64*el-*-kfreebsd*-gnu)
# FreeBSD vectors
targ_defvec=mips_elf32_ntradfbsd_le_vec
targ_selvecs="mips_elf32_ntradfbsd_be_vec mips_elf32_tradfbsd_le_vec mips_elf32_tradfbsd_be_vec mips_elf64_tradfbsd_le_vec mips_elf64_tradfbsd_be_vec"
# Generic vectors
targ_selvecs="${targ_selvecs} mips_elf32_ntrad_le_vec mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf64_trad_le_vec mips_elf64_trad_be_vec"
;;
mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu)
# FreeBSD vectors
targ_defvec=mips_elf32_ntradfbsd_be_vec
targ_selvecs="mips_elf32_ntradfbsd_le_vec mips_elf32_tradfbsd_be_vec mips_elf32_tradfbsd_le_vec mips_elf64_tradfbsd_be_vec mips_elf64_tradfbsd_le_vec"
# Generic vectors
targ_selvecs="${targ_selvecs} mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
;;
mips*el-*-freebsd* | mips*el-*-kfreebsd*-gnu)
# FreeBSD vectors
targ_defvec=mips_elf32_tradfbsd_le_vec
targ_selvecs="mips_elf32_tradfbsd_be_vec mips_elf32_ntradfbsd_le_vec mips_elf64_tradfbsd_le_vec mips_elf32_ntradfbsd_be_vec mips_elf64_tradfbsd_be_vec"
# Generic vectors
targ_selvecs="${targ_selvecs} mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_le_vec mips_elf32_ntrad_be_vec mips_elf64_trad_be_vec"
;;
mips*-*-freebsd* | mips*-*-kfreebsd*-gnu)
# FreeBSD vectors
targ_defvec=mips_elf32_tradfbsd_be_vec
targ_selvecs="mips_elf32_tradfbsd_le_vec mips_elf32_ntradfbsd_be_vec mips_elf64_tradfbsd_be_vec mips_elf32_ntradfbsd_le_vec mips_elf64_tradfbsd_le_vec"
# Generic vectors
targ_selvecs="${targ_selvecs} mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf32_ntrad_be_vec mips_elf64_trad_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_le_vec"
;;
mmix-*-*)
targ_defvec=mmix_elf64_vec
targ_selvecs=mmix_mmo_vec
want64=true
;;
#endif
mn10200-*-*)
targ_defvec=mn10200_elf32_vec
targ_underscore=yes
;;
mn10300-*-*)
targ_defvec=mn10300_elf32_vec
targ_underscore=yes
;;
mt-*-elf)
targ_defvec=mt_elf32_vec
;;
msp430-*-*)
targ_defvec=msp430_elf32_vec
targ_selvecs=msp430_elf32_ti_vec
;;
nds32*le-*-linux*)
targ_defvec=nds32_elf32_linux_le_vec
targ_selvecs=nds32_elf32_linux_be_vec
;;
nds32*be-*-linux*)
targ_defvec=nds32_elf32_linux_be_vec
targ_selvecs=nds32_elf32_linux_le_vec
;;
nds32*le-*-*)
targ_defvec=nds32_elf32_le_vec
targ_selvecs=nds32_elf32_be_vec
;;
nds32*be-*-*)
targ_defvec=nds32_elf32_be_vec
targ_selvecs=nds32_elf32_le_vec
;;
#ifdef BFD64
nfp-*-*)
targ_defvec=nfp_elf64_vec
;;
#endif
ns32k-pc532-mach* | ns32k-pc532-ux*)
targ_defvec=ns32k_aout_pc532mach_vec
targ_underscore=yes
;;
ns32k-*-netbsd* | ns32k-*-lites* | ns32k-*-openbsd*)
targ_defvec=ns32k_aout_pc532nbsd_vec
targ_underscore=yes
;;
nios2eb-*-*)
targ_defvec=nios2_elf32_be_vec
targ_selvecs=nios2_elf32_le_vec
;;
nios2el-*-*)
targ_defvec=nios2_elf32_le_vec
targ_selvecs=nios2_elf32_be_vec
;;
nios2-*-*)
targ_defvec=nios2_elf32_le_vec
targ_selvecs=nios2_elf32_be_vec
;;
or1k-*-elf | or1k-*-linux* | or1k-*-rtems*)
targ_defvec=or1k_elf32_vec
;;
or1knd-*-elf | or1knd-*-linux* | or1knd-*-rtems*)
targ_defvec=or1k_elf32_vec
;;
pdp11-*-*)
targ_defvec=pdp11_aout_vec
targ_underscore=yes
;;
pj-*-*)
targ_defvec=pj_elf32_vec
targ_selvecs="pj_elf32_vec pj_elf32_le_vec"
;;
pjl-*-*)
targ_defvec=pj_elf32_le_vec
targ_selvecs="pj_elf32_le_vec pj_elf32_vec i386_elf32_vec iamcu_elf32_vec"
;;
powerpc-*-aix5.[01] | rs6000-*-aix5.[01])
targ_defvec=rs6000_xcoff_vec
targ_selvecs="rs6000_xcoff64_aix_vec"
want64=true
;;
#ifdef BFD64
powerpc64-*-aix5.[01] | rs6000-*-aix5.[01])
targ_defvec=rs6000_xcoff64_aix_vec
targ_selvecs="rs6000_xcoff_vec"
want64=true
;;
#endif
powerpc-*-aix[5-9]* | rs6000-*-aix[5-9]*)
targ_cflags=-DAIX_WEAK_SUPPORT
targ_defvec=rs6000_xcoff_vec
targ_selvecs="rs6000_xcoff64_aix_vec"
want64=true
;;
#ifdef BFD64
powerpc64-*-aix[5-9]* | rs6000-*-aix[5-9]*)
targ_cflags=-DAIX_WEAK_SUPPORT
targ_defvec=rs6000_xcoff64_aix_vec
targ_selvecs="rs6000_xcoff_vec"
want64=true
;;
#endif
powerpc-*-aix* | powerpc-*-beos* | rs6000-*-*)
targ_defvec=rs6000_xcoff_vec
targ64_selvecs=rs6000_xcoff64_vec
case "${targ}" in
*-*-aix4.[3456789]* | *-*-aix[56789]*)
want64=true;;
*)
targ_cflags=-DSMALL_ARCHIVE;;
esac
;;
#ifdef BFD64
powerpc64-*-aix*)
targ_defvec=rs6000_xcoff64_vec
targ_selvecs=rs6000_xcoff_vec
want64=true
;;
powerpc64-*-freebsd*)
targ_defvec=powerpc_elf64_fbsd_vec
targ_selvecs="powerpc_elf64_vec powerpc_elf32_vec powerpc_elf32_fbsd_vec powerpc_elf32_le_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec"
want64=true
;;
powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \
powerpc64-*-*bsd*)
targ_defvec=powerpc_elf64_vec
targ_selvecs="powerpc_elf64_le_vec powerpc_elf32_vec powerpc_elf32_le_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec"
want64=true
;;
powerpc64le-*-elf* | powerpcle-*-elf64* | powerpc64le-*-linux* | \
powerpc64le-*-*bsd*)
targ_defvec=powerpc_elf64_le_vec
targ_selvecs="powerpc_elf64_vec powerpc_elf32_le_vec powerpc_elf32_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec"
want64=true
;;
#endif
powerpc-*-*freebsd*)
targ_defvec=powerpc_elf32_fbsd_vec
targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_elf32_le_vec powerpc_boot_vec"
targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec powerpc_elf64_fbsd_vec"
;;
powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
powerpc-*-solaris2* | powerpc-*-linux-* | powerpc-*-rtems* | \
powerpc-*-chorus*)
targ_defvec=powerpc_elf32_vec
targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec powerpc_boot_vec"
targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
;;
powerpc-*-kaos*)
targ_defvec=powerpc_elf32_vec
targ_selvecs="powerpc_elf32_le_vec powerpc_boot_vec"
targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
;;
powerpc-*-darwin* | powerpc-*-macos10* | powerpc-*-rhapsody*)
targ_defvec=mach_o_be_vec
targ_selvecs="mach_o_be_vec mach_o_le_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
targ_archs="$targ_archs bfd_i386_arch"
;;
powerpc-*-macos*)
targ_defvec=powerpc_xcoff_vec
;;
powerpc-*-lynxos*)
targ_defvec=powerpc_elf32_vec
targ_selvecs="rs6000_xcoff_vec"
targ_cflags=-DSMALL_ARCHIVE
;;
powerpc-*-nto*)
targ_defvec=powerpc_elf32_vec
targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec powerpc_boot_vec"
;;
powerpc-*-vxworks* | powerpc-*-windiss*)
targ_defvec=powerpc_elf32_vxworks_vec
targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_elf32_le_vec powerpc_boot_vec"
targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
;;
powerpcle-*-nto*)
targ_defvec=powerpc_elf32_le_vec
targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_boot_vec"
;;
powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
powerpcle-*-solaris2* | powerpcle-*-linux-* | powerpcle-*-vxworks*)
targ_defvec=powerpc_elf32_le_vec
targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_boot_vec"
targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
;;
powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin*)
targ_defvec=powerpc_pe_le_vec
targ_selvecs="powerpc_pei_le_vec powerpc_pei_vec powerpc_pe_le_vec powerpc_pe_vec"
;;
pru-*-*)
targ_defvec=pru_elf32_vec
;;
#ifdef BFD64
riscv-*-* | riscv32*-*-*)
targ_defvec=riscv_elf32_vec
targ_selvecs="riscv_elf32_vec riscv_elf64_vec"
want64=true
;;
riscv64*-*-*)
targ_defvec=riscv_elf64_vec
targ_selvecs="riscv_elf32_vec riscv_elf64_vec"
want64=true
;;
#endif
rl78-*-elf)
targ_defvec=rl78_elf32_vec
targ_underscore=yes
;;
rx-*-elf)
targ_defvec=rx_elf32_le_vec
targ_selvecs="rx_elf32_be_vec rx_elf32_le_vec rx_elf32_be_ns_vec"
targ_underscore=yes
;;
s390-*-linux*)
targ_defvec=s390_elf32_vec
targ64_selvecs=s390_elf64_vec
want64=true
;;
#ifdef BFD64
s390x-*-linux*)
targ_defvec=s390_elf64_vec
targ_selvecs=s390_elf32_vec
want64=true
;;
s390x-*-tpf*)
targ_defvec=s390_elf64_vec
want64=true
;;
score*-*-elf*)
targ_defvec=score_elf32_be_vec
targ_selvecs=score_elf32_le_vec
;;
#endif /* BFD64 */
sh*eb-*-linux*)
targ_defvec=sh_elf32_linux_be_vec
targ_selvecs=sh_elf32_linux_vec
targ_selvecs="${targ_selvecs} sh_elf32_fdpic_le_vec sh_elf32_fdpic_be_vec"
;;
sh*-*-linux*)
targ_defvec=sh_elf32_linux_vec
targ_selvecs=sh_elf32_linux_be_vec
targ_selvecs="${targ_selvecs} sh_elf32_fdpic_le_vec sh_elf32_fdpic_be_vec"
;;
sh-*-uclinux* | sh[12]-*-uclinux*)
targ_defvec=sh_elf32_vec
targ_selvecs="sh_elf32_le_vec sh_elf32_linux_be_vec sh_elf32_linux_vec sh_elf32_fdpic_le_vec sh_elf32_fdpic_be_vec"
;;
sh*l*-*-netbsdelf*)
targ_defvec=sh_elf32_nbsd_le_vec
targ_selvecs="sh_elf32_nbsd_vec sh_coff_vec sh_coff_le_vec"
;;
sh*-*-netbsdelf*)
targ_defvec=sh_elf32_nbsd_vec
targ_selvecs="sh_elf32_nbsd_le_vec sh_coff_vec sh_coff_le_vec"
;;
shl*-*-elf* | sh[1234]l*-*-elf* | sh3el*-*-elf* | shl*-*-kaos*)
targ_defvec=sh_elf32_le_vec
targ_selvecs="sh_elf32_vec sh_coff_le_vec sh_coff_vec sh_coff_small_le_vec sh_coff_small_vec"
targ_underscore=yes
;;
sh-*-elf* | sh[1234]*-elf* | sh-*-rtems* | sh-*-kaos*)
targ_defvec=sh_elf32_vec
targ_selvecs="sh_elf32_le_vec sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
targ_underscore=yes
;;
sh-*-nto*)
targ_defvec=sh_elf32_vec
targ_selvecs="sh_elf32_le_vec sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
targ_underscore=yes
;;
sh*-*-openbsd*)
targ_defvec=sh_elf32_nbsd_le_vec
targ_selvecs="sh_elf32_nbsd_vec sh_coff_vec sh_coff_le_vec"
;;
sh-*-pe)
targ_defvec=sh_pe_le_vec
targ_selvecs="sh_pe_le_vec sh_pei_le_vec"
targ_underscore=yes
;;
sh-*-vxworks)
targ_defvec=sh_elf32_vxworks_vec
targ_selvecs="sh_elf32_vxworks_le_vec"
# FIXME None of the following are actually used on this target, but
# they're necessary for coff-sh.c (which is unconditionally used) to be
# compiled correctly.
targ_selvecs="$targ_selvecs sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
targ_underscore=yes
;;
sh-*-*)
targ_defvec=sh_coff_vec
targ_selvecs="sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
targ_underscore=yes
;;
sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
targ_defvec=sparc_elf32_sol2_vec
;;
#ifdef BFD64
sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
targ_defvec=sparc_elf32_sol2_vec
targ_selvecs="sparc_elf64_sol2_vec"
want64=true
;;
sparc64-*-freebsd* | sparc64-*-kfreebsd*-gnu)
targ_defvec=sparc_elf64_fbsd_vec
targ_selvecs="sparc_elf64_vec sparc_elf32_vec"
;;
sparc64*-*-*)
targ_defvec=sparc_elf64_vec
targ_selvecs="sparc_elf32_vec"
want64=true
;;
#endif
sparc-*-linux-* | sparcv*-*-linux-*)
targ_defvec=sparc_elf32_vec
targ_selvecs="sparc_elf64_vec"
;;
sparc-*-vxworks*)
targ_defvec=sparc_elf32_vxworks_vec
targ_selvecs="sparc_elf32_vec"
;;
sparc*-*-*)
targ_defvec=sparc_elf32_vec
;;
spu-*-elf)
targ_defvec=spu_elf32_vec
want64=true
;;
tic6x-*-elf)
targ_defvec=tic6x_elf32_c6000_le_vec
targ_selvecs="tic6x_elf32_c6000_be_vec tic6x_elf32_le_vec tic6x_elf32_be_vec"
;;
tic6x-*-uclinux)
targ_defvec=tic6x_elf32_linux_le_vec
targ_selvecs="tic6x_elf32_linux_be_vec tic6x_elf32_le_vec tic6x_elf32_be_vec"
;;
tic80*-*-*)
targ_defvec=tic80_coff_vec
targ_underscore=yes
;;
#ifdef BFD64
tilegx-*-*)
targ_defvec=tilegx_elf64_le_vec
targ_selvecs="tilegx_elf64_be_vec tilegx_elf32_be_vec tilegx_elf32_le_vec"
;;
tilegxbe-*-*)
targ_defvec=tilegx_elf64_be_vec
targ_selvecs="tilegx_elf64_le_vec tilegx_elf32_be_vec tilegx_elf32_le_vec"
;;
#endif
tilepro-*-*)
targ_defvec=tilepro_elf32_vec
;;
ft32*-*-*)
targ_defvec=ft32_elf32_vec
;;
v850*-*-*)
targ_defvec=v850_elf32_vec
targ_selvecs="v800_elf32_vec"
targ_underscore=yes
;;
vax-*-netbsdelf*)
targ_defvec=vax_elf32_vec
targ_selvecs="vax_aout_nbsd_vec vax_aout_1knbsd_vec"
;;
vax-*-netbsdaout* | vax-*-netbsd*)
targ_defvec=vax_aout_nbsd_vec
targ_selvecs="vax_elf32_vec vax_aout_1knbsd_vec"
targ_underscore=yes
;;
vax-*-openbsd*)
targ_defvec=vax_aout_nbsd_vec
targ_underscore=yes
;;
vax-*-linux-*)
targ_defvec=vax_elf32_vec
;;
visium-*-elf)
targ_defvec=visium_elf32_vec
;;
wasm32-*-*)
targ_defvec=wasm32_elf32_vec
targ_selvecs="wasm_vec"
;;
xgate-*-*)
targ_defvec=xgate_elf32_vec
targ_selvecs="xgate_elf32_vec"
;;
xstormy16-*-elf)
targ_defvec=xstormy16_elf32_vec
;;
xtensa*-*-*)
targ_defvec=xtensa_elf32_le_vec
targ_selvecs=xtensa_elf32_be_vec
;;
xc16x-*-elf)
targ_defvec=xc16x_elf32_vec
;;
z80-*-*)
targ_defvec=z80_coff_vec
targ_underscore=no
;;
z8k*-*-*)
targ_defvec=z8k_coff_vec
targ_underscore=yes
;;
# END OF targmatch.h
*)
echo 1>&2 "*** BFD does not support target ${targ}."
echo 1>&2 "*** Look in bfd/config.bfd for supported targets."
exit 1
;;
esac
# All MIPS ELF targets need a 64-bit bfd_vma.
case "${targ_defvec} ${targ_selvecs}" in
*mips_elf*)
want64=true
;;
esac
case "${host64}${want64}" in
*true*)
targ_selvecs="${targ_selvecs} ${targ64_selvecs}"
;;
esac
# If we support any ELF target, then automatically add support for the
# generic ELF targets. This permits an objdump with some ELF support
# to be used on an arbitrary ELF file for anything other than
# relocation information.
case "${targ_defvec} ${targ_selvecs}" in
*elf64* | *mips_elf32_n*)
targ_selvecs="${targ_selvecs} elf64_le_vec elf64_be_vec elf32_le_vec elf32_be_vec"
;;
*elf32*)
targ_selvecs="${targ_selvecs} elf32_le_vec elf32_be_vec"
;;
esac
# If we support Intel MCU target, then add support for bfd_iamcu_arch.
case "${targ_defvec} ${targ_selvecs}" in
*iamcu_elf32*)
targ_archs="$targ_archs bfd_iamcu_arch"
;;
esac
# If we support Intel L1OM target, then add support for bfd_l1om_arch.
case "${targ_defvec} ${targ_selvecs}" in
*l1om_elf64*)
targ_archs="$targ_archs bfd_l1om_arch"
;;
esac
# If we support Intel K1OM target, then add support for bfd_k1om_arch.
case "${targ_defvec} ${targ_selvecs}" in
*k1om_elf64*)
targ_archs="$targ_archs bfd_k1om_arch"
;;
esac