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

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 linux-tdep.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"
	gdb_sim=../sim/avr/libsim.a
	;;

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

moxie-*-elf)
	gdb_target_obs="moxie-tdep.o"
	gdb_sim=../sim/moxie/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-*-darwin* | x86_64-*-darwin*)
	# Target: Darwin/i386
	gdb_target_obs="amd64-tdep.o i386-tdep.o i387-tdep.o \
			i386-darwin-tdep.o solib.o solib-darwin.o"
	;;
i[34567]86-*-dicos*)
	# Target: DICOS/i386
	gdb_target_obs="i386-tdep.o i387-tdep.o \
			dicos-tdep.o i386-dicos-tdep.o \
			corelow.o solib.o solib-target.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 \
			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 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 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 \
			solib-target.o corelow.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 \
			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
	;;

lm32-*-*)		
	gdb_target_obs="lm32-tdep.o" 
	gdb_sim=../sim/lm32/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 glibc-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"
	;;

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 glibc-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 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"
	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
	;;
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"
	build_gdbserver=yes
	;;
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-*-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 \
			corelow.o solib.o solib-target.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 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 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-*-mingw*)
        # Target: MingW/amd64
	gdb_target_obs="amd64-tdep.o amd64-windows-tdep.o \
                        i386-tdep.o i386-cygwin-tdep.o i387-tdep.o \
                        solib-target.o windows-tdep.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 solib.o solib-svr4.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 ;;
*-*-dicos*)	gdb_osabi=GDB_OSABI_DICOS ;;
esac
