# 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
#  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* | \
 *-*-solaris2.[01] | *-*-solaris2.[2-9]* | *-*-solaris2.10* | \
 alpha*-*-osf* | \
 alpha*-*-freebsd* | \
 alpha*-*-kfreebsd*-gnu | \
 d10v-*-* | \
 hppa*-*-hiux* | \
 i[34567]86-ncr-* | \
 m68*-cisco*-* | \
 m68*-tandem-* | \
 m68*-*-os68k* | \
 mips*-*-pe | \
 rs6000-*-lynxos* | \
 sh*-*-pe | \
 hppa*-*-hpux* | \
 ia64-*-hpux* | \
 *-*-vxworks* | \
 mt-*-* | \
 null)
    echo "*** Configuration $targ is obsolete." >&2
    echo "*** Support has been REMOVED." >&2
    exit 1
    ;;
esac

x86_tobjs="x86-tdep.o"
i386_tobjs="i386-tdep.o arch/i386.o i387-tdep.o ${x86_tobjs}"
amd64_tobjs="ravenscar-thread.o amd64-ravenscar-thread.o \
    amd64-tdep.o arch/amd64.o ${x86_tobjs}"

# Here are three sections to get a list of target specific object
# files according to target triplet $TARG.

# 1. Get the objects per cpu in $TARG.

case "${targ}" in
aarch64*-*-*)
	cpu_obs="aarch32-tdep.o aarch64-tdep.o arch/aarch32.o \
		 arch/aarch64-insn.o arch/aarch64.o  ravenscar-thread.o \
		 aarch64-ravenscar-thread.o";;

alpha*-*-*)
	# Target: Alpha
	cpu_obs="alpha-tdep.o"
	;;

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

arm*-*-*)
	cpu_obs="aarch32-tdep.o arch/aarch32.o arch/arm.o \
		 arch/arm-get-next-pcs.o arm-tdep.o arm-none-tdep.o"
	;;

hppa*-*-*)
	# Target: HP PA-RISC
	cpu_obs="hppa-tdep.o"
	;;

i[34567]86-*-*)
	cpu_obs="${i386_tobjs}"
	if test "x$enable_64_bit_bfd" = "xyes"; then
	   cpu_obs="${amd64_tobjs} ${cpu_obs}"
	fi
	;;

ia64*-*-*)
	# Target: Intel IA-64
	cpu_obs="ia64-tdep.o"
	;;

riscv*-*-*)
	cpu_obs="riscv-tdep.o riscv-none-tdep.o arch/riscv.o \
	         ravenscar-thread.o riscv-ravenscar-thread.o";;

x86_64-*-*)
	cpu_obs="${i386_tobjs} ${amd64_tobjs}";;

xtensa*)
	# Target: Tensilica Xtensa processors
	cpu_obs="xtensa-tdep.o xtensa-config.o solib-svr4.o"
	;;

esac

# 2. Get the objects per os in $TARG.

case "${targ}" in
*-*-freebsd* | *-*-kfreebsd*-gnu)
	os_obs="fbsd-tdep.o solib-svr4.o";;
*-*-netbsd* | *-*-knetbsd*-gnu)
	os_obs="netbsd-tdep.o solib-svr4.o";;
*-*-openbsd*)
	os_obs="obsd-tdep.o solib-svr4.o";;
esac

# 3. Get the rest of objects.

case "${targ}" in
aarch64*-*-elf | aarch64*-*-rtems*)
	# Target: AArch64 embedded system
	gdb_target_obs="aarch64-newlib-tdep.o"
	;;

aarch64*-*-freebsd*)
	# Target: FreeBSD/aarch64
	gdb_target_obs="aarch64-fbsd-tdep.o"
	;;

aarch64*-*-linux*)
	# Target: AArch64 linux
	gdb_target_obs="aarch64-linux-tdep.o arch/aarch64.o\
			arch/aarch64-mte-linux.o \
			arch/arm.o arch/arm-linux.o arch/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"
	;;

alpha*-*-linux*)
	# Target: Little-endian Alpha running Linux
	gdb_target_obs="alpha-mdebug-tdep.o alpha-linux-tdep.o \
			linux-tdep.o solib-svr4.o"
	;;
alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
	# Target: NetBSD/alpha
	gdb_target_obs="alpha-mdebug-tdep.o alpha-bsd-tdep.o \
			alpha-netbsd-tdep.o"
	;;
