1# gas target specific configuration file.  This is a -*- sh -*- file.
2
3# This is invoked by configure.  Putting it in a separate shell file
4# lets us skip running autoconf when modifying target specific
5# information.
6
7# Input shell variables:
8#   targ	a configuration target name, such as i686-pc-linux-gnu.
9
10# Output shell variables:
11#   cpu_type	canonical gas cpu type; identifies the config/tc-* files
12#   fmt		output format; identifies the config/obj-* files
13#   em		emulation; identifies the config/te-* files
14
15# Optional output shell variables; these are not always set:
16#   arch	the default architecture; sets DEFAULT_ARCH on some systems 
17#   endian	"big" or "little"; used on bi-endian systems
18
19cpu_type=
20fmt=
21em=generic
22bfd_gas=no
23arch=
24endian=
25
26eval `echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
27
28# Check for architecture variants.  Set cpu_type and, optionally,
29# endian and arch.
30# Note: This table is alpha-sorted, please try to keep it that way.
31case ${cpu} in
32  alpha*)		cpu_type=alpha ;;
33  am33_2.0)		cpu_type=mn10300 endian=little ;;
34  arm*be|arm*b)		cpu_type=arm endian=big ;;
35  arm*)			cpu_type=arm endian=little ;;
36  bfin*)		cpu_type=bfin endian=little ;;
37  c4x*)			cpu_type=tic4x ;;
38  crisv32)		cpu_type=cris arch=crisv32 ;;
39  crx*)			cpu_type=crx endian=little ;;
40  hppa*)		cpu_type=hppa ;;
41  i[3-7]86)		cpu_type=i386 arch=i386;;
42  ia64)			cpu_type=ia64 ;;
43  ip2k)			cpu_type=ip2k endian=big ;; 
44  iq2000)		cpu_type=iq2000 endian=big ;; 
45  m32c)			cpu_type=m32c endian=big ;;
46  m32r)			cpu_type=m32r endian=big ;;
47  m32rle)		cpu_type=m32r endian=little ;;
48  m5200)		cpu_type=m68k ;;
49  m68008)		cpu_type=m68k ;;
50  m680[012346]0)	cpu_type=m68k ;;
51  m6811|m6812|m68hc12)	cpu_type=m68hc11 ;;
52  m683??)		cpu_type=m68k ;;
53  maxq)			cpu_type=maxq ;;
54  mips*el)		cpu_type=mips endian=little ;;
55  mips*)		cpu_type=mips endian=big ;;
56  mt)                   cpu_type=mt endian=big ;;
57  or32*)		cpu_type=or32 endian=big ;;
58  pjl*)			cpu_type=pj endian=little ;;
59  pj*)			cpu_type=pj endian=big ;;
60  powerpc*le*)		cpu_type=ppc endian=little ;;
61  powerpc*)		cpu_type=ppc endian=big ;;
62  rs6000*)		cpu_type=ppc ;;
63  s390x*)		cpu_type=s390 arch=s390x ;;
64  s390*)		cpu_type=s390 arch=s390 ;;
65  sh5le*)		cpu_type=sh64 endian=little ;;
66  sh5*)			cpu_type=sh64 endian=big ;;
67  sh64le*)		cpu_type=sh64 endian=little ;;
68  sh64*)            	cpu_type=sh64 endian=big ;;
69  sh*le)		cpu_type=sh endian=little ;;
70  sh*)			cpu_type=sh endian=big ;;
71  sparc64*)		cpu_type=sparc arch=v9-64 ;;
72  sparc86x*)		cpu_type=sparc arch=sparc86x  ;;
73  sparclet*)		cpu_type=sparc arch=sparclet ;;
74  sparclite*)		cpu_type=sparc arch=sparclite ;;
75  sparc*)		cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
76  strongarm*be)		cpu_type=arm endian=big ;;
77  strongarm*b)		cpu_type=arm endian=big ;;
78  strongarm*)		cpu_type=arm endian=little ;;
79  v850*)		cpu_type=v850 ;;
80  x86_64)		cpu_type=i386 arch=x86_64;;
81  xscale*be|xscale*b)	cpu_type=arm endian=big ;;
82  xscale*)		cpu_type=arm endian=little ;;
83  xtensa*)		cpu_type=xtensa arch=xtensa ;;
84  *)			cpu_type=${cpu} ;;
85esac
86
87
88# Assign object format.  Set fmt, em, and bfd_gas.
89generic_target=${cpu_type}-$vendor-$os
90# Note: This table is alpha-sorted, please try to keep it that way.
91case ${generic_target} in
92  alpha-*-*vms*)			fmt=evax ;;
93  alpha-*-osf*)				fmt=ecoff ;;
94  alpha-*-linuxecoff*)			fmt=ecoff ;;
95  alpha-*-linux-*)			fmt=elf em=linux ;;
96  alpha-*-netbsd*)			fmt=elf em=nbsd ;;
97  alpha-*-openbsd*)			fmt=elf em=obsd ;;
98
99  arc-*-elf*)				fmt=elf ;;
100
101  arm-*-aout)				fmt=aout ;;
102  arm-*-coff | thumb-*-coff)		fmt=coff ;;
103  arm-*-rtems* | thumb-*-rtems*)	fmt=elf ;;
104  arm-*-elf | thumb-*-elf)		fmt=elf ;;
105  arm-*-eabi*)				fmt=elf em=armeabi ;;
106  arm-*-symbianelf*)			fmt=elf em=symbian ;;
107  arm-*-kaos*)				fmt=elf ;;
108  arm-*-conix*)				fmt=elf ;;
109  arm-*-linux*aout*)			fmt=aout em=linux ;;
110  arm-*-linux-*eabi*)			fmt=elf  em=armlinuxeabi ;;
111  arm-*-linux-*)			fmt=elf  em=linux ;;
112  arm-*-uclinux*)			fmt=elf  em=linux ;;
113  arm-*-netbsdelf*)                 	fmt=elf  em=nbsd ;;
114  arm-*-netbsd*)			fmt=aout em=nbsd ;;
115  arm-*-openbsd*)			fmt=elf  em=armobsd ;;
116  arm-*-nto*)				fmt=elf ;;
117  arm-epoc-pe | thumb-epoc-pe)		fmt=coff em=epoc-pe ;;
118  arm-wince-pe | arm-*-wince)		fmt=coff em=wince-pe ;;
119  arm-*-pe | thumb-*-pe)		fmt=coff em=pe ;;
120  arm-*-riscix*)			fmt=aout em=riscix ;;
121
122  avr-*-*)				fmt=elf bfd_gas=yes ;;
123  bfin-*-*)				fmt=elf bfd_gas=yes ;;
124  bfin-*elf)				fmt=elf ;;
125
126  cris-*-linux-* | crisv32-*-linux-*)
127					fmt=multi em=linux ;;
128  cris-*-* | crisv32-*-*)		fmt=multi ;;
129
130  crx-*-elf*)	    			fmt=elf ;;
131
132  d10v-*-*)				fmt=elf ;;
133  d30v-*-*)				fmt=elf ;;
134  dlx-*-*)				fmt=elf ;;
135
136  fr30-*-*)				fmt=elf ;;
137  frv-*-*linux*)			fmt=elf em=linux;;
138  frv-*-*)				fmt=elf ;;
139
140  hppa-*-linux*)
141    case ${cpu} in
142      hppa*64*)				fmt=elf em=hppalinux64 ;;
143      hppa*)				fmt=elf em=linux ;;
144    esac ;;
145  hppa-*-*elf*)				fmt=elf em=hppa ;;
146  hppa-*-lites*)			fmt=elf em=hppa ;;
147  hppa-*-netbsd*)			fmt=elf em=nbsd ;;
148  hppa-*-openbsd*)
149    case ${cpu} in
150      hppa*64*)				fmt=elf em=obsdhppa64 ;;
151      hppa*)				fmt=elf em=obsd ;;
152    esac ;;
153  hppa-*-osf*)				fmt=som em=hppa ;;
154  hppa-*-hpux11*)
155    case ${cpu} in
156      hppa*64*)				fmt=elf em=hppa64 ;;
157      hppa*)				fmt=som em=hppa ;;
158    esac ;;
159  hppa-*-hpux*)				fmt=som em=hppa ;;
160  hppa-*-mpeix*)			fmt=som em=hppa ;;
161  hppa-*-bsd*)				fmt=som em=hppa ;;
162  hppa-*-hiux*)				fmt=som em=hppa ;;
163
164  h8300-*-elf | h8300-*-rtems*)		fmt=elf ;;
165
166  i370-*-elf* | i370-*-linux*)		fmt=elf ;;
167
168  i386-ibm-aix*)			fmt=coff em=i386aix ;;
169  i386-sequent-bsd*)			fmt=aout em=dynix ;;
170  i386-*-beospe*)			fmt=coff em=pe ;;
171  i386-*-beos*)				fmt=elf ;;
172  i386-*-coff)				fmt=coff ;;
173  i386-*-elf)				fmt=elf ;;
174  i386-*-kaos*)				fmt=elf ;;
175  i386-*-bsd*)				fmt=aout em=386bsd ;;
176  i386-*-netbsd0.8)			fmt=aout em=386bsd ;;
177  i386-*-netbsdpe*)			fmt=coff em=pe ;;
178  i386-*-netbsd*-gnu* | \
179  i386-*-knetbsd*-gnu | \
180  i386-*-netbsdelf*)			fmt=elf em=nbsd ;;
181  i386-*-netbsd*)
182    case ${cpu} in
183      x86_64)				fmt=elf em=nbsd ;;
184      *)				fmt=aout em=nbsd ;;
185    esac ;;
186  i386-*-openbsd[0-2].* | \
187  i386-*-openbsd3.[0-2])		fmt=aout em=obsd ;;
188  i386-*-openbsd*)			fmt=elf em=obsd ;;
189  i386-*-linux*aout*)			fmt=aout em=linux ;;
190  i386-*-linux*oldld)			fmt=aout em=linux ;;
191  i386-*-linux*coff*)			fmt=coff em=linux ;;
192  i386-*-linux-*)			fmt=elf em=linux ;;
193  i386-*-lynxos*)			fmt=elf em=lynx ;;
194  i386-*-sysv[45]*)			fmt=elf ;;
195  i386-*-solaris*)			fmt=elf ;;
196  i386-*-freebsdaout*)			fmt=aout em=386bsd ;;
197  i386-*-freebsd[12].*)			fmt=aout em=386bsd ;;
198  i386-*-freebsd[12])			fmt=aout em=386bsd ;;
199  i386-*-freebsd* | i386-*-kfreebsd*-gnu)
200				    	fmt=elf em=freebsd ;;
201  i386-*-sysv*)				fmt=coff ;;
202  i386-*-sco3.2v5*coff)			fmt=coff ;;
203  i386-*-isc*)				fmt=coff ;;
204  i386-*-sco3.2v5*)			fmt=elf ;;
205  i386-*-sco3.2*)			fmt=coff ;;
206  i386-*-vsta)				fmt=aout ;;
207  i386-*-msdosdjgpp* \
208  | i386-*-go32*)			fmt=coff em=go32 ;;
209  i386-*-rtems*)			fmt=elf ;;
210  i386-*-gnu*)				fmt=elf em=gnu ;;
211  i386-*-mach*)				fmt=aout em=mach ;;
212  i386-*-msdos*)			fmt=aout ;;
213  i386-*-moss*)				fmt=elf ;;
214  i386-*-pe)				fmt=coff em=pe ;;
215  i386-*-cygwin*)			fmt=coff em=pe ;;
216  i386-*-interix*)			fmt=coff em=interix ;;
217  i386-*-mingw32*)			fmt=coff em=pe ;;
218  i386-*-nto-qnx*)			fmt=elf ;;
219  i386-*-*nt*)				fmt=coff em=pe ;;
220  i386-*-chaos)				fmt=elf ;;
221  i386-*-rdos*)				fmt=elf ;;
222
223  i860-*-*)				fmt=elf endian=little ;;
224
225  i960-*-elf*)				fmt=elf ;;
226
227  ia64-*-elf*)				fmt=elf ;;
228  ia64-*-aix*)				fmt=elf em=ia64aix ;;
229  ia64-*-linux-*)			fmt=elf em=linux ;;
230  ia64-*-hpux*)				fmt=elf em=hpux ;;
231  ia64-*-netbsd*)			fmt=elf em=nbsd ;;
232  ia64-*-openbsd*)			fmt=elf em=obsd ;;
233
234  ip2k-*-*)				fmt=elf ;;
235
236  iq2000-*-elf)         		fmt=elf ;;
237
238  m32c-*-elf)         			fmt=elf ;;
239
240  m32r-*-elf*)				fmt=elf ;;
241  m32r-*-linux*)			fmt=elf em=linux;;
242
243  m68hc11-*-* | m6811-*-*)		fmt=elf ;;
244  m68hc12-*-* | m6812-*-*)		fmt=elf ;;
245
246  m68k-*-elf*)				fmt=elf ;;
247  m68k-*-sysv4*)			fmt=elf em=svr4 ;;
248  m68k-*-rtems*)			fmt=elf ;;
249  m68k-*-linux-*)			fmt=elf em=linux ;;
250  m68k-*-uclinux*)			fmt=elf ;;
251  m68k-*-gnu*)				fmt=elf ;;
252  m68k-*-netbsdelf*)			fmt=elf em=nbsd ;;
253  m68k-*-netbsd*)			fmt=aout em=nbsd bfd_gas=yes ;;
254  m68k-*-openbsd*)			fmt=aout em=obsd bfd_gas=yes ;;
255  m68k-*-psos*)				fmt=elf em=psos;;
256
257  m88k-*-openbsd*)			fmt=elf em=obsd ;;
258
259  maxq-*-coff)      			fmt=coff bfd_gas=yes ;;
260
261  mcore-*-elf)				fmt=elf ;;
262  mcore-*-pe)				fmt=coff em=pe bfd_gas=yes ;;
263
264  # don't change em like *-*-bsd does
265  mips-sony-bsd*)			fmt=ecoff ;;
266  mips-*-ultrix*)			fmt=ecoff endian=little ;;
267  mips-*-osf*)				fmt=ecoff endian=little ;;
268  mips-*-ecoff*)			fmt=ecoff ;;
269  mips-*-pe*)				fmt=coff endian=little em=pe ;;
270  mips-*-irix6*)			fmt=elf em=irix ;;
271  mips-*-irix5*)			fmt=elf em=irix ;;
272  mips-*-irix*)				fmt=ecoff em=irix ;;
273  mips-*-lnews*)			fmt=ecoff em=lnews ;;
274  mips-*-riscos*)			fmt=ecoff ;;
275  mips*-*-linux*)			fmt=elf em=tmips ;;
276  mips-*-sysv4*MP* | mips-*-gnu*)	fmt=elf em=tmips ;;
277  mips-*-sysv*)				fmt=ecoff ;;
278  mips-*-elf* | mips-*-rtems*)		fmt=elf ;;
279  mips-*-netbsd*)			fmt=elf em=tmips ;;
280  mips-*-openbsd*)			fmt=elf em=tmips ;;
281
282  mmix-*-*)				fmt=elf ;;
283
284  mn10200-*-*)				fmt=elf ;;
285
286  # cpu_type for am33_2.0 is set to mn10300
287  mn10300-*-linux*)			fmt=elf em=linux ;;
288  mn10300-*-*)				fmt=elf ;;
289
290  mt-*-elf)				fmt=elf bfd_gas=yes ;;
291
292  msp430-*-*)				fmt=elf ;;
293
294  ns32k-pc532-mach*)			fmt=aout em=pc532mach ;;
295  ns32k-pc532-ux*)			fmt=aout em=pc532mach ;;
296  ns32k-pc532-lites*)			fmt=aout em=nbsd532 ;;
297  ns32k-*-*n*bsd*)			fmt=aout em=nbsd532 ;;
298
299  openrisc-*-*)				fmt=elf ;;
300
301  or32-*-rtems*)			fmt=elf ;;
302  or32-*-elf)				fmt=elf ;;
303
304  pj*)					fmt=elf ;;
305
306  ppc-*-pe | ppc-*-cygwin*)		fmt=coff em=pe ;;
307  ppc-*-winnt*)				fmt=coff em=pe ;;
308  ppc-*-aix5.[01])			fmt=coff em=aix5 ;;
309  ppc-*-aix5.*)				fmt=coff em=aix5 ;;
310  ppc-*-aix*)				fmt=coff ;;
311  ppc-*-beos*)				fmt=coff ;;
312  ppc-*-netbsd* | ppc-*-elf*)		fmt=elf ;;
313  ppc-*-openbsd*)			fmt=elf em=obsd ;;
314  ppc-*-eabi* | ppc-*-sysv4*)		fmt=elf ;;
315  ppc-*-linux-*)			fmt=elf em=linux ;;
316  ppc-*-solaris*)			fmt=elf ;;
317  ppc-*-rtems*)				fmt=elf ;;
318  ppc-*-macos*)				fmt=coff em=macos ;;
319  ppc-*-nto*)				fmt=elf ;;
320  ppc-*-kaos*)				fmt=elf ;;
321  ppc-*-lynxos*)			fmt=elf em=lynx ;;
322
323  s390-*-linux-*)			fmt=elf em=linux ;;
324  s390-*-tpf*)				fmt=elf ;;
325
326  sh*-*-linux*)				fmt=elf em=linux
327    case ${cpu} in
328      sh*eb)	endian=big ;;
329      *)	endian=little ;;
330    esac ;;
331  sh5*-*-netbsd*)			fmt=elf em=nbsd ;;
332  sh64*-*-netbsd*)			fmt=elf em=nbsd ;;
333  sh*-*-netbsdelf*)			fmt=elf em=nbsd ;;
334  sh*-*-openbsd*)			fmt=elf em=obsd endian=little ;;
335  sh*-*-symbianelf*)			fmt=elf endian=little ;;
336  sh-*-elf*)				fmt=elf ;;
337  sh-*-coff*)				fmt=coff ;;
338  sh-*-nto*)				fmt=elf ;;
339  sh-*-pe*)				fmt=coff em=pe bfd_gas=yes endian=little ;;
340  sh-*-rtemscoff*)			fmt=coff ;;
341  sh-*-rtems*)				fmt=elf ;;
342  sh-*-kaos*)				fmt=elf ;;
343  shle*-*-kaos*)			fmt=elf ;;
344  sh64-*-elf*)				fmt=elf ;;
345
346  sparc-*-rtems*)			fmt=elf ;;
347  sparc-*-sunos4*)			fmt=aout em=sun3 ;;
348  sparc-*-aout)				fmt=aout em=sparcaout ;;
349  sparc-*-coff)				fmt=coff ;;
350  sparc-*-linux*aout*)			fmt=aout em=linux ;;
351  sparc-*-linux-*)			fmt=elf em=linux ;;
352  sparc-fujitsu-none)			fmt=aout ;;
353  sparc-*-elf)				fmt=elf ;;
354  sparc-*-sysv4*)			fmt=elf ;;
355  sparc-*-solaris*)			fmt=elf ;;
356  sparc-*-netbsdelf*)			fmt=elf em=nbsd ;;
357  sparc-*-netbsd*)
358    case ${cpu} in
359      sparc64)				fmt=elf em=nbsd ;;
360      *)				fmt=aout em=nbsd ;;
361    esac ;;
362  sparc-*-openbsd[0-2].* | \
363  sparc-*-openbsd3.[0-1])
364    case ${cpu} in
365      sparc64)				fmt=elf em=obsd ;;
366      *)				fmt=aout em=obsd ;;
367    esac ;;
368  sparc-*-openbsd*)			fmt=elf em=obsd ;;
369
370  tic30-*-*aout*)			fmt=aout bfd_gas=yes ;;
371  tic30-*-*coff*)			fmt=coff bfd_gas=yes ;;
372  tic4x-*-* | c4x-*-*)			fmt=coff bfd_gas=yes ;;
373  tic54x-*-* | c54x*-*-*)		fmt=coff bfd_gas=yes need_libm=yes;;
374
375  v850-*-*)				fmt=elf ;;
376  v850e-*-*)				fmt=elf ;;
377  v850ea-*-*)				fmt=elf ;;
378
379  vax-*-netbsdelf* | vax-*-openbsd*)	fmt=elf em=nbsd ;;
380  vax-*-linux-*)			fmt=elf em=linux ;;
381
382  xscale-*-coff)			fmt=coff ;;
383  xscale-*-elf)				fmt=elf ;;
384
385  xstormy16-*-*)			fmt=elf ;;
386
387  xtensa-*-*)				fmt=elf ;;
388
389  z80-*-coff)				fmt=coff ;;
390
391  z8k-*-coff | z8k-*-sim)		fmt=coff ;;
392
393  *-*-aout | *-*-scout)			fmt=aout ;;
394  *-*-freebsd* | *-*-kfreebsd*-gnu)	fmt=elf em=freebsd ;;
395  *-*-bsd*)				fmt=aout em=sun3 ;;
396  *-*-generic)				fmt=generic ;;
397  *-*-xray | *-*-hms)			fmt=coff ;;
398  *-*-sim)				fmt=coff ;;
399  *-*-elf | *-*-sysv4* | *-*-solaris*)	fmt=elf ;;
400  *-*-aros*)				fmt=elf em=linux ;;
401  *-*-vxworks* | *-*-windiss)		fmt=elf em=vxworks ;;
402  *-*-netware)				fmt=elf em=netware ;;
403esac
404
405case ${cpu_type} in
406  alpha | arm | i386 | ia64 | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k)
407    bfd_gas=yes
408    ;;
409esac
410case ${fmt} in
411  elf | ecoff | multi | som)
412    bfd_gas=yes
413    ;;
414esac
415
416if test $bfd_gas != yes; then
417  echo This target is no longer supported in gas
418  exit 1
419fi
420