# Mappings from configurations to GDB target definitions.  This is
# invoked from the autoconf generated configure script.

# This file sets the following shell variables:
#  gdb_target_obs	target-specific object files to use
#  gdb_sim		simulator library for target
#  gdb_osabi		default OS ABI to use with target
#  build_gdbserver	set to "yes" if gdbserver supports target

case $targ in
 d10v-*-* | \
 hppa*-*-hiux* | \
 i[34567]86-ncr-* | \
 i[34567]86-*-lynxos* | \
 m68*-cisco*-* | \
 m68*-tandem-* | \
 m68*-*-os68k* | \
 mips*-*-pe | \
 rs6000-*-lynxos* | \
 sh*-*-pe | \
 null)
    echo "*** Configuration $targ is obsolete." >&2
    echo "*** Support has been REMOVED." >&2
    exit 1
    ;;
esac

# map target info into gdb names.

case "${targ}" in

alpha*-*-osf*)
	# Target: Little-endian Alpha running OSF/1
	gdb_target_obs="alpha-tdep.o alpha-osf1-tdep.o alpha-mdebug-tdep.o"
	;;
alpha*-*-linux*)
	# Target: Little-endian Alpha running Linux
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-linux-tdep.o \
			solib.o solib-svr4.o"
	;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
	# Target: FreeBSD/alpha
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alphabsd-tdep.o \
			alphafbsd-tdep.o corelow.o solib.o solib-svr4.o"
	;;
alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
	# Target: NetBSD/alpha
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alphabsd-tdep.o \
			alphanbsd-tdep.o nbsd-tdep.o corelow.o solib.o \
			solib-svr4.o"
	;;
alpha*-*-openbsd*)
	# Target: OpenBSD/alpha
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alphabsd-tdep.o \
			alphanbsd-tdep.o alphaobsd-tdep.o nbsd-tdep.o \
			obsd-tdep.o corelow.o solib.o solib-svr4.o"
	;;
alpha*-*-*)
	# Target: Alpha
	gdb_target_obs="alpha-tdep.o"
	;;

arc*-*-linux*)
	# Target: ARC Linux based targets
	gdb_target_obs="arc-tdep.o arc-linux-tdep.o solib.o solib-svr4.o \
			corelow.o"
	build_gdbserver=yes
	;;

arc*-*-*)
	# Target: ARC elf32 based target
	gdb_target_obs="arc-tdep.o arc-jtag.o arc-elf32-tdep.o arc-jtag-ops.o \
			arc-jtag-actionpoints.o arc-remote-fileio.o arc-xiss.o \
			arc-registers.o arc-architecture.o arc-board.o \
			arc-memory.o arc-arguments.o arc-gpio.o arc-inst-tracing.o"
	gdb_sim=../sim/arc/libsim.a
	;;

am33_2.0*-*-linux*)
	# Target: Matsushita mn10300 (AM33) running Linux
	gdb_target_obs="mn10300-tdep.o mn10300-linux-tdep.o corelow.o \
			solib.o solib-svr4.o"
	;;

arm*-wince-pe | arm*-*-mingw32ce*)
	# Target: ARM based machine running Windows CE (win32)
	gdb_target_obs="arm-tdep.o arm-wince-tdep.o corelow.o \
			solib.o solib-target.o"
	build_gdbserver=yes
	;;
arm*-*-linux*)
	# Target: ARM based machine running GNU/Linux
	gdb_target_obs="arm-tdep.o arm-linux-tdep.o glibc-tdep.o \
			solib.o solib-svr4.o symfile-mem.o corelow.o"
	build_gdbserver=yes
	;;
arm*-*-netbsd* | arm*-*-knetbsd*-gnu)
	# Target: NetBSD/arm
	gdb_target_obs="arm-tdep.o armnbsd-tdep.o solib.o solib-svr4.o"
	;;
arm*-*-openbsd*)
	# Target: OpenBSD/arm
	gdb_target_obs="arm-tdep.o armbsd-tdep.o armobsd-tdep.o obsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
arm*-*-* | thumb*-*-* | strongarm*-*-* | xscale-*-*)
	# Target: ARM embedded system
	gdb_target_obs="arm-tdep.o"
	gdb_sim=../sim/arm/libsim.a
	;;

avr-*-*)
	# Target: AVR
	gdb_target_obs="avr-tdep.o"
	# There is no simulator provided with gdb (yet).
	# See <http://savannah.gnu.org/projects/simulavr/>
	# for the simulator used during development of avr
	# support for gdb.
	;;