alpha*-*-openbsd*)
	# Target: OpenBSD/alpha
	gdb_target_obs="alpha-mdebug-tdep.o alpha-bsd-tdep.o \
			alpha-netbsd-tdep.o alpha-obsd-tdep.o netbsd-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*-*-linux*)
	# Target: ARC machine running Linux
	gdb_target_obs="arc-linux-tdep.o linux-tdep.o solib-svr4.o"
	;;

arm*-wince-pe | arm*-*-mingw32ce*)
	# Target: ARM based machine running Windows CE (win32)
	gdb_target_obs="arm-wince-tdep.o windows-tdep.o"
	;;
arm*-*-linux*)
	# Target: ARM based machine running GNU/Linux
	gdb_target_obs="arch/arm-linux.o arm-linux-tdep.o glibc-tdep.o \
			solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
	;;
arm*-*-freebsd*)
	# Target: FreeBSD/arm
	gdb_target_obs="arm-fbsd-tdep.o"
	;;
arm*-*-netbsd* | arm*-*-knetbsd*-gnu)
	# Target: NetBSD/arm
	gdb_target_obs="arm-netbsd-tdep.o"
	;;
arm*-*-openbsd*)
	# Target: OpenBSD/arm
	gdb_target_obs="arm-bsd-tdep.o arm-obsd-tdep.o"
	;;
arm*-*-*)
	# Target: ARM embedded system
	gdb_target_obs="arm-pikeos-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
	;;
bfin-*-*)
	# Target: Blackfin processor
	gdb_target_obs="bfin-tdep.o"
	gdb_sim=../sim/bfin/libsim.a
	;;

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

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

csky*-*-linux*)
	# Target: CSKY running GNU/Linux
	gdb_target_obs="csky-tdep.o csky-linux-tdep.o glibc-tdep.o \
			linux-tdep.o solib-svr4.o"
	;;

csky*-*-*)
	# Target: CSKY bare metal
	gdb_target_obs="csky-tdep.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-linux-tdep.o glibc-tdep.o \
			linux-tdep.o solib-svr4.o symfile-mem.o"
	;;
hppa*-*-netbsd*)
	# Target: NetBSD/hppa
	gdb_target_obs="hppa-bsd-tdep.o hppa-netbsd-tdep.o solib-svr4.o"
	;;
hppa*-*-openbsd*)
	# Target: OpenBSD/hppa
	gdb_target_obs="hppa-bsd-tdep.o hppa-obsd-tdep.o solib-svr4.o"
	;;

i[34567]86-*-darwin*)
	# Target: Darwin/i386
	gdb_target_obs="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-darwin-tdep.o ${gdb_target_obs}"
	fi
	;;
i[34567]86-*-dicos*)
	# Target: DICOS/i386
	gdb_target_obs="dicos-tdep.o i386-dicos-tdep.o"
	;;
i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
	# Target: FreeBSD/i386
	gdb_target_obs="i386-bsd-tdep.o i386-fbsd-tdep.o "
	;;
i[34567]86-*-netbsd* | i[34567]86-*-knetbsd*-gnu)
	# Target: NetBSD/i386
	gdb_target_obs="i386-bsd-tdep.o i386-netbsd-tdep.o "
	;;
i[34567]86-*-openbsd*)
	# Target: OpenBSD/i386
	gdb_target_obs="i386-bsd-tdep.o i386-obsd-tdep.o bsd-uthread.o"
	;;
i[34567]86-*-nto*)
	# Target: Intel 386 running qnx6.
	gdb_target_obs="solib-svr4.o \
			i386-nto-tdep.o nto-tdep.o"
	;;
i[34567]86-*-solaris2* | x86_64-*-solaris2*)
	# Target: Solaris x86_64
	gdb_target_obs="${i386_tobjs} ${amd64_tobjs} \
			 amd64-sol2-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-linux-tdep.o \
			glibc-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-linux-tdep.o ${gdb_target_obs}"
	fi
	;;
i[34567]86-*-gnu*)
	# Target: Intel 386 running the GNU Hurd
	gdb_target_obs="i386-gnu-tdep.o solib-svr4.o"
	;;
i[34567]86-*-cygwin*)
	# Target: Intel 386 running win32
	gdb_target_obs="i386-windows-tdep.o windows-tdep.o"
	;;
