# 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
#  gdb_have_gcore	set to "true"/"false" if this target can run gcore

# NOTE: Every file added to a gdb_target_obs variable for any target here
#       must also be added to either ALL_TARGET_OBS or ALL_64_TARGET_OBS
#	in Makefile.in!

case $targ in
 *-*-irix* | \
 alpha*-*-osf* | \
 d10v-*-* | \
 hppa*-*-hiux* | \
 i[34567]86-ncr-* | \
 m68*-cisco*-* | \
 m68*-tandem-* | \
 m68*-*-os68k* | \
 mips*-*-pe | \
 rs6000-*-lynxos* | \
 sh*-*-pe | \
 hppa*-*-hpux* | \
 ia64-*-hpux* | \
 *-*-vxworks* | \
 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
aarch64*-*-elf | aarch64*-*-rtems*)
	# Target: AArch64 embedded system
	gdb_target_obs="aarch64-tdep.o aarch64-newlib-tdep.o aarch64-insn.o"
	;;

aarch64*-*-fuchsia*)
	# Target: AArch64 fuchsia
	gdb_target_obs="aarch64-tdep.o aarch64-fuchsia-tdep.o aarch64-insn.o \
			fuchsia-tdep.o solib-svr4.o symfile-mem.o"
	;;

aarch64*-*-linux*)
	# Target: AArch64 linux
	gdb_target_obs="aarch64-tdep.o aarch64-linux-tdep.o aarch64-insn.o \
			arm.o arm-linux.o arm-get-next-pcs.o arm-tdep.o \
			arm-linux-tdep.o \
			glibc-tdep.o linux-tdep.o solib-svr4.o \
			symfile-mem.o linux-record.o"
	build_gdbserver=yes
	;;

alpha*-*-linux*)
	# Target: Little-endian Alpha running Linux
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-linux-tdep.o \
			linux-tdep.o solib-svr4.o"
	;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
	# Target: FreeBSD/alpha
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-bsd-tdep.o \
			alpha-fbsd-tdep.o solib-svr4.o"
	;;
alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
	# Target: NetBSD/alpha
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-bsd-tdep.o \
			alpha-nbsd-tdep.o nbsd-tdep.o solib-svr4.o"
	;;
alpha*-*-openbsd*)
	# Target: OpenBSD/alpha
	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-bsd-tdep.o \
			alpha-nbsd-tdep.o alpha-obsd-tdep.o nbsd-tdep.o \
			obsd-tdep.o solib-svr4.o"
	;;
alpha*-*-*)
	# Target: Alpha
	gdb_target_obs="alpha-tdep.o"
	;;

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

arc*-*-elf32)
	# Target: baremetal ARC elf32 (newlib) target
	gdb_target_obs="arc-newlib-tdep.o arc-tdep.o"
	;;

arc*-*-*)
	# Target: Unidentified ARC target
	gdb_target_obs="arc-tdep.o"
	;;

arm*-wince-pe | arm*-*-mingw32ce*)
	# Target: ARM based machine running Windows CE (win32)
	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o \
			arm-wince-tdep.o windows-tdep.o"
	build_gdbserver=yes
	;;
arm*-*-linux*)
	# Target: ARM based machine running GNU/Linux
	gdb_target_obs="arm.o arm-linux.o arm-get-next-pcs.o arm-tdep.o \
                        arm-linux-tdep.o glibc-tdep.o \
			solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
	build_gdbserver=yes
	;;
arm*-*-netbsd* | arm*-*-knetbsd*-gnu)
	# Target: NetBSD/arm
	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-nbsd-tdep.o \
			solib-svr4.o"
	;;
arm*-*-openbsd*)
	# Target: OpenBSD/arm
	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-bsd-tdep.o \
			arm-obsd-tdep.o obsd-tdep.o solib-svr4.o"
	;;
arm*-*-symbianelf*)
	# Target: SymbianOS/arm
	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-symbian-tdep.o"
	;;
arm*-*-*)
	# Target: ARM embedded system
	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o"
	gdb_sim=../sim/arm/libsim.a
	;;

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

bfin-*-*linux*)
	# Target: Blackfin Linux
	gdb_target_obs="bfin-tdep.o bfin-linux-tdep.o linux-tdep.o"
	gdb_sim=../sim/bfin/libsim.a
	build_gdbserver=yes
	;;