cris*)
	# Target: CRIS
	gdb_target_obs="cris-tdep.o corelow.o solib.o solib-svr4.o"
	;;

frv-*-*)
	# Target: Fujitsu FRV processor
	gdb_target_obs="frv-tdep.o frv-linux-tdep.o \
			solib.o solib-frv.o corelow.o"
	gdb_sim=../sim/frv/libsim.a
	;;

h8300-*-*)
	# Target: H8300 with HMS monitor and H8 simulator
	gdb_target_obs="h8300-tdep.o monitor.o dsrec.o"
	gdb_sim=../sim/h8300/libsim.a
	;;

hppa*-*-hpux*)
	# Target: HP PA-RISC running hpux
	gdb_target_obs="hppa-tdep.o hppa-hpux-tdep.o corelow.o \
			solib.o solib-som.o solib-pa64.o"
	;;
hppa*-*-linux*)
	# Target: HP PA-RISC running Linux
	gdb_target_obs="hppa-tdep.o hppa-linux-tdep.o glibc-tdep.o \
			solib.o solib-svr4.o symfile-mem.o"
	;;
hppa*-*-netbsd*)
	# Target: NetBSD/hppa
	gdb_target_obs="hppa-tdep.o hppabsd-tdep.o hppanbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
hppa*-*-openbsd*)
	# Target: OpenBSD/hppa
	gdb_target_obs="hppa-tdep.o hppabsd-tdep.o hppaobsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
hppa*-*-*)
	# Target: HP PA-RISC
	gdb_target_obs="hppa-tdep.o"
	;;

i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
	# Target: FreeBSD/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o i386bsd-tdep.o i386fbsd-tdep.o \
			bsd-uthread.o corelow.o solib.o solib-svr4.o"
	;;
i[34567]86-*-netbsd* | i[34567]86-*-knetbsd*-gnu)
	# Target: NetBSD/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o \
			nbsd-tdep.o corelow.o solib.o solib-svr4.o"
	;;
i[34567]86-*-openbsd*)
	# Target: OpenBSD/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o i386bsd-tdep.o i386obsd-tdep.o \
			bsd-uthread.o corelow.o solib.o solib-svr4.o"
	;;
i[34567]86-*-nto*)
	# Target: Intel 386 running qnx6.
	gdb_target_obs="i386-tdep.o i387-tdep.o corelow.o solib.o solib-svr4.o \
			i386-nto-tdep.o nto-tdep.o"
	;;
i[34567]86-*-solaris2.1[0-9]*)
	# Target: Solaris x86_64
	gdb_target_obs="i386-tdep.o i387-tdep.o amd64-tdep.o amd64-sol2-tdep.o \
			i386-sol2-tdep.o sol2-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
i[34567]86-*-solaris*)
	# Target: Solaris x86
	gdb_target_obs="i386-tdep.o i387-tdep.o i386-sol2-tdep.o sol2-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
i[34567]86-*-linux*)
	# Target: Intel 386 running GNU/Linux
	gdb_target_obs="i386-tdep.o i386-linux-tdep.o glibc-tdep.o i387-tdep.o \
			solib.o solib-svr4.o symfile-mem.o corelow.o"
	build_gdbserver=yes
	;;
i[34567]86-*-gnu*)
	# Target: Intel 386 running the GNU Hurd
	gdb_target_obs="i386-tdep.o i387-tdep.o i386gnu-tdep.o \
			solib.o solib-svr4.o"
	;;
i[34567]86-*-cygwin*)
	# Target: Intel 386 running win32
	gdb_target_obs="i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \
			solib-target.o corelow.o"
	build_gdbserver=yes
	;;
i[34567]86-*-mingw32*)
	# Target: Intel 386 running win32
	gdb_target_obs="i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \
			solib-target.o corelow.o"
	build_gdbserver=yes
	;;
i[34567]86-*-*)
	# Target: i386
	gdb_target_obs="i386-tdep.o i387-tdep.o"
	;;

ia64-*-linux*)
	# Target: Intel IA-64 running GNU/Linux
	gdb_target_obs="ia64-tdep.o ia64-linux-tdep.o \
			solib.o solib-svr4.o symfile-mem.o"
	build_gdbserver=yes
	;;
ia64*-*-*)
	# Target: Intel IA-64
	gdb_target_obs="ia64-tdep.o"
	;;

iq2000-*-*)
	gdb_target_obs="iq2000-tdep.o"
	gdb_sim=../sim/iq2000/libsim.a
	;;