i[34567]86-*-mingw32*)
	# Target: Intel 386 running win32
	gdb_target_obs="i386-windows-tdep.o windows-tdep.o"
	;;
i[34567]86-*-go32* | i[34567]86-*-msdosdjgpp*)
	# Target: i386 running DJGPP/go32.
	gdb_target_obs="i386-go32-tdep.o"
	;;

ia64-*-linux*)
	# Target: Intel IA-64 running GNU/Linux
	gdb_target_obs="ia64-linux-tdep.o linux-tdep.o \
			solib-svr4.o symfile-mem.o"
	;;
ia64-*-*vms*)
	# Target: Intel IA-64 running OpenVMS
	gdb_target_obs="ia64-vms-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
	;;
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"
	;;
m68*-*-netbsd* | m68*-*-knetbsd*-gnu)
	# Target: NetBSD/m68k
	gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o"
	;;
m68*-*-openbsd*)
	# Target: OpenBSD/m68k
	gdb_target_obs="m68k-tdep.o m68k-bsd-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
	;;
mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
	# Target: MIPS running NetBSD
	gdb_target_obs="mips-tdep.o mips-netbsd-tdep.o"
	gdb_sim=../sim/mips/libsim.a
	;;
mips*-*-freebsd*)
	# Target: MIPS running FreeBSD
	gdb_target_obs="mips-tdep.o mips-fbsd-tdep.o"
	gdb_sim=../sim/mips/libsim.a
	;;
mips64*-*-openbsd*)
	# Target: OpenBSD/mips64
	gdb_target_obs="mips-tdep.o mips64-obsd-tdep.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
	;;

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"
	;;

or1k*-*-linux*)
	# Target: OpenCores OpenRISC 1000 32-bit running Linux
	gdb_target_obs="or1k-tdep.o or1k-linux-tdep.o solib-svr4.o \
			symfile-mem.o glibc-tdep.o linux-tdep.o"
	gdb_sim=../sim/or1k/libsim.a
	;;

or1k-*-* | or1knd-*-*)
	# Target: OpenCores OpenRISC 1000 32-bit implementation bare metal
	gdb_target_obs="or1k-tdep.o"
	gdb_sim=../sim/or1k/libsim.a
	;;

powerpc*-*-freebsd*)
	# Target: FreeBSD/powerpc
	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc64-tdep.o \
		        ppc-fbsd-tdep.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-netbsd-tdep.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 \
			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 \
			glibc-tdep.o symfile-mem.o linux-tdep.o \
			ravenscar-thread.o ppc-ravenscar-thread.o \
			linux-record.o \
			arch/ppc-linux-common.o"
	gdb_sim=../sim/ppc/libsim.a
	;;
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 s390-tdep.o solib-svr4.o \
			linux-tdep.o linux-record.o symfile-mem.o"
	;;

riscv*-*-freebsd*)
	# Target: FreeBSD/riscv
	gdb_target_obs="riscv-fbsd-tdep.o"
	;;

riscv*-*-linux*)
	# Target: Linux/RISC-V
	gdb_target_obs="riscv-linux-tdep.o glibc-tdep.o \
 			linux-tdep.o solib-svr4.o symfile-mem.o linux-record.o"
	;;

riscv*-*-*)
	# Target: RISC-V architecture
	gdb_target_obs=""
	gdb_sim=../sim/riscv/libsim.a
	;;

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"
	;;

sh*-*-linux*)
	# Target: GNU/Linux Super-H
	gdb_target_obs="sh-tdep.o sh-linux-tdep.o \
			solib-svr4.o symfile-mem.o \
			glibc-tdep.o linux-tdep.o"
	gdb_sim=../sim/sh/libsim.a
	;;
sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
	# Target: NetBSD/sh
	gdb_target_obs="sh-tdep.o sh-netbsd-tdep.o"
	gdb_sim=../sim/sh/libsim.a
	;;
sh*-*-openbsd*)
	# Target: OpenBSD/sh
	gdb_target_obs="sh-tdep.o sh-netbsd-tdep.o"
	;;
sh*)
	# Target: Embedded Renesas Super-H processor
	gdb_target_obs="sh-tdep.o"
	gdb_sim=../sim/sh/libsim.a
	;;