bfin-*-*)
	# Target: Blackfin processor
	gdb_target_obs="bfin-tdep.o"
	gdb_sim=../sim/bfin/libsim.a
	;;

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

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

moxie-*-elf | moxie-*-moxiebox | moxie-*-rtems*)
	gdb_target_obs="moxie-tdep.o"
	gdb_sim=../sim/moxie/libsim.a
	;;

h8300-*-*)
	# Target: H8300 processor
	gdb_target_obs="h8300-tdep.o"
	gdb_sim=../sim/h8300/libsim.a
	;;

hppa*-*-linux*)
	# Target: HP PA-RISC running Linux
	gdb_target_obs="hppa-tdep.o hppa-linux-tdep.o glibc-tdep.o \
			linux-tdep.o solib-svr4.o symfile-mem.o"
	;;
hppa*-*-netbsd*)
	# Target: NetBSD/hppa
	gdb_target_obs="hppa-tdep.o hppa-bsd-tdep.o hppa-nbsd-tdep.o solib-svr4.o"
	;;
hppa*-*-openbsd*)
	# Target: OpenBSD/hppa
	gdb_target_obs="hppa-tdep.o hppa-bsd-tdep.o hppa-obsd-tdep.o solib-svr4.o"
	;;
hppa*-*-*)
	# Target: HP PA-RISC
	gdb_target_obs="hppa-tdep.o"
	;;

i[34567]86-*-darwin*)
	# Target: Darwin/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o \
			i386-darwin-tdep.o solib-darwin.o"
	if test "x$enable_64_bit_bfd" = "xyes"; then
	    # Target: GNU/Linux x86-64
	    gdb_target_obs="amd64-tdep.o amd64-darwin-tdep.o ${gdb_target_obs}"
	fi
	;;
i[34567]86-*-dicos*)
	# Target: DICOS/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o dicos-tdep.o i386-dicos-tdep.o"
	;;
i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
	# Target: FreeBSD/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o i386-bsd-tdep.o i386-fbsd-tdep.o \
			bsd-uthread.o fbsd-tdep.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 i386-bsd-tdep.o i386-nbsd-tdep.o \
			nbsd-tdep.o solib-svr4.o"
	;;
i[34567]86-*-openbsd*)
	# Target: OpenBSD/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o i386-bsd-tdep.o i386-obsd-tdep.o \
			obsd-tdep.o bsd-uthread.o solib-svr4.o"
	;;
i[34567]86-*-nto*)
	# Target: Intel 386 running qnx6.
	gdb_target_obs="i386-tdep.o i387-tdep.o solib-svr4.o \
			i386-nto-tdep.o nto-tdep.o"
	build_gdbserver=yes
	;;
i[34567]86-*-solaris2.1[0-9]* | x86_64-*-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 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 \
			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-svr4.o symfile-mem.o \
			linux-tdep.o linux-record.o"
	if test "x$enable_64_bit_bfd" = "xyes"; then
	    # Target: GNU/Linux x86-64
	    gdb_target_obs="amd64-tdep.o amd64-linux-tdep.o ${gdb_target_obs}"
	fi
	build_gdbserver=yes
	;;
i[34567]86-*-gnu*)
	# Target: Intel 386 running the GNU Hurd
	gdb_target_obs="i386-tdep.o i387-tdep.o i386-gnu-tdep.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 \
			windows-tdep.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 \
			windows-tdep.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 linux-tdep.o \
			solib-svr4.o symfile-mem.o"
	build_gdbserver=yes
	;;
ia64-*-*vms*)
	# Target: Intel IA-64 running OpenVMS
	gdb_target_obs="ia64-tdep.o ia64-vms-tdep.o"
	;;
ia64*-*-*)
	# Target: Intel IA-64
	gdb_target_obs="ia64-tdep.o"
	;;

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

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

m32c-*-*)
	# Target: Renesas M32C family
	gdb_target_obs="m32c-tdep.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 \
			glibc-tdep.o solib-svr4.o symfile-mem.o \
			linux-tdep.o"
	gdb_sim=../sim/m32r/libsim.a
	build_gdbserver=yes
	;;
m32r*-*-*)
	# Target: Renesas m32r processor
	gdb_target_obs="m32r-tdep.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
	gdb_target_obs="m68k-tdep.o"
	;;
