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