m32c-*-*)
	# Target: Renesas M32C family
	gdb_target_obs="m32c-tdep.o prologue-value.o"
	# There may also be a SID / CGEN simulator for this,
	# but we do have DJ Delorie's mini-sim.
	gdb_sim=../sim/m32c/libsim.a
	;;

m32r*-*-linux*)
	# Target: Renesas M32R running GNU/Linux
	gdb_target_obs="m32r-tdep.o m32r-linux-tdep.o remote-m32r-sdi.o \
			glibc-tdep.o solib.o solib-svr4.o symfile-mem.o"
	gdb_sim=../sim/m32r/libsim.a
	build_gdbserver=yes
	;;
m32r*-*-*)
	# Target: Renesas m32r processor
	gdb_target_obs="m32r-tdep.o monitor.o m32r-rom.o dsrec.o \
			remote-m32r-sdi.o"
	gdb_sim=../sim/m32r/libsim.a
	;;

m68hc11*-*-*|m6811*-*-*)
	# Target: Motorola 68HC11 processor
	gdb_target_obs="m68hc11-tdep.o"
	gdb_sim=../sim/m68hc11/libsim.a
	;;

m68*-*-aout* | m68*-*-coff* | m68*-*-elf* | m68*-*-rtems* | m68*-*-uclinux* | \
fido-*-elf*)
	# Target: Motorola m68k embedded (e.g. bug monitors)
	gdb_target_obs="m68k-tdep.o monitor.o dbug-rom.o dsrec.o"
	;;
m68*-*-linux*)
	# Target: Motorola m68k with a.out and ELF
	gdb_target_obs="m68k-tdep.o m68klinux-tdep.o solib.o solib-svr4.o \
			glibc-tdep.o symfile-mem.o"
	build_gdbserver=yes
	;;
m68*-*-netbsd* | m68*-*-knetbsd*-gnu)
	# Target: NetBSD/m68k
	gdb_target_obs="m68k-tdep.o m68kbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
m68*-*-openbsd*)
	# Target: OpenBSD/m68k
	gdb_target_obs="m68k-tdep.o m68kbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;

m88*-*-openbsd*)
	# Target: OpenBSD/m88k
	gdb_target_obs="m88k-tdep.o corelow.o"
	;;

mep-*-*)
	# Target: Toshiba Media Processor (MEP)
	gdb_target_obs="mep-tdep.o prologue-value.o"
	# No sim needed. Target uses SID.
	;;

mips*-sgi-irix5*)
	# Target: MIPS SGI running Irix 5
	gdb_target_obs="mips-tdep.o mips-irix-tdep.o solib.o solib-irix.o"
	;;
mips*-sgi-irix6*)
	# Target: MIPS SGI running Irix 6.x
	gdb_target_obs="mips-tdep.o mips-irix-tdep.o solib.o solib-irix.o"
	;;
mips*-*-linux*)
	# Target: Linux/MIPS
	gdb_target_obs="mips-tdep.o mips-linux-tdep.o \
			corelow.o solib.o solib-svr4.o symfile-mem.o"
	gdb_sim=../sim/mips/libsim.a
	build_gdbserver=yes
	;;
mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
	# Target: MIPS running NetBSD
	gdb_target_obs="mips-tdep.o mipsnbsd-tdep.o \
			corelow.o solib.o solib-svr4.o nbsd-tdep.o"
	gdb_sim=../sim/mips/libsim.a
	;;
mips64*-*-openbsd*)
	# Target: OpenBSD/mips64
	gdb_target_obs="mips-tdep.o mips64obsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
mips*-*-*)
	# Target: MIPS
	gdb_target_obs="mips-tdep.o"
	gdb_sim=../sim/mips/libsim.a
	;;

mn10300-*-*)
	# Target: Matsushita mn10300
	gdb_target_obs="mn10300-tdep.o"
	gdb_sim=../sim/mn10300/libsim.a
	;;

mt-*-*)
	# Target: Morpho Technologies ms1 processor
	gdb_target_obs="mt-tdep.o"
	;;

powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
	# Target: NetBSD/powerpc
	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppcnbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	gdb_sim=../sim/ppc/libsim.a
	;;
powerpc-*-openbsd*)
	# Target: OpenBSD/powerpc
	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppcobsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
powerpc-*-aix* | rs6000-*-*)
	# Target: PowerPC running AIX
	gdb_target_obs="rs6000-tdep.o rs6000-aix-tdep.o xcoffread.o \
			ppc-sysv-tdep.o solib.o solib-svr4.o"
	;;