m68*-*-linux*)
	# Target: Motorola m68k with a.out and ELF
	gdb_target_obs="m68k-tdep.o m68k-linux-tdep.o solib-svr4.o \
			linux-tdep.o glibc-tdep.o symfile-mem.o"
	build_gdbserver=yes
	;;
m68*-*-netbsd* | m68*-*-knetbsd*-gnu)
	# Target: NetBSD/m68k
	gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o solib-svr4.o"
	;;
m68*-*-openbsd*)
	# Target: OpenBSD/m68k
	gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o solib-svr4.o"
	;;

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

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

microblaze*-linux-*|microblaze*-*-linux*)
	# Target: Xilinx MicroBlaze running Linux
	gdb_target_obs="microblaze-tdep.o microblaze-linux-tdep.o solib-svr4.o \
			symfile-mem.o linux-tdep.o"
	gdb_sim=../sim/microblaze/libsim.a
	;;
microblaze*-*-*)
	# Target: Xilinx MicroBlaze running standalone
	gdb_target_obs="microblaze-tdep.o"
	gdb_sim=../sim/microblaze/libsim.a
	;;

mips*-*-linux*)
	# Target: Linux/MIPS
	gdb_target_obs="mips-tdep.o mips-linux-tdep.o glibc-tdep.o \
			solib-svr4.o symfile-mem.o linux-tdep.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 mips-nbsd-tdep.o solib-svr4.o nbsd-tdep.o"
	gdb_sim=../sim/mips/libsim.a
	;;
mips64*-*-openbsd*)
	# Target: OpenBSD/mips64
	gdb_target_obs="mips-tdep.o mips64-obsd-tdep.o obsd-tdep.o solib-svr4.o"
	;;
mips*-sde*-elf*)
	# Target: MIPS SDE
	gdb_target_obs="mips-tdep.o mips-sde-tdep.o"
	gdb_sim=../sim/mips/libsim.a
	;;
mips*-*-elf)
	# Target: MIPS ELF
	gdb_target_obs="mips-tdep.o"
	gdb_sim=../sim/mips/libsim.a
	;;
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
	;;

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

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

nds32*-*-elf)
	# Target: AndesTech NDS32 core
	gdb_target_obs="nds32-tdep.o"
	;;

nios2*-*-linux*)
	# Target: Altera Nios II running Linux
	gdb_target_obs="nios2-tdep.o nios2-linux-tdep.o solib-svr4.o \
			symfile-mem.o glibc-tdep.o linux-tdep.o"
	;;

nios2*-*-*)
	# Target: Altera Nios II bare-metal
	gdb_target_obs="nios2-tdep.o"
	;;

powerpc*-*-freebsd*)
	# Target: FreeBSD/powerpc
	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc64-tdep.o \
		        ppc-fbsd-tdep.o fbsd-tdep.o solib-svr4.o \
			ravenscar-thread.o ppc-ravenscar-thread.o"
	;;

powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
	# Target: NetBSD/powerpc
	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc-nbsd-tdep.o \
			solib-svr4.o \
			ravenscar-thread.o ppc-ravenscar-thread.o"
	gdb_sim=../sim/ppc/libsim.a
	;;
powerpc-*-openbsd*)
	# Target: OpenBSD/powerpc
	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc-obsd-tdep.o \
			solib-svr4.o \
			ravenscar-thread.o ppc-ravenscar-thread.o"
	;;
powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
	# Target: PowerPC running AIX
	gdb_target_obs="rs6000-tdep.o rs6000-aix-tdep.o xcoffread.o \
			ppc-sysv-tdep.o solib-aix.o \
			ravenscar-thread.o ppc-ravenscar-thread.o"
	;;
powerpc*-*-linux*)
	# Target: PowerPC running Linux
	gdb_target_obs="rs6000-tdep.o ppc-linux-tdep.o ppc-sysv-tdep.o \
			ppc64-tdep.o solib-svr4.o solib-spu.o \
			spu-multiarch.o \
			glibc-tdep.o symfile-mem.o linux-tdep.o \
			ravenscar-thread.o ppc-ravenscar-thread.o \
			linux-record.o "
	gdb_sim=../sim/ppc/libsim.a
	build_gdbserver=yes
	;;
