# 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
#  gdb_require_amd_dbgapi set to "true" if this target requires the amd-dbgapi
#                         target

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

case $targ in
 *-*-irix* | \
 *-*-solaris2.[01] | *-*-solaris2.[2-9]* | *-*-solaris2.10* | \
 *-*-netbsdpe* | \
 alpha*-*-osf* | \
 alpha*-*-freebsd* | \
 alpha*-*-kfreebsd*-gnu | \
 d10v-*-* | \
 hppa*-*-hiux* | \
 i[34567]86-ncr-* | \
 m68*-cisco*-* | \
 m68*-tandem-* | \
 m68*-*-os68k* | \
 mips*-*-pe | \
 rs6000-*-lynxos* | \
 score-*-* | \
 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 arch/aarch64-mte.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
	;;

ia16*-*-*)
	# Target: Intel IA-16
	cpu_obs="${i386_tobjs}"
	;;

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

loongarch*-*-*)
	# Target: LoongArch baremetal
	cpu_obs="loongarch-tdep.o arch/loongarch.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/aarch64-scalable-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"
	;;

amdgcn*-*-*)
	# Target: AMDGPU
	gdb_require_amd_dbgapi=true
	gdb_target_obs="amdgpu-tdep.o solib-rocm.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"
	;;

avr-*-*)
	# Target: AVR
	gdb_target_obs="avr-tdep.o"
	;;

bfin-*-*linux*)
	# Target: Blackfin Linux
	gdb_target_obs="bfin-tdep.o bfin-linux-tdep.o linux-tdep.o"
	;;
bfin-*-*)
	# Target: Blackfin processor
	gdb_target_obs="bfin-tdep.o"
	;;

bpf-*-*)
	# Target: eBPF
	gdb_target_obs="bpf-tdep.o"
	;;

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

moxie-*-elf | moxie-*-moxiebox | moxie-*-rtems*)
	gdb_target_obs="moxie-tdep.o"
	;;

h8300-*-*)
	# Target: H8300 processor
	gdb_target_obs="h8300-tdep.o"
	;;

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-*-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 \
			arch/i386-linux-tdesc.o \
			arch/x86-linux-tdesc-features.o"
	if test "x$enable_64_bit_bfd" = "xyes"; then
	    # Target: GNU/Linux x86-64
	    gdb_target_obs="amd64-linux-tdep.o \
			    arch/amd64-linux-tdesc.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"
	;;

lm32-*-*)		
	gdb_target_obs="lm32-tdep.o" 
	;;

loongarch*-*-linux*)
	# Target: LoongArch running Linux
	gdb_target_obs="loongarch-linux-tdep.o glibc-tdep.o \
			linux-tdep.o solib-svr4.o"
	;;

m32c-*-*)
	# Target: Renesas M32C family
	gdb_target_obs="m32c-tdep.o"
	;;

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"
	;;
m32r*-*-*)
	# Target: Renesas m32r processor
	gdb_target_obs="m32r-tdep.o"
	;;

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

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"
	;;
microblaze*-*-*)
	# Target: Xilinx MicroBlaze running standalone
	gdb_target_obs="microblaze-tdep.o"
	;;

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"
	;;
mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
	# Target: MIPS running NetBSD
	gdb_target_obs="mips-tdep.o mips-netbsd-tdep.o"
	;;
mips*-*-freebsd*)
	# Target: MIPS running FreeBSD
	gdb_target_obs="mips-tdep.o mips-fbsd-tdep.o"
	;;
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"
	;;
mips*-*-elf)
	# Target: MIPS ELF
	gdb_target_obs="mips-tdep.o"
	;;
mips*-*-*)
	# Target: MIPS
	gdb_target_obs="mips-tdep.o"
	;;

mn10300-*-*)
	# Target: Matsushita mn10300
	gdb_target_obs="mn10300-tdep.o"
	;;

msp430-*-elf*)
	gdb_target_obs="msp430-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"
	;;

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

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

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

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

rl78-*-elf)
	# Target: Renesas rl78
	gdb_target_obs="rl78-tdep.o"
	;;

rx-*-*)
	# Target: Renesas RX
	gdb_target_obs="rx-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"
	;;
sh*-*-netbsd* | sh*-*-knetbsd*-gnu)
	# Target: NetBSD/sh
	gdb_target_obs="sh-tdep.o sh-netbsd-tdep.o"
	;;
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"
	;;

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

v850*-*-elf | v850*-*-rtems*)
	# Target: NEC V850 processor
	gdb_target_obs="v850-tdep.o"
	;;

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 \
			arch/i386-linux-tdesc.o arch/amd64-linux-tdesc.o \
			arch/x86-linux-tdesc-features.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}"

# Get the sim settings.
# NB: Target matching is aligned with sim/configure.ac.  Changes must be kept
# in sync with that file.

case "${targ}" in
aarch64*-*-*)		gdb_sim=aarch64 ;;
arm*-*-*)		gdb_sim=arm ;;
avr*-*-*)		gdb_sim=avr ;;
bfin-*-*)		gdb_sim=bfin ;;
bpf-*-*)		gdb_sim=bpf ;;
cris-*-*|cris32-*-*)	gdb_sim=cris ;;
frv-*-*)		gdb_sim=frv ;;
ft32-*-*)		gdb_sim=ft32 ;;
h8300*-*-*)		gdb_sim=h8300 ;;
iq2000-*-*)		gdb_sim=iq2000 ;;
lm32-*-*)		gdb_sim=lm32 ;;
m32c-*-*)		gdb_sim=m32c ;;
m32r-*-*)		gdb_sim=m32r ;;
m68hc11-*-*|m6811-*-*)	gdb_sim=m68hc11 ;;
microblaze*-*-*)	gdb_sim=microblaze ;;
mips*-*-*)		gdb_sim=mips ;;
mn10300*-*-*)		gdb_sim=mn10300 ;;
moxie-*-*)		gdb_sim=moxie ;;
msp430*-*-*)		gdb_sim=msp430 ;;
or1k*-*-*)		gdb_sim=or1k ;;
powerpc*-*-*)		gdb_sim=ppc ;;
riscv*-*-*)		gdb_sim=riscv ;;
rl78-*-*)		gdb_sim=rl78 ;;
rx-*-*)			gdb_sim=rx ;;
sh*-*-*)		gdb_sim=sh ;;
sparc-*-*)		gdb_sim=erc32 ;;
v850*-*-*)		gdb_sim=v850 ;;
esac
if test "x$gdb_sim" != "x"; then
  gdb_sim="../sim/${gdb_sim}/libsim.a"
fi

# map target onto default OS ABI

case "${targ}" in
*-*-freebsd* | *-*-kfreebsd*-gnu)
		gdb_osabi=GDB_OSABI_FREEBSD ;;
*-*-linux* | *-*-uclinux*)
		gdb_osabi=GDB_OSABI_LINUX ;;
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
