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