powerpc-*-lynx*178)
	# Target: PowerPC running Lynx178.
	gdb_target_obs="rs6000-tdep.o rs6000-lynx178-tdep.o \
			xcoffread.o ppc-sysv-tdep.o \
			ravenscar-thread.o ppc-ravenscar-thread.o"
	;;
powerpc*-*-*)
	# Target: PowerPC running eabi
	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o solib-svr4.o \
			ravenscar-thread.o ppc-ravenscar-thread.o"
	gdb_sim=../sim/ppc/libsim.a
	;;

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

rl78-*-elf)
	# Target: Renesas rl78
	gdb_target_obs="rl78-tdep.o"
	gdb_sim=../sim/rl78/libsim.a
	;;

rx-*-elf)
	# Target: Renesas RX
	gdb_target_obs="rx-tdep.o"
	gdb_sim=../sim/rx/libsim.a
	;;

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

sh*-*-linux*)
	# Target: GNU/Linux Super-H
	gdb_target_obs="sh-tdep.o sh64-tdep.o sh-linux-tdep.o \
			solib-svr4.o symfile-mem.o \
			glibc-tdep.o linux-tdep.o"
	gdb_sim=../sim/sh/libsim.a
	build_gdbserver=yes
	;;
sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
	# Target: NetBSD/sh
	gdb_target_obs="sh-tdep.o sh-nbsd-tdep.o solib-svr4.o"
	gdb_sim=../sim/sh/libsim.a
	;;
sh*-*-openbsd*)
	# Target: OpenBSD/sh
	gdb_target_obs="sh-tdep.o sh64-tdep.o sh-nbsd-tdep.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 processor
	gdb_target_obs="sh-tdep.o sh64-tdep.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-svr4.o symfile-mem.o \
			linux-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	if test "x$enable_64_bit_bfd" = "xyes"; then
	    # Target: GNU/Linux UltraSPARC
	    gdb_target_obs="sparc64-tdep.o sparc64-sol2-tdep.o \
			    sparc64-linux-tdep.o ${gdb_target_obs}"
	fi
	build_gdbserver=yes
	;;
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-svr4.o linux-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	build_gdbserver=yes
	;;
sparc*-*-freebsd* | sparc*-*-kfreebsd*-gnu)
	# Target: FreeBSD/sparc64
	gdb_target_obs="sparc-tdep.o sparc64-tdep.o sparc64-fbsd-tdep.o \
			fbsd-tdep.o solib-svr4.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc-*-netbsd* | sparc-*-knetbsd*-gnu)
	# Target: NetBSD/sparc
	gdb_target_obs="sparc-tdep.o sparc-nbsd-tdep.o nbsd-tdep.o \
			solib-svr4.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu)
	# Target: NetBSD/sparc64
	gdb_target_obs="sparc64-tdep.o sparc64-nbsd-tdep.o sparc-tdep.o \
			sparc-nbsd-tdep.o nbsd-tdep.o solib-svr4.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc-*-openbsd*)
	# Target: OpenBSD/sparc
	gdb_target_obs="sparc-tdep.o sparc-nbsd-tdep.o sparc-obsd-tdep.o \
			nbsd-tdep.o obsd-tdep.o bsd-uthread.o solib-svr4.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc64-*-openbsd*)
	# Target: OpenBSD/sparc64
	gdb_target_obs="sparc64-tdep.o sparc64-nbsd-tdep.o sparc64-obsd-tdep.o \
			sparc-tdep.o sparc-nbsd-tdep.o sparc-obsd-tdep.o \
			nbsd-tdep.o obsd-tdep.o bsd-uthread.o solib-svr4.o \
			ravenscar-thread.o sparc-ravenscar-thread.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-svr4.o \
			ravenscar-thread.o sparc-ravenscar-thread.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-svr4.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc-*-*)
	# Target: SPARC
	gdb_target_obs="sparc-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	gdb_sim=../sim/erc32/libsim.a
	;;
sparc64-*-*)
	# Target: UltraSPARC
	gdb_target_obs="sparc-tdep.o sparc64-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;

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

tic6x-*-*linux)
	# Target: GNU/Linux TI C6x
	gdb_target_obs="tic6x-tdep.o tic6x-linux-tdep.o solib-dsbt.o \
			glibc-tdep.o linux-tdep.o"
	;;