sparc-*-linux*)
	# Target: GNU/Linux SPARC
	gdb_target_obs="sparc-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-linux-tdep.o ${gdb_target_obs}"
	fi
	;;
sparc64-*-linux*)
	# Target: GNU/Linux UltraSPARC
	gdb_target_obs="sparc64-tdep.o \
			sparc64-linux-tdep.o sparc-tdep.o \
			sparc-linux-tdep.o solib-svr4.o linux-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc*-*-freebsd* | sparc*-*-kfreebsd*-gnu)
	# Target: FreeBSD/sparc64
	gdb_target_obs="sparc-tdep.o sparc64-tdep.o sparc64-fbsd-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc-*-netbsd* | sparc-*-knetbsd*-gnu)
	# Target: NetBSD/sparc
	gdb_target_obs="sparc-tdep.o sparc-netbsd-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu)
	# Target: NetBSD/sparc64
	gdb_target_obs="sparc64-tdep.o sparc64-netbsd-tdep.o sparc-tdep.o \
			sparc-netbsd-tdep.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc-*-openbsd*)
	# Target: OpenBSD/sparc
	gdb_target_obs="sparc-tdep.o sparc-netbsd-tdep.o sparc-obsd-tdep.o \
			netbsd-tdep.o bsd-uthread.o \
			ravenscar-thread.o sparc-ravenscar-thread.o"
	;;
sparc64-*-openbsd*)
	# Target: OpenBSD/sparc64
	gdb_target_obs="sparc64-tdep.o sparc64-netbsd-tdep.o sparc64-obsd-tdep.o \
			sparc-tdep.o sparc-netbsd-tdep.o sparc-obsd-tdep.o \
			netbsd-tdep.o bsd-uthread.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"
	;;

s12z-*-*)
	# Target: Freescale S12z
	gdb_target_obs="s12z-tdep.o"
	;;

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"
	;;

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

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

x86_64-*-dicos*)
	# Target: DICOS/x86-64
	gdb_target_obs="${i386_tobjs} \
			dicos-tdep.o i386-dicos-tdep.o amd64-dicos-tdep.o"
	;;
x86_64-*-elf*)
	gdb_target_obs="${i386_tobjs}"
	;;
x86_64-*-linux*)
	# Target: GNU/Linux x86-64
	gdb_target_obs="amd64-linux-tdep.o ${i386_tobjs}  \
			i386-linux-tdep.o glibc-tdep.o \
			solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
	;;
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
	# Target: FreeBSD/amd64
	gdb_target_obs="amd64-fbsd-tdep.o ${i386_tobjs} \
			i386-bsd-tdep.o i386-fbsd-tdep.o"
	;;
x86_64-*-mingw* | x86_64-*-cygwin*)
        # Target: MingW/amd64
	gdb_target_obs="amd64-windows-tdep.o \
                        ${i386_tobjs} i386-windows-tdep.o \
                        windows-tdep.o"
        ;;
x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu)
	# Target: NetBSD/amd64
	gdb_target_obs="amd64-netbsd-tdep.o ${i386_tobjs}"
	;;
x86_64-*-openbsd*)
	# Target: OpenBSD/amd64
	gdb_target_obs="amd64-obsd-tdep.o ${i386_tobjs} \
			i386-bsd-tdep.o i386-obsd-tdep.o \
			bsd-uthread.o"
	;;
x86_64-*-rtems*)
	gdb_target_obs="${amd64_tobjs} ${i386_tobjs} i386-bsd-tdep.o"
	;;
xtensa*-*-*linux*)
	# Target: GNU/Linux Xtensa
	gdb_target_obs="xtensa-linux-tdep.o symfile-mem.o linux-tdep.o"
	;;
z80*)
	# Target: Z80
	gdb_target_obs="z80-tdep.o"
	;;

esac

# Put them together.

gdb_target_obs="${cpu_obs} ${os_obs} ${gdb_target_obs}"

# map target onto default OS ABI

case "${targ}" in
*-*-freebsd* | *-*-kfreebsd*-gnu)
		gdb_osabi=GDB_OSABI_FREEBSD ;;
*-*-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 ;;
*-*-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*)	gdb_osabi=GDB_OSABI_WINDOWS ;;
*-*-cygwin*)	gdb_osabi=GDB_OSABI_CYGWIN ;;
*-*-dicos*)	gdb_osabi=GDB_OSABI_DICOS ;;
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
