xref: /netbsd-src/external/gpl3/binutils.old/dist/bfd/config.bfd (revision e992f068c547fd6e84b3f104dc2340adcc955732)
1# config.bfd
2#
3#   Copyright (C) 2012-2022 Free Software Foundation, Inc.
4#
5# This file is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 3 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; see the file COPYING3.  If not see
17# <http://www.gnu.org/licenses/>.
18#
19# Convert a canonical host type into a BFD host type.
20# Set shell variable targ to canonical target name, and run
21# using ``. config.bfd''.
22# Sets the following shell variables:
23#  targ_defvec		Default vector for this target
24#  targ_selvecs		Vectors to build for this target
25#  targ64_selvecs	Vectors to build if --enable-64-bit-bfd is given
26#			or if host is 64 bit.
27#  targ_archs		Architectures for this target
28#  targ_cflags		$(CFLAGS) for this target (FIXME: pretty bogus)
29#  targ_underscore	Whether underscores are used: yes or no
30
31# Part of this file is processed by targmatch.sed to generate the
32# targmatch.h file.  The #ifdef and #endif lines that appear below are
33# copied directly into targmatch.h.
34
35# The binutils c++filt program wants to know whether underscores are
36# stripped or not.  That is why we set targ_underscore.  c++filt uses
37# this information to choose a default.  This information is
38# duplicated in the symbol_leading_char field of the BFD target
39# vector, but c++filt does not deal with object files and is not
40# linked against libbfd.a.  It is not terribly important that c++filt
41# get this right; it is just convenient.
42
43targ_defvec=
44targ_selvecs=
45targ64_selvecs=
46targ_cflags=
47targ_underscore=no
48
49# Catch obsolete configurations.
50case $targ in
51 null)
52    if test "x$enable_obsolete" != xyes; then
53      echo "*** Configuration $targ is obsolete." >&2
54      echo "*** Specify --enable-obsolete to build it anyway." >&2
55      echo "*** Support will be REMOVED in the next major release of BINUTILS," >&2
56      echo "*** unless a maintainer comes forward." >&2
57      exit 1
58    fi;;
59esac
60
61# Warn on changed defaulting
62case $targ in
63 *-*-netbsdelf* | *-*-netbsdaout* | *-*-netbsdpe*)
64    # Explicit, no defaulting
65    ;;
66 ns32k-*-netbsd*)
67    # The obsolete warning below is enough, and ns32k does not have ELF support
68    ;;
69 *-*-netbsd* )
70    targ_migrated=`echo "$targ" | sed 's/netbsd/netbsdaout/'`
71    echo "*** WARNING: $targ is now defaults to meaning ELF not a.out." >&2
72    echo "*** Use $targ_migrated instead to explicitly specify a.out." >&2
73    ;;
74esac
75
76case $targ in
77 mips*-*-irix5* | mips*-*-irix6*)
78    # Not obsolete
79    ;;
80 *-adobe-* | \
81 *-go32-rtems* | \
82 *-sony-* | \
83 *-tandem-* | \
84 *-*-ieee* | \
85 *-*-netbsdpe* | \
86 *-*-netware* | \
87 *-*-rtemsaout* | \
88 *-*-rtemscoff* | \
89 a29k-* | \
90 arm*-*-aout | \
91 arm-*-coff | \
92 arm*-*-netbsdaout* | \
93 arm-*-openbsd* | \
94 arm-*-oabi | \
95 arm-*-riscix* | \
96 arm*-*-symbianelf* | \
97 arm-epoc-pe* | \
98 c30-*-*aout* | tic30-*-*aout* | \
99 cr16c-*-* | \
100 h8300*-*-coff | \
101 h8500*-*-coff | \
102 hppa*-*-rtems* | \
103 i[3-7]86-*-unixware* | \
104 i[3-7]86-*-dgux* | \
105 i[3-7]86-*-chorus* | \
106 i[3-7]86-*-sysv* | \
107 i[3-7]86-*-isc* | \
108 i[3-7]86-*-sco* | \
109 i[3-7]86-*-coff | \
110 i[3-7]86-*-aix* | \
111 i[3-7]86-sequent-bsd* | \
112 i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | i[3-7]86-*-freebsd[12] | \
113 i[3-7]86-*-netbsdaout* | \
114 i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3] | \
115 i[3-7]86-*-linux*aout* | \
116 i[3-7]86-*-mach* | i[3-7]86-*-osf1mk* | \
117 i[3-7]86-*-os9k | \
118 i[3-7]86-none-* | \
119 i[3-7]86-*-aout* | i[3-7]86*-*-vsta* | \
120 i370-* | \
121 i860-*-* | \
122 i960-*-* | \
123 m68*-*-bsd* | \
124 m68*-*-aout* | \
125 m68*-*-coff* | \
126 m68*-*-hpux* | \
127 m68*-*-linux*aout* | \
128 m68*-*-lynxos* | \
129 m68*-*-openbsd* | \
130 m68*-*-os68k* | \
131 m68*-*-psos* | \
132 m68*-*-sunos* | \
133 m68*-*-sysv* | \
134 m68*-*-vsta* | \
135 m68*-*-vxworks* | \
136 m68*-apollo-* | \
137 m68*-apple-aux* | \
138 m68*-bull-sysv* | \
139 m68*-ericsson-* | \
140 m68*-motorola-sysv* | \
141 m68*-netx-* | \
142 m88*-*-* | \
143 maxq-*-coff | \
144 mips*-*-bsd* | \
145 mips*-*-ecoff* | \
146 mips*-*-lnews* | \
147 mips*-*-mach3* | \
148 mips*-*-pe* | \
149 mips*-*-riscos* | \
150 mips*-*-sysv* | \
151 mips*-big-* | \
152 mips*-dec-* | \
153 mips*-sgi-* | \
154 mips*el-*-rtems* | \
155 m32c-*-rtems* | \
156 ns32k-*-netbsd* | \
157 openrisc-*-* | \
158 or32-*-* | \
159 powerpc-*-lynxos* | powerpc-*-windiss* | \
160 powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin* | \
161 sh*-*-netbsdaout* | \
162 sh*-*-symbianelf* | sh5*-*-* | sh64*-*-* | \
163 sparc*-*-*aout* | \
164 sparc*-*-chorus* | \
165 sparc*-*-coff* | \
166 sparc-*-lynxos* | \
167 sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1] | \
168 tahoe-*-* | \
169 vax-*-bsd* | vax-*-ultrix* | vax-*-vms* | \
170 w65-*-* | \
171 we32k-*-* | \
172 xc16x-*-* | \
173 null)
174    echo "*** Configuration $targ is now obsolete" >&2
175    echo "*** and so support for it has been REMOVED." >&2
176    exit 1
177    ;;
178esac
179
180targ_cpu=`echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
181case "${targ_cpu}" in
182aarch64*)	 targ_archs="bfd_aarch64_arch bfd_arm_arch";;
183alpha*)		 targ_archs=bfd_alpha_arch ;;
184am33_2.0*)	 targ_archs=bfd_mn10300_arch ;;
185arc*)		 targ_archs=bfd_arc_arch ;;
186arm*)		 targ_archs=bfd_arm_arch ;;
187amdgcn*)	 targ_archs=bfd_amdgcn_arch ;;
188bfin*)		 targ_archs=bfd_bfin_arch ;;
189c30*)		 targ_archs=bfd_tic30_arch ;;
190c4x*)		 targ_archs=bfd_tic4x_arch ;;
191c54x*)		 targ_archs=bfd_tic54x_arch ;;
192cr16*)		 targ_archs=bfd_cr16_arch ;;
193crisv32)	 targ_archs=bfd_cris_arch ;;
194crx*)		 targ_archs=bfd_crx_arch ;;
195csky*)		 targ_archs=bfd_csky_arch ;;
196dlx*)		 targ_archs=bfd_dlx_arch ;;
197fido*)		 targ_archs=bfd_m68k_arch ;;
198hppa*)		 targ_archs=bfd_hppa_arch ;;
199i[3-7]86)	 targ_archs=bfd_i386_arch ;;
200ia16)		 targ_archs=bfd_i386_arch ;;
201loongarch*)	 targ_archs=bfd_loongarch_arch ;;
202m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
203m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
204m68*)		 targ_archs=bfd_m68k_arch ;;
205microblaze*)	 targ_archs=bfd_microblaze_arch ;;
206mips*)		 targ_archs=bfd_mips_arch ;;
207nds32*)		 targ_archs=bfd_nds32_arch ;;
208nios2*)          targ_archs=bfd_nios2_arch ;;
209or1k*|or1knd*)	 targ_archs=bfd_or1k_arch ;;
210pdp11*)		 targ_archs=bfd_pdp11_arch ;;
211pj*)		 targ_archs="bfd_pj_arch bfd_i386_arch";;
212powerpc*)	 targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;;
213pru*)		 targ_archs=bfd_pru_arch ;;
214riscv*)		 targ_archs=bfd_riscv_arch ;;
215rs6000)		 targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;;
216s12z*)		 targ_archs=bfd_s12z_arch ;;
217s390*)		 targ_archs=bfd_s390_arch ;;
218sh*)		 targ_archs=bfd_sh_arch ;;
219sparc*)		 targ_archs=bfd_sparc_arch ;;
220spu*)            targ_archs=bfd_spu_arch ;;
221tilegx*)	 targ_archs=bfd_tilegx_arch ;;
222tilepro*)	 targ_archs=bfd_tilepro_arch ;;
223v850*)		 targ_archs="bfd_v850_arch bfd_v850_rh850_arch" ;;
224visium*)	 targ_archs=bfd_visium_arch ;;
225x86_64*)	 targ_archs=bfd_i386_arch ;;
226xtensa*)	 targ_archs=bfd_xtensa_arch ;;
227z80*|r800|z180|gbz80|ez80*)	 targ_archs=bfd_z80_arch ;;
228z8k*)		 targ_archs=bfd_z8k_arch ;;
229*)		 targ_archs=bfd_${targ_cpu}_arch ;;
230esac
231
232
233# WHEN ADDING ENTRIES TO THIS MATRIX:
234#  Make sure that the left side always has two dashes.  Otherwise you
235#  can get spurious matches.  Even for unambiguous cases, do this as a
236#  convention, else the table becomes a real mess to understand and maintain.
237
238case "${targ}" in
239# START OF targmatch.h
240#ifdef BFD64
241  aarch64-*-darwin*)
242    targ_defvec=aarch64_mach_o_vec
243    targ_selvecs="arm_mach_o_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec"
244    targ_archs="$targ_archs bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch"
245    want64=true
246    ;;
247  aarch64-*-elf | aarch64-*-rtems* | aarch64-*-genode*)
248    targ_defvec=aarch64_elf64_le_vec
249    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_vec"
250    want64=true
251    ;;
252  aarch64_be-*-elf)
253    targ_defvec=aarch64_elf64_be_vec
254    targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
255    want64=true
256    ;;
257  aarch64-*-freebsd*)
258    targ_defvec=aarch64_elf64_le_vec
259    targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec"
260    want64=true
261    ;;
262  aarch64-*-fuchsia*)
263    targ_defvec=aarch64_elf64_le_vec
264    targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec"
265    want64=true
266    ;;
267  aarch64-*-cloudabi*)
268    targ_defvec=aarch64_elf64_le_cloudabi_vec
269    targ_selvecs=aarch64_elf64_be_cloudabi_vec
270    want64=true
271    ;;
272  aarch64-*-haiku*)
273    targ_defvec=aarch64_elf64_le_vec
274    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
275    want64=true
276    ;;
277  aarch64-*-linux* | aarch64-*-netbsd*)
278    targ_defvec=aarch64_elf64_le_vec
279    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_vec"
280    want64=true
281    ;;
282  aarch64_be-*-linux* | aarch64_be-*-netbsd*)
283    targ_defvec=aarch64_elf64_be_vec
284    targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
285    want64=true
286    ;;
287  alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
288    targ_defvec=alpha_elf64_fbsd_vec
289    targ_selvecs="alpha_elf64_vec alpha_ecoff_le_vec"
290    want64=true
291    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
292    case "${targ}" in
293      alpha*-*-freebsd3* | alpha*-*-freebsd4 | alpha*-*-freebsd4.0*)
294	targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
295    esac
296    ;;
297  alpha*-*-netbsd* | alpha*-*-openbsd*)
298    targ_defvec=alpha_elf64_vec
299    targ_selvecs=alpha_ecoff_le_vec
300    want64=true
301    ;;
302  alpha*-*-linux*ecoff*)
303    targ_defvec=alpha_ecoff_le_vec
304    targ_selvecs=alpha_elf64_vec
305    want64=true
306    ;;
307  alpha*-*-linux-* | alpha*-*-elf*)
308    targ_defvec=alpha_elf64_vec
309    targ_selvecs=alpha_ecoff_le_vec
310    want64=true
311    ;;
312  alpha*-*-*vms*)
313    targ_defvec=alpha_vms_vec
314    targ_selvecs=alpha_vms_lib_txt_vec
315    want64=true
316    ;;
317  alpha*-*-*)
318    targ_defvec=alpha_ecoff_le_vec
319    want64=true
320    ;;
321  amdgcn-*-*)
322    targ_defvec=amdgcn_elf64_le_vec
323    want64=true
324    ;;
325  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
326    targ_defvec=ia64_elf64_le_vec
327    targ_selvecs="ia64_elf64_be_vec ia64_pei_vec"
328    want64=true
329    ;;
330  ia64*-*-hpux*)
331    targ_defvec=ia64_elf32_hpux_be_vec
332    targ_selvecs="ia64_elf64_hpux_be_vec"
333    want64=true
334    ;;
335  ia64*-*-*vms*)
336    targ_defvec=ia64_elf64_vms_vec
337    targ_selvecs=alpha_vms_lib_txt_vec
338    want64=true
339    ;;
340#endif /* BFD64 */
341
342  am33_2.0-*-linux*)
343    targ_defvec=am33_elf32_linux_vec
344    ;;
345
346  arc*eb-*-elf* | arc*eb-*-linux*)
347    targ_defvec=arc_elf32_be_vec
348    targ_selvecs=arc_elf32_le_vec
349    ;;
350
351  arc*-*-elf* | arc*-*-linux*)
352    targ_defvec=arc_elf32_le_vec
353    targ_selvecs=arc_elf32_be_vec
354    ;;
355
356  arm-*-darwin*)
357    targ_defvec=arm_mach_o_vec
358    targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec"
359    targ_archs="$targ_archs bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch"
360    ;;
361  arm-*-fuchsia*)
362    targ_defvec=arm_elf32_le_vec
363    targ_selvecs="arm_elf32_be_vec"
364    ;;
365  arm*-*-haiku*)
366    targ_defvec=arm_elf32_le_vec
367    targ_selvecs="arm_elf32_fdpic_le_vec arm_elf32_be_vec arm_elf32_fdpic_be_vec arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
368    ;;
369  arm-*-nacl*)
370    targ_defvec=arm_elf32_nacl_le_vec
371    targ_selvecs="arm_elf32_nacl_be_vec"
372    ;;
373  armeb-*-nacl*)
374    targ_defvec=arm_elf32_nacl_be_vec
375    targ_selvecs="arm_elf32_nacl_le_vec"
376    ;;
377  arm*eb-*-netbsd*)
378    targ_defvec=arm_elf32_be_vec
379    targ_selvecs="arm_elf32_le_vec"
380    ;;
381  arm*-*-netbsd*)
382    targ_defvec=arm_elf32_le_vec
383    targ_selvecs="arm_elf32_be_vec"
384    ;;
385  arm-*-nto* | nto*arm*)
386    targ_defvec=arm_elf32_le_vec
387    targ_selvecs=arm_elf32_be_vec
388    targ_cflags=-D__QNXTARGET__
389    ;;
390  arm-wince-pe | arm-*-wince | arm*-*-mingw32ce* | arm*-*-cegcc*)
391    targ_defvec=arm_pe_wince_le_vec
392    targ_selvecs="arm_pe_wince_le_vec arm_pe_wince_be_vec arm_pei_wince_le_vec arm_pei_wince_be_vec"
393    targ_underscore=no
394    targ_cflags="-DARM_WINCE -DARM_COFF_BUGFIX"
395    ;;
396  arm-*-pe*)
397    targ_defvec=arm_pe_le_vec
398    targ_selvecs="arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
399    targ_underscore=yes
400    ;;
401  arm-*-phoenix*)
402    targ_defvec=arm_elf32_le_vec
403    targ_selvecs=arm_elf32_be_vec
404    ;;
405  armeb-*-elf | arm*b-*-freebsd* | arm*b-*-linux-* | armeb-*-eabi*)
406    targ_defvec=arm_elf32_be_vec
407    targ_selvecs=arm_elf32_le_vec
408    ;;
409  arm-*-kaos*)
410    targ_defvec=arm_elf32_le_vec
411    targ_selvecs=arm_elf32_be_vec
412    ;;
413  arm-*-elf | arm*-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \
414  arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \
415  arm*-*-eabi* | arm-*-rtems* | arm*-*-uclinuxfdpiceabi)
416    targ_defvec=arm_elf32_le_vec
417    targ_selvecs="arm_elf32_fdpic_le_vec arm_elf32_be_vec arm_elf32_fdpic_be_vec"
418    ;;
419  arm*-*-vxworks | arm*-*-windiss)
420    targ_defvec=arm_elf32_vxworks_le_vec
421    targ_selvecs=arm_elf32_vxworks_be_vec
422    ;;
423  arm9e-*-elf)
424    targ_defvec=arm_elf32_le_vec
425    targ_selvecs=arm_elf32_be_vec
426    ;;
427
428  avr-*-*)
429    targ_defvec=avr_elf32_vec
430    ;;
431
432  bfin-*-*)
433    targ_defvec=bfin_elf32_vec
434    targ_selvecs=bfin_elf32_fdpic_vec
435    targ_underscore=yes
436    ;;
437
438  c30-*-*coff* | tic30-*-*coff*)
439    targ_defvec=tic30_coff_vec
440    ;;
441
442  c4x-*-*coff* | tic4x-*-*coff*)
443    targ_defvec=tic4x_coff1_vec
444    targ_selvecs="tic4x_coff1_beh_vec tic4x_coff2_vec tic4x_coff2_beh_vec tic4x_coff0_vec tic4x_coff0_beh_vec"
445    targ_underscore=yes
446    ;;
447
448  c54x*-*-*coff* | tic54x-*-*coff*)
449    targ_defvec=tic54x_coff1_vec
450    targ_selvecs="tic54x_coff1_beh_vec tic54x_coff2_vec tic54x_coff2_beh_vec tic54x_coff0_vec tic54x_coff0_beh_vec"
451    targ_underscore=yes
452    ;;
453
454  cr16-*-elf* | cr16*-*-uclinux*)
455    targ_defvec=cr16_elf32_vec
456    targ_underscore=yes
457    ;;
458
459  cris-*-* | crisv32-*-*)
460    targ_defvec=cris_aout_vec
461    targ_selvecs="cris_elf32_us_vec cris_elf32_vec"
462    case "${targ}" in
463	*-*-linux*) ;;
464	*) targ_underscore=yes ;;
465    esac
466    want64=true
467    ;;
468
469  crx-*-elf*)
470    targ_defvec=crx_elf32_vec
471    targ_underscore=yes
472    ;;
473
474  csky-*-elf* | csky-*-linux* )
475    targ_defvec=csky_elf32_le_vec
476    targ_selvecs="csky_elf32_be_vec csky_elf32_le_vec"
477    ;;
478
479  d10v-*-*)
480    targ_defvec=d10v_elf32_vec
481    ;;
482
483  dlx-*-elf*)
484    targ_defvec=dlx_elf32_be_vec
485    targ_selvecs="dlx_elf32_be_vec"
486    ;;
487
488  d30v-*-*)
489    targ_defvec=d30v_elf32_vec
490    ;;
491
492#ifdef BFD64
493  bpf-*-none)
494    targ_defvec=bpf_elf64_le_vec
495    targ_selvecs=bpf_elf64_be_vec
496    targ_underscore=yes
497    ;;
498#endif
499
500  epiphany-*-*)
501    targ_defvec=epiphany_elf32_vec
502    targ_underscore=yes
503    ;;
504
505  fido-*-elf* )
506    targ_defvec=m68k_elf32_vec
507    ;;
508
509  fr30-*-elf)
510    targ_defvec=fr30_elf32_vec
511    ;;
512
513  frv-*-elf)
514    targ_defvec=frv_elf32_vec
515    targ_selvecs=frv_elf32_fdpic_vec
516    ;;
517
518  frv-*-*linux*)
519    targ_defvec=frv_elf32_fdpic_vec
520    targ_selvecs=frv_elf32_vec
521    ;;
522
523  moxie-*-elf | moxie-*-rtems* | moxie-*-uclinux)
524    targ_defvec=moxie_elf32_be_vec
525    targ_selvecs=moxie_elf32_le_vec
526    ;;
527
528  moxie-*-moxiebox*)
529    targ_defvec=moxie_elf32_le_vec
530    ;;
531
532  h8300*-*-elf | h8300*-*-rtems*)
533    targ_defvec=h8300_elf32_vec
534    targ_underscore=yes
535    ;;
536
537  h8300*-*-linux*)
538    targ_defvec=h8300_elf32_linux_vec
539    ;;
540
541#ifdef BFD64
542  hppa*64*-*-linux-*)
543    targ_defvec=hppa_elf64_linux_vec
544    targ_selvecs=hppa_elf64_vec
545    want64=true
546    ;;
547  hppa*64*-*-hpux11*)
548    targ_defvec=hppa_elf64_vec
549    targ_selvecs=hppa_elf64_linux_vec
550    targ_cflags=-DHPUX_LARGE_AR_IDS
551    want64=true
552    ;;
553#endif
554
555  hppa*-*-linux-*)
556    targ_defvec=hppa_elf32_linux_vec
557    targ_selvecs=hppa_elf32_vec
558    ;;
559  hppa*-*-netbsd*)
560    targ_defvec=hppa_elf32_nbsd_vec
561    targ_selvecs="hppa_elf32_vec hppa_elf32_linux_vec"
562    ;;
563  hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-openbsd*)
564    targ_defvec=hppa_elf32_vec
565    targ_selvecs=hppa_elf32_linux_vec
566    ;;
567
568  hppa*-*-bsd*)
569    targ_defvec=hppa_som_vec
570    targ_selvecs=hppa_elf32_vec
571    ;;
572  hppa*-*-hpux* | hppa*-*-hiux* | hppa*-*-mpeix*)
573    targ_defvec=hppa_som_vec
574    ;;
575  hppa*-*-osf*)
576    targ_defvec=hppa_som_vec
577    targ_selvecs=hppa_elf32_vec
578    ;;
579
580  i[3-7]86-*-elf* | i[3-7]86-*-rtems* | i[3-7]86-*-genode*)
581    targ_defvec=i386_elf32_vec
582    targ_selvecs="iamcu_elf32_vec i386_coff_vec"
583    ;;
584  i[3-7]86-*-solaris2*)
585    targ_defvec=i386_elf32_sol2_vec
586    targ_selvecs="iamcu_elf32_vec i386_coff_vec i386_pei_vec"
587    targ64_selvecs="x86_64_elf64_sol2_vec x86_64_pe_vec x86_64_pei_vec"
588    want64=true
589    ;;
590#ifdef BFD64
591  x86_64-*-solaris2*)
592    targ_defvec=i386_elf32_sol2_vec
593    targ_selvecs="x86_64_elf64_sol2_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec"
594    want64=true
595    ;;
596#endif
597  i[3-7]86-*-nto*)
598    targ_defvec=i386_elf32_vec
599    targ_selvecs="iamcu_elf32_vec i386_coff_vec"
600    ;;
601  i[3-7]86-*-aros*)
602    targ_defvec=i386_elf32_vec
603    targ_selvecs=iamcu_elf32_vec
604    ;;
605  i[3-7]86-*-dicos*)
606    targ_defvec=i386_elf32_vec
607    targ_selvecs=iamcu_elf32_vec
608    targ64_selvecs="x86_64_elf64_vec"
609    ;;
610  *-*-msdosdjgpp* | *-*-go32* )
611    targ_defvec=i386_coff_go32_vec
612    targ_selvecs="i386_coff_go32stubbed_vec i386_aout_vec"
613    ;;
614  i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*)
615    targ_defvec=i386_mach_o_vec
616    targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
617    targ64_selvecs=x86_64_mach_o_vec
618    targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch"
619    ;;
620  i[3-7]86-*-bsd*)
621    targ_defvec=i386_aout_bsd_vec
622    targ_underscore=yes
623    ;;
624  i[3-7]86-*-dragonfly*)
625    targ_defvec=i386_elf32_vec
626    targ_selvecs=iamcu_elf32_vec
627    targ64_selvecs="x86_64_elf64_vec"
628    ;;
629  i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
630    targ_defvec=i386_elf32_fbsd_vec
631    targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_pei_vec i386_coff_vec"
632    targ64_selvecs="x86_64_elf64_fbsd_vec x86_64_elf64_vec x86_64_pe_vec x86_64_pei_vec"
633    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
634    case "${targ}" in
635      i[3-7]86-*-freebsd3* | i[3-7]86-*-freebsd4 | i[3-7]86-*-freebsd4.0*)
636	targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
637    esac
638    ;;
639  i[3-7]86-*-netbsd* | i[3-7]86-*-knetbsd*-gnu)
640    targ_defvec=i386_elf32_vec
641    targ_selvecs="iamcu_elf32_vec i386_coff_vec i386_pei_vec"
642    targ64_selvecs="x86_64_elf64_vec x86_64_pe_vec x86_64_pei_vec"
643    ;;
644  i[3-7]86-*-openbsd*)
645    targ_defvec=i386_elf32_vec
646    targ_selvecs="iamcu_elf32_vec"
647    ;;
648  i[3-7]86-*-linux-*)
649    targ_defvec=i386_elf32_vec
650    targ_selvecs="iamcu_elf32_vec i386_pei_vec"
651    targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pe_vec x86_64_pei_vec"
652    ;;
653  i[3-7]86-*-redox*)
654    targ_defvec=i386_elf32_vec
655    targ_selvecs=
656    targ64_selvecs=x86_64_elf64_vec
657    ;;
658#ifdef BFD64
659  x86_64-*-cloudabi*)
660    targ_defvec=x86_64_elf64_cloudabi_vec
661    want64=true
662    ;;
663  x86_64-*-darwin*)
664    targ_defvec=x86_64_mach_o_vec
665    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"
666    targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch"
667    want64=true
668    ;;
669  x86_64-*-dicos*)
670    targ_defvec=x86_64_elf64_vec
671    targ_selvecs="i386_elf32_vec iamcu_elf32_vec"
672    want64=true
673    ;;
674  x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia | x86_64-*-genode*)
675    targ_defvec=x86_64_elf64_vec
676    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec"
677    case "${targ}" in
678      x86_64-*-rtems*)
679    targ_selvecs="${targ_selvecs} x86_64_pe_vec x86_64_pei_vec"
680    esac
681    want64=true
682    ;;
683  x86_64-*-dragonfly*)
684    targ_defvec=x86_64_elf64_vec
685    targ_selvecs="i386_elf32_vec iamcu_elf32_vec"
686    want64=true
687    ;;
688  x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
689    targ_defvec=x86_64_elf64_fbsd_vec
690    targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec"
691    want64=true
692    ;;
693  x86_64-*-haiku*)
694    targ_defvec=x86_64_elf64_vec
695    targ_selvecs="i386_elf32_vec"
696    want64=true
697    ;;
698  x86_64-*-netbsd* | x86_64-*-openbsd*)
699    targ_defvec=x86_64_elf64_vec
700    targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec"
701    want64=true
702    ;;
703  x86_64-*-linux-*)
704    targ_defvec=x86_64_elf64_vec
705    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec"
706    want64=true
707    ;;
708  x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin)
709    targ_defvec=x86_64_pe_vec
710    targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_big_vec x86_64_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
711    want64=true
712    targ_underscore=no
713    ;;
714  x86_64-*-rdos*)
715    targ_defvec=x86_64_elf64_vec
716    want64=true
717    ;;
718  x86_64-*-redox*)
719    targ_defvec=x86_64_elf64_vec
720    targ_selvecs=i386_elf32_vec
721    want64=true
722    ;;
723#endif
724  i[3-7]86-*-lynxos*)
725    targ_defvec=i386_elf32_vec
726    targ_selvecs="iamcu_elf32_vec i386_coff_lynx_vec i386_aout_lynx_vec"
727    ;;
728  i[3-7]86-*-gnu*)
729    targ_defvec=i386_elf32_vec
730    targ_selvecs=iamcu_elf32_vec
731    ;;
732  i[3-7]86-*-msdos*)
733    targ_defvec=i386_aout_vec
734    targ_selvecs=i386_msdos_vec
735    ;;
736  i[3-7]86-*-moss*)
737    targ_defvec=i386_elf32_vec
738    targ_selvecs="iamcu_elf32_vec i386_msdos_vec i386_aout_vec"
739    ;;
740  i[3-7]86-*-beospe*)
741    targ_defvec=i386_pe_vec
742    targ_selvecs="i386_pe_vec i386_pei_vec"
743    ;;
744  i[3-7]86-*-beoself* | i[3-7]86-*-beos*)
745    targ_defvec=i386_elf32_vec
746    targ_selvecs="iamcu_elf32_vec i386_pe_vec i386_pei_vec"
747    ;;
748  i[3-7]86-*-haiku*)
749    targ_defvec=i386_elf32_vec
750    targ_selvecs="i386_pei_vec"
751    ;;
752  i[3-7]86-*-interix*)
753    targ_defvec=i386_pei_vec
754    targ_selvecs="i386_pe_vec"
755    # FIXME: This should eventually be checked at runtime.
756    targ_cflags=-DSTRICT_PE_FORMAT
757    ;;
758  i[3-7]86-*-rdos*)
759    targ_defvec=i386_elf32_vec
760    targ_selvecs="iamcu_elf32_vec i386_coff_vec"
761    ;;
762  i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
763    targ_defvec=i386_pe_vec
764    targ_selvecs="i386_pe_vec i386_pe_big_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
765    targ_underscore=yes
766    ;;
767  i[3-7]86-*-vxworks*)
768    targ_defvec=i386_elf32_vxworks_vec
769    targ_underscore=yes
770    ;;
771
772  ia16-*-elf)
773    targ_defvec=i386_elf32_vec
774    targ_selvecs="i386_msdos_vec i386_aout_vec"
775    ;;
776
777  ip2k-*-elf)
778    targ_defvec=ip2k_elf32_vec
779    targ_underscore=yes
780    ;;
781
782  iq2000-*-elf)
783    targ_defvec=iq2000_elf32_vec
784    ;;
785
786  lm32-*-elf | lm32-*-rtems*)
787    targ_defvec=lm32_elf32_vec
788    targ_selvecs=lm32_elf32_fdpic_vec
789    ;;
790
791  lm32-*-*linux*)
792    targ_defvec=lm32_elf32_fdpic_vec
793    targ_selvecs=lm32_elf32_vec
794    ;;
795
796  m32c-*-elf)
797    targ_defvec=m32c_elf32_vec
798    targ_underscore=yes
799    ;;
800
801  m32r*le-*-linux*)
802    targ_defvec=m32r_elf32_linux_le_vec
803    targ_selvecs="m32r_elf32_linux_vec  m32r_elf32_linux_le_vec"
804    ;;
805  m32r*-*-linux*)
806    targ_defvec=m32r_elf32_linux_vec
807    targ_selvecs="m32r_elf32_linux_vec  m32r_elf32_linux_le_vec"
808    ;;
809  m32r*le-*-*)
810    targ_defvec=m32r_elf32_le_vec
811    targ_selvecs="m32r_elf32_vec m32r_elf32_le_vec"
812    ;;
813  m32r-*-*)
814    targ_defvec=m32r_elf32_vec
815    ;;
816
817  m68*-*-haiku*)
818    targ_defvec=m68k_elf32_vec
819    ;;
820  m68hc11-*-* | m6811-*-*)
821    targ_defvec=m68hc11_elf32_vec
822    targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
823    ;;
824  m68hc12-*-* | m6812-*-*)
825    targ_defvec=m68hc12_elf32_vec
826    targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
827    ;;
828
829  m68*-*-*)
830    targ_defvec=m68k_elf32_vec
831    ;;
832
833  s12z-*-*)
834    targ_defvec=s12z_elf32_vec
835    ;;
836  mcore-*-elf)
837    targ_defvec=mcore_elf32_be_vec
838    targ_selvecs="mcore_elf32_be_vec mcore_elf32_le_vec"
839    ;;
840  mcore-*-pe)
841    targ_defvec=mcore_pe_be_vec
842    targ_selvecs="mcore_pe_be_vec mcore_pe_le_vec mcore_pei_be_vec mcore_pei_le_vec"
843    ;;
844
845  mep-*-elf)
846    targ_defvec=mep_elf32_vec
847    targ_selvecs=mep_elf32_le_vec
848    ;;
849
850  metag-*-*)
851    targ_defvec=metag_elf32_vec
852    targ_underscore=yes
853    ;;
854
855  microblazeel*-*)
856    targ_defvec=microblaze_elf32_le_vec
857    targ_selvecs=microblaze_elf32_vec
858    ;;
859
860  microblaze*-*)
861    targ_defvec=microblaze_elf32_vec
862    targ_selvecs=microblaze_elf32_le_vec
863    ;;
864
865#ifdef BFD64
866  mipsn64*el-*-netbsd*)
867    targ_defvec=mips_elf64_trad_le_vec
868    targ_selvecs="mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_be_vec mips_ecoff_be_vec mips_ecoff_le_vec"
869    ;;
870  mipsn64*-*-netbsd*)
871    targ_defvec=mips_elf64_trad_be_vec
872    targ_selvecs="mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf64_trad_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
873    ;;
874  mips64*el-*-netbsd*)
875    targ_defvec=mips_elf32_ntrad_le_vec
876    targ_selvecs="mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf32_ntrad_be_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
877    ;;
878  mips64*-*-netbsd*)
879    targ_defvec=mips_elf32_ntrad_be_vec
880    targ_selvecs="mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf32_ntrad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
881    ;;
882  mips*el-*-netbsd*)
883    targ_defvec=mips_elf32_trad_le_vec
884    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_ecoff_be_vec mips_ecoff_le_vec"
885    ;;
886  mips*-*-netbsd*)
887    targ_defvec=mips_elf32_trad_be_vec
888    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_ecoff_be_vec mips_ecoff_le_vec"
889    ;;
890  mips*el-*-haiku*)
891    targ_defvec=mips_elf32_le_vec
892    targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_le_vec mips_ecoff_be_vec"
893    ;;
894  mips*-*-irix6*)
895    targ_defvec=mips_elf32_n_be_vec
896    targ_selvecs="mips_elf32_n_le_vec mips_elf32_be_vec mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
897    ;;
898  mips64*-ps2-elf*)
899    targ_defvec=mips_elf32_n_le_vec
900    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"
901    ;;
902  mips*-ps2-elf*)
903    targ_defvec=mips_elf32_le_vec
904    targ_selvecs="mips_elf32_be_vec mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
905    ;;
906  mips*-*-irix5*)
907    targ_defvec=mips_elf32_be_vec
908    targ_selvecs="mips_elf32_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
909    ;;
910  mips*el-*-vxworks*)
911    targ_defvec=mips_elf32_vxworks_le_vec
912    targ_selvecs="mips_elf32_le_vec mips_elf32_vxworks_be_vec mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
913    ;;
914  mips*-*-vxworks*)
915    targ_defvec=mips_elf32_vxworks_be_vec
916    targ_selvecs="mips_elf32_be_vec mips_elf32_vxworks_le_vec mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
917    ;;
918  mips*el-sde-elf*)
919    targ_defvec=mips_elf32_trad_le_vec
920    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"
921    ;;
922  mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
923    targ_defvec=mips_elf32_trad_be_vec
924    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"
925    ;;
926  mips*el-*-elf* | mips*-*-chorus*)
927    targ_defvec=mips_elf32_le_vec
928    targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
929    ;;
930  mips*-*-elf* | mips*-*-rtems* | mips*-*-windiss | mips*-*-none)
931    targ_defvec=mips_elf32_be_vec
932    targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
933    ;;
934  mips64*-*-openbsd*)
935    targ_defvec=mips_elf64_trad_be_vec
936    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"
937    ;;
938  mips*el-*-openbsd*)
939    targ_defvec=mips_elf32_le_vec
940    targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_le_vec mips_ecoff_be_vec"
941    ;;
942  mips*-*-openbsd*)
943    targ_defvec=mips_elf32_be_vec
944    targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
945    ;;
946  mips64*el-*-linux*)
947    targ_defvec=mips_elf32_ntrad_le_vec
948    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"
949    ;;
950  mips64*-*-linux*)
951    targ_defvec=mips_elf32_ntrad_be_vec
952    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"
953    ;;
954  mips*el-*-linux*)
955    targ_defvec=mips_elf32_trad_le_vec
956    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"
957    ;;
958  mips*-*-linux*)
959    targ_defvec=mips_elf32_trad_be_vec
960    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"
961    ;;
962  mips64*el-*-freebsd* | mips64*el-*-kfreebsd*-gnu)
963    # FreeBSD vectors
964    targ_defvec=mips_elf32_ntradfbsd_le_vec
965    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"
966    # Generic vectors
967    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"
968    ;;
969  mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu)
970    # FreeBSD vectors
971    targ_defvec=mips_elf32_ntradfbsd_be_vec
972    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"
973    # Generic vectors
974    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"
975    ;;
976  mips*el-*-freebsd* | mips*el-*-kfreebsd*-gnu)
977    # FreeBSD vectors
978    targ_defvec=mips_elf32_tradfbsd_le_vec
979    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"
980    # Generic vectors
981    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"
982    ;;
983  mips*-*-freebsd* | mips*-*-kfreebsd*-gnu)
984    # FreeBSD vectors
985    targ_defvec=mips_elf32_tradfbsd_be_vec
986    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"
987    # Generic vectors
988    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"
989    ;;
990  mmix-*-*)
991    targ_defvec=mmix_elf64_vec
992    targ_selvecs=mmix_mmo_vec
993    want64=true
994    ;;
995#endif
996  mn10200-*-*)
997    targ_defvec=mn10200_elf32_vec
998    targ_underscore=yes
999    ;;
1000
1001  mn10300-*-*)
1002    targ_defvec=mn10300_elf32_vec
1003    targ_underscore=yes
1004    ;;
1005
1006  mt-*-elf)
1007    targ_defvec=mt_elf32_vec
1008    ;;
1009
1010  msp430-*-*)
1011    targ_defvec=msp430_elf32_vec
1012    targ_selvecs=msp430_elf32_ti_vec
1013    ;;
1014
1015  nds32*le-*-linux*)
1016    targ_defvec=nds32_elf32_linux_le_vec
1017    targ_selvecs=nds32_elf32_linux_be_vec
1018    ;;
1019
1020  nds32*be-*-linux*)
1021    targ_defvec=nds32_elf32_linux_be_vec
1022    targ_selvecs=nds32_elf32_linux_le_vec
1023    ;;
1024
1025  nds32*le-*-*)
1026    targ_defvec=nds32_elf32_le_vec
1027    targ_selvecs=nds32_elf32_be_vec
1028    ;;
1029
1030  nds32*be-*-*)
1031    targ_defvec=nds32_elf32_be_vec
1032    targ_selvecs=nds32_elf32_le_vec
1033    ;;
1034
1035#ifdef BFD64
1036  nfp-*-*)
1037    targ_defvec=nfp_elf64_vec
1038    ;;
1039#endif
1040
1041  ns32k-pc532-mach* | ns32k-pc532-ux*)
1042    targ_defvec=ns32k_aout_pc532mach_vec
1043    targ_underscore=yes
1044    ;;
1045  ns32k-*-lites* | ns32k-*-*bsd*)
1046    targ_defvec=ns32k_aout_pc532nbsd_vec
1047    targ_underscore=yes
1048    ;;
1049
1050  nios2eb-*-*)
1051    targ_defvec=nios2_elf32_be_vec
1052    targ_selvecs=nios2_elf32_le_vec
1053    ;;
1054
1055  nios2el-*-*)
1056    targ_defvec=nios2_elf32_le_vec
1057    targ_selvecs=nios2_elf32_be_vec
1058    ;;
1059
1060  nios2-*-*)
1061    targ_defvec=nios2_elf32_le_vec
1062    targ_selvecs=nios2_elf32_be_vec
1063    ;;
1064
1065  or1k-*-elf | or1k-*-linux* | or1k-*-rtems* | or1k*-*-netbsd*)
1066    targ_defvec=or1k_elf32_vec
1067    ;;
1068
1069  or1knd-*-elf | or1knd-*-linux* | or1knd-*-rtems*)
1070    targ_defvec=or1k_elf32_vec
1071    ;;
1072
1073  pdp11-*-*)
1074    targ_defvec=pdp11_aout_vec
1075    targ_underscore=yes
1076    ;;
1077
1078  pj-*-*)
1079    targ_defvec=pj_elf32_vec
1080    targ_selvecs="pj_elf32_vec pj_elf32_le_vec"
1081    ;;
1082
1083  pjl-*-*)
1084    targ_defvec=pj_elf32_le_vec
1085    targ_selvecs="pj_elf32_le_vec pj_elf32_vec i386_elf32_vec iamcu_elf32_vec"
1086    ;;
1087
1088  powerpc-*-aix5.[01] | rs6000-*-aix5.[01])
1089    targ_defvec=rs6000_xcoff_vec
1090    targ_selvecs="rs6000_xcoff64_aix_vec"
1091    want64=true
1092    ;;
1093  powerpc-*-haiku*)
1094    targ_defvec=powerpc_elf32_vec
1095    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec pef_vec pef_xlib_vec powerpc_xcoff_vec powerpc_boot_vec"
1096    targ_cflags=-D__HAIKU_TARGET__
1097    ;;
1098#ifdef BFD64
1099  powerpc64-*-aix5.[01])
1100    targ_defvec=rs6000_xcoff64_aix_vec
1101    targ_selvecs="rs6000_xcoff_vec"
1102    want64=true
1103    ;;
1104#endif
1105  powerpc-*-aix[5-9]* | rs6000-*-aix[5-9]*)
1106    targ_cflags=-DAIX_WEAK_SUPPORT
1107    targ_defvec=rs6000_xcoff_vec
1108    targ_selvecs="rs6000_xcoff64_aix_vec"
1109    want64=true
1110    ;;
1111#ifdef BFD64
1112  powerpc64-*-aix[5-9]*)
1113    targ_cflags=-DAIX_WEAK_SUPPORT
1114    targ_defvec=rs6000_xcoff64_aix_vec
1115    targ_selvecs="rs6000_xcoff_vec"
1116    want64=true
1117    ;;
1118#endif
1119
1120  powerpc-*-aix* | powerpc-*-beos* | rs6000-*-*)
1121    targ_defvec=rs6000_xcoff_vec
1122    targ64_selvecs=rs6000_xcoff64_vec
1123    case "${targ}" in
1124	*-*-aix4.[3456789]* | *-*-aix[56789]*)
1125	want64=true;;
1126	*)
1127	targ_cflags=-DSMALL_ARCHIVE;;
1128    esac
1129    ;;
1130#ifdef BFD64
1131  powerpc64-*-aix*)
1132    targ_defvec=rs6000_xcoff64_vec
1133    targ_selvecs=rs6000_xcoff_vec
1134    want64=true
1135    ;;
1136  powerpc64-*-freebsd*)
1137    targ_defvec=powerpc_elf64_fbsd_vec
1138    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"
1139    want64=true
1140    ;;
1141  powerpc64le-*-freebsd*)
1142    targ_defvec=powerpc_elf64_fbsd_le_vec
1143    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"
1144    want64=true
1145    ;;
1146  powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \
1147  powerpc64-*-*bsd*)
1148    targ_defvec=powerpc_elf64_vec
1149    targ_selvecs="powerpc_elf64_le_vec powerpc_elf32_vec powerpc_elf32_le_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec"
1150    want64=true
1151    ;;
1152  powerpc64le-*-elf* | powerpcle-*-elf64* | powerpc64le-*-linux* | \
1153  powerpc64le-*-*bsd*)
1154    targ_defvec=powerpc_elf64_le_vec
1155    targ_selvecs="powerpc_elf64_vec powerpc_elf32_le_vec powerpc_elf32_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec"
1156    want64=true
1157    ;;
1158#endif
1159  powerpc-*-*freebsd*)
1160    targ_defvec=powerpc_elf32_fbsd_vec
1161    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_elf32_le_vec powerpc_boot_vec"
1162    targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec powerpc_elf64_fbsd_vec"
1163    ;;
1164  powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
1165  powerpc-*-solaris2* | powerpc-*-linux-* | powerpc-*-rtems* | \
1166  powerpc-*-chorus*)
1167    targ_defvec=powerpc_elf32_vec
1168    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec powerpc_boot_vec"
1169    targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
1170    ;;
1171  powerpc-*-kaos*)
1172    targ_defvec=powerpc_elf32_vec
1173    targ_selvecs="powerpc_elf32_le_vec powerpc_boot_vec"
1174    targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
1175    ;;
1176  powerpc-*-darwin* | powerpc-*-macos10* | powerpc-*-rhapsody*)
1177    targ_defvec=mach_o_be_vec
1178    targ_selvecs="mach_o_be_vec mach_o_le_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
1179    targ_archs="$targ_archs bfd_i386_arch"
1180    ;;
1181  powerpc-*-macos*)
1182    targ_defvec=powerpc_xcoff_vec
1183    ;;
1184  powerpc-*-lynxos*)
1185    targ_defvec=powerpc_elf32_vec
1186    targ_selvecs="rs6000_xcoff_vec"
1187    targ_cflags=-DSMALL_ARCHIVE
1188    ;;
1189  powerpc-*-nto*)
1190    targ_defvec=powerpc_elf32_vec
1191    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec powerpc_boot_vec"
1192    ;;
1193  powerpc-*-vxworks* | powerpc-*-windiss*)
1194    targ_defvec=powerpc_elf32_vxworks_vec
1195    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_elf32_le_vec powerpc_boot_vec"
1196    targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
1197    ;;
1198  powerpcle-*-nto*)
1199    targ_defvec=powerpc_elf32_le_vec
1200    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_boot_vec"
1201    ;;
1202  powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
1203  powerpcle-*-solaris2* | powerpcle-*-linux-* | powerpcle-*-vxworks*)
1204    targ_defvec=powerpc_elf32_le_vec
1205    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_boot_vec"
1206    targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
1207    ;;
1208
1209  pru-*-*)
1210    targ_defvec=pru_elf32_vec
1211    ;;
1212
1213#ifdef BFD64
1214  riscvbe-*-* | riscv32be*-*-*)
1215    targ_defvec=riscv_elf32_be_vec
1216    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec"
1217    want64=true
1218    ;;
1219  riscv-*-* | riscv32*-*-*)
1220    targ_defvec=riscv_elf32_vec
1221    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec"
1222    want64=true
1223    ;;
1224  riscv64be*-*-*)
1225    targ_defvec=riscv_elf64_be_vec
1226    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec"
1227    want64=true
1228    ;;
1229  riscv64*-*-*)
1230    targ_defvec=riscv_elf64_vec
1231    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec"
1232    want64=true
1233    ;;
1234#endif
1235
1236  rl78-*-elf)
1237    targ_defvec=rl78_elf32_vec
1238    targ_underscore=yes
1239    ;;
1240
1241  rx-*-elf)
1242    targ_defvec=rx_elf32_le_vec
1243    targ_selvecs="rx_elf32_be_vec rx_elf32_le_vec rx_elf32_be_ns_vec"
1244    targ_underscore=yes
1245    ;;
1246  rx-*-linux*)
1247    targ_defvec=rx_elf32_linux_le_vec
1248    targ_selvecs="rx_elf32_linux_le_vec"
1249    ;;
1250
1251  s390-*-linux*)
1252    targ_defvec=s390_elf32_vec
1253    targ64_selvecs=s390_elf64_vec
1254    want64=true
1255    ;;
1256#ifdef BFD64
1257  s390x-*-linux*)
1258    targ_defvec=s390_elf64_vec
1259    targ_selvecs=s390_elf32_vec
1260    want64=true
1261    ;;
1262  s390x-*-tpf*)
1263    targ_defvec=s390_elf64_vec
1264    want64=true
1265    ;;
1266
1267  score*-*-elf*)
1268    targ_defvec=score_elf32_be_vec
1269    targ_selvecs=score_elf32_le_vec
1270    ;;
1271#endif /* BFD64 */
1272
1273  sh*eb-*-linux*)
1274    targ_defvec=sh_elf32_linux_be_vec
1275    targ_selvecs=sh_elf32_linux_vec
1276    targ_selvecs="${targ_selvecs} sh_elf32_fdpic_le_vec sh_elf32_fdpic_be_vec"
1277    ;;
1278  sh*-*-linux*)
1279    targ_defvec=sh_elf32_linux_vec
1280    targ_selvecs=sh_elf32_linux_be_vec
1281    targ_selvecs="${targ_selvecs} sh_elf32_fdpic_le_vec sh_elf32_fdpic_be_vec"
1282    ;;
1283
1284  sh-*-uclinux* | sh[12]-*-uclinux*)
1285    targ_defvec=sh_elf32_vec
1286    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"
1287    ;;
1288
1289  sh*l*-*-netbsd*)
1290    targ_defvec=sh_elf32_nbsd_le_vec
1291    targ_selvecs="sh_elf32_nbsd_vec sh_coff_vec sh_coff_le_vec"
1292    ;;
1293  sh*-*-netbsd*)
1294    targ_defvec=sh_elf32_nbsd_vec
1295    targ_selvecs="sh_elf32_nbsd_le_vec sh_coff_vec sh_coff_le_vec"
1296    ;;
1297
1298  shl*-*-elf* | sh[1234]l*-*-elf* | sh3el*-*-elf* | shl*-*-kaos*)
1299    targ_defvec=sh_elf32_le_vec
1300    targ_selvecs="sh_elf32_vec sh_coff_le_vec sh_coff_vec sh_coff_small_le_vec sh_coff_small_vec"
1301    targ_underscore=yes
1302    ;;
1303
1304  sh-*-elf* | sh[1234]*-elf* | sh-*-rtems* | sh-*-kaos*)
1305    targ_defvec=sh_elf32_vec
1306    targ_selvecs="sh_elf32_le_vec sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
1307    targ_underscore=yes
1308    ;;
1309
1310  sh-*-nto*)
1311    targ_defvec=sh_elf32_vec
1312    targ_selvecs="sh_elf32_le_vec sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
1313    targ_underscore=yes
1314    ;;
1315  sh*-*-openbsd*)
1316    targ_defvec=sh_elf32_nbsd_le_vec
1317    targ_selvecs="sh_elf32_nbsd_vec sh_coff_vec sh_coff_le_vec"
1318    ;;
1319  sh-*-pe)
1320    targ_defvec=sh_pe_le_vec
1321    targ_selvecs="sh_pe_le_vec sh_pei_le_vec"
1322    targ_underscore=yes
1323    ;;
1324  sh-*-vxworks)
1325    targ_defvec=sh_elf32_vxworks_vec
1326    targ_selvecs="sh_elf32_vxworks_le_vec"
1327    # FIXME None of the following are actually used on this target, but
1328    # they're necessary for coff-sh.c (which is unconditionally used) to be
1329    # compiled correctly.
1330    targ_selvecs="$targ_selvecs sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
1331    targ_underscore=yes
1332    ;;
1333  sh-*-*)
1334    targ_defvec=sh_coff_vec
1335    targ_selvecs="sh_coff_vec sh_coff_le_vec sh_coff_small_vec sh_coff_small_le_vec"
1336    targ_underscore=yes
1337    ;;
1338
1339  sparc-*-netbsd*)
1340    targ_defvec=sparc_elf32_vec
1341    want64=true
1342    ;;
1343  sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
1344    # PR 27666: Do not include sparc_elf32_vec here.
1345    targ_defvec=sparc_elf32_sol2_vec
1346    ;;
1347#ifdef BFD64
1348  sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
1349    # PR 27666: Do not include sparc_elf32_vec or sparc_elf64_vec here.
1350    targ_defvec=sparc_elf32_sol2_vec
1351    targ_selvecs="sparc_elf64_sol2_vec"
1352    want64=true
1353    ;;
1354  sparc64-*-haiku*)
1355    targ_defvec=sparc_elf64_vec
1356    targ_selvecs="sparc_elf64_vec sparc_elf32_vec"
1357    want64=true
1358    ;;
1359  sparc64-*-freebsd* | sparc64-*-kfreebsd*-gnu)
1360    targ_defvec=sparc_elf64_fbsd_vec
1361    targ_selvecs="sparc_elf64_vec sparc_elf32_vec"
1362    ;;
1363  sparc64*-*-*)
1364    targ_defvec=sparc_elf64_vec
1365    targ_selvecs="sparc_elf32_vec"
1366    want64=true
1367    ;;
1368#endif
1369  sparc-*-linux-* | sparcv*-*-linux-*)
1370    targ_defvec=sparc_elf32_vec
1371    targ_selvecs="sparc_elf64_vec"
1372    ;;
1373  sparc-*-vxworks*)
1374    targ_defvec=sparc_elf32_vxworks_vec
1375    targ_selvecs="sparc_elf32_vec"
1376    ;;
1377  sparc*-*-*)
1378    targ_defvec=sparc_elf32_vec
1379    ;;
1380
1381  spu-*-elf)
1382    targ_defvec=spu_elf32_vec
1383    want64=true
1384    ;;
1385
1386  tic6x-*-elf)
1387    targ_defvec=tic6x_elf32_c6000_le_vec
1388    targ_selvecs="tic6x_elf32_c6000_be_vec tic6x_elf32_le_vec tic6x_elf32_be_vec"
1389    ;;
1390
1391  tic6x-*-uclinux)
1392    targ_defvec=tic6x_elf32_linux_le_vec
1393    targ_selvecs="tic6x_elf32_linux_be_vec tic6x_elf32_le_vec tic6x_elf32_be_vec"
1394    ;;
1395
1396#ifdef BFD64
1397  tilegx-*-*)
1398    targ_defvec=tilegx_elf64_le_vec
1399    targ_selvecs="tilegx_elf64_be_vec tilegx_elf32_be_vec tilegx_elf32_le_vec"
1400    ;;
1401  tilegxbe-*-*)
1402    targ_defvec=tilegx_elf64_be_vec
1403    targ_selvecs="tilegx_elf64_le_vec tilegx_elf32_be_vec tilegx_elf32_le_vec"
1404    ;;
1405#endif
1406
1407  tilepro-*-*)
1408    targ_defvec=tilepro_elf32_vec
1409    ;;
1410
1411  ft32*-*-*)
1412    targ_defvec=ft32_elf32_vec
1413    ;;
1414
1415  v850*-*-*)
1416    targ_defvec=v850_elf32_vec
1417    targ_selvecs="v800_elf32_vec"
1418    targ_underscore=yes
1419    ;;
1420
1421  vax-*-netbsdaout*)
1422    targ_defvec=vax_aout_nbsd_vec
1423    targ_selvecs="vax_elf32_vec vax_aout_1knbsd_vec"
1424    targ_underscore=yes
1425    ;;
1426
1427  vax-*-netbsd*)
1428    targ_defvec=vax_elf32_vec
1429    targ_selvecs="vax_aout_nbsd_vec vax_aout_1knbsd_vec"
1430    ;;
1431
1432  vax-*-openbsd*)
1433    targ_defvec=vax_aout_nbsd_vec
1434    targ_underscore=yes
1435    ;;
1436
1437  vax-*-linux-*)
1438    targ_defvec=vax_elf32_vec
1439    ;;
1440
1441  visium-*-elf)
1442    targ_defvec=visium_elf32_vec
1443    ;;
1444
1445  wasm32-*-*)
1446    targ_defvec=wasm32_elf32_vec
1447    targ_selvecs="wasm_vec"
1448    ;;
1449
1450  xgate-*-*)
1451    targ_defvec=xgate_elf32_vec
1452    targ_selvecs="xgate_elf32_vec"
1453    ;;
1454
1455  xstormy16-*-elf)
1456    targ_defvec=xstormy16_elf32_vec
1457    ;;
1458
1459  xtensa*-*-*)
1460    targ_defvec=xtensa_elf32_le_vec
1461    targ_selvecs=xtensa_elf32_be_vec
1462    ;;
1463
1464  z80-*-coff)
1465    targ_defvec=z80_coff_vec
1466    targ_underscore=no
1467    ;;
1468
1469  z80-*-elf)
1470    targ_defvec=z80_elf32_vec
1471    targ_underscore=no
1472    ;;
1473
1474  z8k*-*-*)
1475    targ_defvec=z8k_coff_vec
1476    targ_underscore=yes
1477    ;;
1478
1479#ifdef BFD64
1480  loongarch32-*)
1481    targ_defvec=loongarch_elf32_vec
1482    targ_selvecs="loongarch_elf32_vec"
1483    want64=true
1484    ;;
1485
1486  loongarch64-*)
1487    targ_defvec=loongarch_elf64_vec
1488    targ_selvecs="loongarch_elf32_vec loongarch_elf64_vec"
1489    want64=true
1490    ;;
1491#endif
1492
1493# END OF targmatch.h
1494  bpf-*-*)
1495    echo "*** Configuration $targ is not fully supported." >&2
1496    echo "*** Use bpf or bpf-*-none as the target instead." >&2
1497    exit 1
1498    ;;
1499
1500  *)
1501    echo 1>&2 "*** BFD does not support target ${targ}."
1502    echo 1>&2 "*** Look in bfd/config.bfd for supported targets."
1503    exit 1
1504    ;;
1505esac
1506
1507# All MIPS ELF targets need a 64-bit bfd_vma.
1508case "${targ_defvec} ${targ_selvecs}" in
1509  *mips_elf*)
1510    want64=true
1511    ;;
1512esac
1513
1514# vax natively supports 64-bit integers.
1515case "${targ_defvec} ${targ_selvecs}" in
1516  *vax*)
1517    want64=true
1518    ;;
1519esac
1520
1521case "${host64}${want64}" in
1522  *true*)
1523    targ_selvecs="${targ_selvecs} ${targ64_selvecs}"
1524    ;;
1525esac
1526
1527# If we support any ELF target, then automatically add support for the
1528# generic ELF targets.  This permits an objdump with some ELF support
1529# to be used on an arbitrary ELF file for anything other than
1530# relocation information.
1531case "${targ_defvec} ${targ_selvecs}" in
1532  *elf64* | *mips_elf32_n*)
1533    targ_selvecs="${targ_selvecs} elf64_le_vec elf64_be_vec elf32_le_vec elf32_be_vec"
1534    ;;
1535  *elf32*)
1536    targ_selvecs="${targ_selvecs} elf32_le_vec elf32_be_vec"
1537    ;;
1538esac
1539
1540# If we support Intel MCU target, then add support for bfd_iamcu_arch.
1541case "${targ_defvec} ${targ_selvecs}" in
1542  *iamcu_elf32*)
1543    targ_archs="$targ_archs bfd_iamcu_arch"
1544    ;;
1545esac
1546