tic6x-*-*)
	# Target: TI C6X 
	gdb_target_obs="tic6x-tdep.o"
	;;

tilegx-*-linux*)
	# Target: TILE-Gx
	gdb_target_obs="tilegx-tdep.o tilegx-linux-tdep.o solib-svr4.o \
			symfile-mem.o glibc-tdep.o linux-tdep.o"
	build_gdbserver=yes
	;;

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

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

v850*-*-elf | v850*-*-rtems*)
	# 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 vax-nbsd-tdep.o solib-svr4.o"
	;;
vax-*-openbsd*)
	# Target: OpenBSD/vax
	gdb_target_obs="vax-tdep.o vax-obsd-tdep.o"
	;;
vax-*-*)
	# Target: VAX
	gdb_target_obs="vax-tdep.o"
	;;

x86_64-*-darwin*)
	# Target: Darwin/x86-64
	gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o \
			i386-darwin-tdep.o amd64-darwin-tdep.o \
                        solib-darwin.o"
	;;

x86_64-*-dicos*)
	# Target: DICOS/x86-64
	gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o \
			dicos-tdep.o i386-dicos-tdep.o amd64-dicos-tdep.o"
	;;
x86_64-*-elf*)
	gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o"
	;;
x86_64-*-fuchsia*)
	gdb_target_obs="amd64-tdep.o amd64-fuchsia-tdep.o \
			i386-tdep.o i387-tdep.o \
			solib-svr4.o symfile-mem.o fuchsia-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-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
	build_gdbserver=yes
	;;
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
	# Target: FreeBSD/amd64
	gdb_target_obs="amd64-tdep.o amd64-fbsd-tdep.o i386-tdep.o \
			i387-tdep.o i386-bsd-tdep.o i386-fbsd-tdep.o \
			bsd-uthread.o fbsd-tdep.o solib-svr4.o"
	;;
x86_64-*-mingw* | x86_64-*-cygwin*)
        # Target: MingW/amd64
	gdb_target_obs="amd64-tdep.o amd64-windows-tdep.o \
                        i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \
                        windows-tdep.o"
	build_gdbserver=yes
        ;;
x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu)
	# Target: NetBSD/amd64
	gdb_target_obs="amd64-tdep.o amd64-nbsd-tdep.o i386-tdep.o i387-tdep.o \
			nbsd-tdep.o solib-svr4.o"
	;;
x86_64-*-openbsd*)
	# Target: OpenBSD/amd64
	gdb_target_obs="amd64-tdep.o amd64-obsd-tdep.o i386-tdep.o \
			i387-tdep.o i386-bsd-tdep.o i386-obsd-tdep.o \
			obsd-tdep.o bsd-uthread.o solib-svr4.o"
	;;
x86_64-*-rtems*)
	gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o i386-bsd-tdep.o"
	;;
xtensa*-*-linux*)	gdb_target=linux
	# Target: GNU/Linux Xtensa
	gdb_target_obs="xtensa-tdep.o xtensa-config.o xtensa-linux-tdep.o \
			solib-svr4.o symfile-mem.o linux-tdep.o"
	build_gdbserver=yes
	;;
xtensa*)
	# Target: Tensilica Xtensa processors
	gdb_target_obs="xtensa-tdep.o xtensa-config.o solib-svr4.o"
	;;

esac

# map target onto default OS ABI

case "${targ}" in
*-*-freebsd* | *-*-kfreebsd*-gnu)
		gdb_osabi=GDB_OSABI_FREEBSD_ELF ;;
*-*-fuchsia*)	gdb_osabi=GDB_OSABI_FUCHSIA ;;
*-*-linux* | *-*-uclinux*)
		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 ;;
*-*-dicos*)	gdb_osabi=GDB_OSABI_DICOS ;;
*-*-symbianelf*)
		gdb_osabi=GDB_OSABI_SYMBIAN ;;
powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
                gdb_osabi=GDB_OSABI_AIX ;;
esac

# Check whether this target supports gcore.
# Such target has to call set_gdbarch_find_memory_regions.
gdb_have_gcore=false
for t in x ${gdb_target_obs}; do
  if test "$t" = linux-tdep.o; then
    gdb_have_gcore=true
  fi
done