powerpc-*-linux* | powerpc64-*-linux*)
	# Target: PowerPC running Linux
	gdb_target_obs="rs6000-tdep.o ppc-linux-tdep.o ppc-sysv-tdep.o \
			solib.o solib-svr4.o corelow.o symfile-mem.o"
	gdb_sim=../sim/ppc/libsim.a
	build_gdbserver=yes
	;;
powerpc*-*-*)
	# Target: PowerPC running eabi
	gdb_target_obs="rs6000-tdep.o monitor.o dsrec.o ppcbug-rom.o \
			dink32-rom.o ppc-sysv-tdep.o solib.o solib-svr4.o"
	if test -f ../sim/ppc/Makefile; then
	  gdb_sim=../sim/ppc/libsim.a
	fi
	;;

s390*-*-*)
	# Target: S390 running Linux
	gdb_target_obs="s390-tdep.o solib.o solib-svr4.o"
	build_gdbserver=yes
	;;

score-*-*)
	# Target: S+core embedded system
	gdb_target_obs="score-tdep.o"
	;;

# FIXME should that be sh*-*-linux*, perhaps?
sh-*-linux*)
	# Target: GNU/Linux Super-H
	gdb_target_obs="sh-tdep.o sh64-tdep.o sh-linux-tdep.o monitor.o \
			dsrec.o solib.o solib-svr4.o symfile-mem.o"
	gdb_sim=../sim/sh/libsim.a
	build_gdbserver=yes
	;;
sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
	# Target: NetBSD/sh
	gdb_target_obs="sh-tdep.o shnbsd-tdep.o corelow.o solib.o solib-svr4.o"
	gdb_sim=../sim/sh/libsim.a
	;;
sh*-*-openbsd*)
	# Target: OpenBSD/sh
	gdb_target_obs="sh-tdep.o sh64-tdep.o shnbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
sh64-*-elf*)
	# Target: Renesas/Super-H 64 bit with simulator
	gdb_target_obs="sh-tdep.o sh64-tdep.o"
	gdb_sim=../sim/sh64/libsim.a
	;;
sh*)
	# Target: Embedded Renesas Super-H with ICE and simulator
	gdb_target_obs="sh-tdep.o sh64-tdep.o monitor.o dsrec.o"
	gdb_sim=../sim/sh/libsim.a
	;;

sparc-*-linux*)
	# Target: GNU/Linux SPARC
	gdb_target_obs="sparc-tdep.o sparc-sol2-tdep.o sol2-tdep.o \
			sparc-linux-tdep.o solib.o solib-svr4.o symfile-mem.o"
	;;
sparc64-*-linux*)
	# Target: GNU/Linux UltraSPARC
	gdb_target_obs="sparc64-tdep.o sparc64-sol2-tdep.o sol2-tdep.o \
			sparc64-linux-tdep.o sparc-tdep.o sparc-sol2-tdep.o \
			sparc-linux-tdep.o solib.o solib-svr4.o"
	;;
sparc*-*-freebsd* | sparc*-*-kfreebsd*-gnu)
	# Target: FreeBSD/sparc64
	gdb_target_obs="sparc-tdep.o sparc64-tdep.o sparc64fbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
sparc-*-netbsd* | sparc-*-knetbsd*-gnu)
	# Target: NetBSD/sparc
	gdb_target_obs="sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu)
	# Target: NetBSD/sparc64
	gdb_target_obs="sparc64-tdep.o sparc64nbsd-tdep.o sparc-tdep.o \
			sparcnbsd-tdep.o nbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
sparc-*-openbsd*)
	# Target: OpenBSD/sparc
	gdb_target_obs="sparc-tdep.o sparcnbsd-tdep.o sparcobsd-tdep.o \
			nbsd-tdep.o obsd-tdep.o bsd-uthread.o \
			corelow.o solib.o solib-svr4.o"
	;;
sparc64-*-openbsd*)
	# Target: OpenBSD/sparc64
	gdb_target_obs="sparc64-tdep.o sparc64nbsd-tdep.o sparc64obsd-tdep.o \
			sparc-tdep.o sparcnbsd-tdep.o sparcobsd-tdep.o \
			nbsd-tdep.o obsd-tdep.o bsd-uthread.o \
			corelow.o solib.o solib-svr4.o"
	;;
sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
	# Target: Solaris SPARC
	gdb_target_obs="sparc-tdep.o sparc-sol2-tdep.o sol2-tdep.o \
			solib.o solib-svr4.o"
	;;
sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
	# Target: Solaris UltraSPARC
	gdb_target_obs="sparc64-tdep.o sparc64-sol2-tdep.o sparc-tdep.o \
			sparc-sol2-tdep.o sol2-tdep.o solib.o solib-svr4.o"
	;;
sparc-*-rtems*)
	# Target: SPARC embedded with simulator
	gdb_target_obs="sparc-tdep.o"
	gdb_sim=../sim/erc32/libsim.a
	;;
sparc-*-*)
	# Target: SPARC
	gdb_target_obs="sparc-tdep.o"
	;;
sparc64-*-*)
	# Target: UltraSPARC
	gdb_target_obs="sparc-tdep.o sparc64-tdep.o"
	;;

spu*-*-*)
	# Target: Cell BE SPU
	gdb_target_obs="spu-tdep.o"
	build_gdbserver=yes
	;;

xstormy16-*-*)
	# Target: Sanyo Xstormy16a processor
	gdb_target_obs="xstormy16-tdep.o"
	# No simulator libraries are needed -- target uses SID.
	;;

v850*-*-elf)
	# Target: NEC V850 processor
	gdb_target_obs="v850-tdep.o"
	gdb_sim=../sim/v850/libsim.a
	;;

vax-*-netbsd* | vax-*-knetbsd*-gnu)
	# Target: NetBSD/vax
	gdb_target_obs="vax-tdep.o vaxnbsd-tdep.o \
			corelow.o solib.o solib-svr4.o"
	;;
vax-*-openbsd*)
	# Target: OpenBSD/vax
	gdb_target_obs="vax-tdep.o vaxobsd-tdep.o corelow.o"
	;;
vax-*-*)
	# Target: VAX running 4.2BSD or Ultrix
	gdb_target_obs="vax-tdep.o"
	;;

x86_64-*-linux*)
	# Target: GNU/Linux x86-64
	gdb_target_obs="amd64-tdep.o amd64-linux-tdep.o i386-tdep.o \
			i387-tdep.o i386-linux-tdep.o glibc-tdep.o \
			solib.o solib-svr4.o corelow.o symfile-mem.o"
	build_gdbserver=yes
	;;
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
	# Target: FreeBSD/amd64
	gdb_target_obs="amd64-tdep.o amd64fbsd-tdep.o i386-tdep.o \
			i387-tdep.o i386bsd-tdep.o i386fbsd-tdep.o \
			bsd-uthread.o corelow.o solib.o solib-svr4.o"
	;;
x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu)
	# Target: NetBSD/amd64
	gdb_target_obs="amd64-tdep.o amd64nbsd-tdep.o i386-tdep.o i387-tdep.o \
			nbsd-tdep.o corelow.o solib.o solib-svr4.o"
	;;
x86_64-*-openbsd*)
	# Target: OpenBSD/amd64
	gdb_target_obs="amd64-tdep.o amd64obsd-tdep.o i386-tdep.o \
			i387-tdep.o i386bsd-tdep.o i386obsd-tdep.o \
			bsd-uthread.o corelow.o solib.o solib-svr4.o"
	;;
xtensa*-*-linux*)	gdb_target=linux
	# Target: GNU/Linux Xtensa
	gdb_target_obs="xtensa-tdep.o xtensa-config.o xtensa-linux-tdep.o \
			solib.o solib-svr4.o corelow.o symfile-mem.o"
	build_gdbserver=yes
	;;
xtensa*)
	# Target: Tensilica Xtensa processors
	gdb_target_obs="xtensa-tdep.o xtensa-config.o"
	;;

esac

# map target onto default OS ABI

case "${targ}" in
*-*-freebsd*)	gdb_osabi=GDB_OSABI_FREEBSD_ELF ;;
*-*-linux*)	gdb_osabi=GDB_OSABI_LINUX ;;
*-*-nto*)	gdb_osabi=GDB_OSABI_QNXNTO ;;
m68*-*-openbsd* | m88*-*-openbsd* | vax-*-openbsd*) ;;
*-*-openbsd*)	gdb_osabi=GDB_OSABI_OPENBSD_ELF ;;
*-*-solaris*)	gdb_osabi=GDB_OSABI_SOLARIS ;;
*-*-*-gnu*)	;; # prevent non-GNU kernels to match the Hurd rule below
*-*-gnu*)	gdb_osabi=GDB_OSABI_HURD ;;
*-*-mingw32ce*)	gdb_osabi=GDB_OSABI_WINCE ;;
*-*-mingw* | *-*-cygwin*)
		gdb_osabi=GDB_OSABI_CYGWIN ;;
esac
