# 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_cpu	generic name of CPU
#  gdb_target		name of GDB target definition to use

# This file may also modify configdirs.

# Map target cpu into the config cpu subdirectory name.
# The default is $target_cpu.

case "${target_cpu}" in

alpha*)			gdb_target_cpu=alpha ;;
arm*)			gdb_target_cpu=arm ;;
# OBSOLETE c[12])		gdb_target_cpu=convex ;;
hppa*)			gdb_target_cpu=pa ;;
i[3456]86*)		gdb_target_cpu=i386 ;;
m68*)			gdb_target_cpu=m68k ;;
m88*)			gdb_target_cpu=m88k ;;
mips*)			gdb_target_cpu=mips ;;
# OBSOLETE np1)			gdb_target_cpu=gould ;;
powerpc*)		gdb_target_cpu=powerpc ;;
# OBSOLETE pn)			gdb_target_cpu=gould ;;
# OBSOLETE pyramid)		gdb_target_cpu=pyr ;;
sparc*)			gdb_target_cpu=sparc ;;
thumb*)			gdb_target_cpu=arm ;;
strongarm*)		gdb_target_cpu=arm ;;
v850*)			gdb_target_cpu=v850 ;;
*)			gdb_target_cpu=$target_cpu ;;

esac

# map target info into gdb names.

case "${target}" in

a29k-*-aout*)		gdb_target=a29k ;;
a29k-*-coff*)		gdb_target=a29k ;;
a29k-*-elf*)		gdb_target=a29k ;;
a29k-*-ebmon*)		gdb_target=a29k ;;
a29k-*-kern*)		gdb_target=a29k-kern ;;
a29k-*-none*)		gdb_target=a29k ;;
a29k-*-sym1*)		gdb_target=ultra3 ;;
a29k-*-udi*)		gdb_target=a29k-udi ;;
a29k-*-vxworks*)        gdb_target=vx29k ;;

alpha*-*-osf*)		gdb_target=alpha-osf1 ;;
alpha*-*-linux*)	gdb_target=alpha-linux ;;

arc-*-*)		gdb_target=arc ;;

arm*-*-linux*)		gdb_target=linux ;;
arm*-*-* | thumb*-*-* | strongarm*-*-*)
			gdb_target=embed
                        configdirs="$configdirs rdi-share"
                        ;;
# OBSOLETE c1-*-*)		gdb_target=convex ;;
# OBSOLETE c2-*-*)		gdb_target=convex ;;

d10v-*-*)		gdb_target=d10v ;;
d30v-*-*)		gdb_target=d30v ;;

h8300-*-*)		gdb_target=h8300 ;;
h8500-*-*)		gdb_target=h8500 ;;


fr30-*-elf*)		gdb_target=fr30 ;;


hppa*-*-bsd*)		gdb_target=hppabsd ;;
hppa*-*-pro*)		gdb_target=hppapro ;;
hppa2.0w-*-hpux11*)	gdb_target=hppa64 ;;
hppa*-*-hpux*)		gdb_target=hppahpux ;;
hppa*-*-hiux*)		gdb_target=hppahpux ;;
hppa*-*-osf*)		gdb_target=hppaosf ;;

i[3456]86-sequent-bsd*)	gdb_target=symmetry ;;
i[3456]86-sequent-sysv4*) gdb_target=ptx4 ;;
i[3456]86-sequent-sysv*) gdb_target=ptx ;;
i[3456]86-ncr-*)	gdb_target=ncr3000 ;;
i[3456]86-*-aout*)	gdb_target=embed ;;
i[3456]86-*-coff*)	gdb_target=embed ;;
i[3456]86-*-elf*)	gdb_target=embed ;;
i[3456]86-*-aix*)	gdb_target=i386aix ;;
i[3456]86-*-bsd*)	gdb_target=i386bsd ;;
i[3456]86-*-freebsd*)	gdb_target=fbsd ;;
i[3456]86-*-netbsd*)	gdb_target=nbsd ;;
i[3456]86-*-os9k)	gdb_target=i386os9k ;;
i[3456]86-*-go32*)	gdb_target=i386aout ;;
i[3456]86-*-msdosdjgpp*) gdb_target=go32 ;;
i[3456]86-*-lynxos*)	gdb_target=i386lynx
		configdirs="${configdirs} gdbserver" ;;
i[3456]86-*-solaris*)	gdb_target=i386sol2 ;;
i[3456]86-*-sunos*)	gdb_target=sun386 ;;
i[3456]86-*-sysv4.2*)	gdb_target=i386v42mp ;;
i[3456]86-*-sysv4*)	gdb_target=i386v4 ;;
i[3456]86-*-sysv5*)	gdb_target=i386v42mp ;;
i[3456]86-*-unixware2*)	gdb_target=i386v42mp ;;
i[3456]86-*-unixware*)	gdb_target=i386v4 ;;
i[3456]86-*-sco3.2v4*)	gdb_target=i386sco4 ;;
i[3456]86-*-sco3.2v5*)	gdb_target=i386sco5 ;;
i[3456]86-*-sco*)	gdb_target=i386v ;;
i[3456]86-*-sysv*)	gdb_target=i386v ;;
i[3456]86-*-linux*)	gdb_target=linux
		configdirs="${configdirs} gdbserver" ;;
i[3456]86-pc-linux-gnu)	gdb_target=linux
		configdirs="${configdirs} gdbserver" ;;
i[3456]86-*-isc*)	gdb_target=i386v ;;
i[3456]86-*-mach3*)	gdb_target=i386m3 ;;
i[3456]86-*-gnu*)	gdb_target=i386gnu ;;
i[3456]86-*-netware*)	gdb_target=i386nw
		configdirs="${configdirs} nlm" ;;
i[3456]86-*-osf1mk*)	gdb_target=i386mk ;;
i[3456]86-*-cygwin*)	gdb_target=cygwin  ;;
i[3456]86-*-vxworks*)	gdb_target=vxworks ;;

i960-*-bout*)		gdb_target=vxworks960 ;;
i960-nindy-coff*)	gdb_target=nindy960 ;;
i960-*-coff*)		gdb_target=mon960 ;;
i960-nindy-elf*)	gdb_target=nindy960 ;;
i960-*-elf*)		gdb_target=mon960 ;;
i960-*-nindy*)		gdb_target=nindy960 ;;
i960-*-vxworks*)	gdb_target=vxworks960 ;;

m32r-*-elf*)		gdb_target=m32r ;;

m68000-*-sunos3*)	gdb_target=sun2os3 ;;
m68000-*-sunos4*)	gdb_target=sun2os4 ;;

m68*-apollo*-bsd*)	gdb_target=apollo68b ;;
m68*-bull-sysv*)	gdb_target=dpx2 ;;
m68*-hp-bsd*)		gdb_target=hp300bsd ;;
m68*-hp-hpux*)		gdb_target=hp300hpux ;;
# OBSOLETE m68*-altos-*)	gdb_target=altos ;;
m68*-att-*)		gdb_target=3b1 ;;
m68*-cisco*-*)		gdb_target=cisco ;;
m68*-ericsson-*)	gdb_target=es1800 ;;
m68*-isi-*)		gdb_target=isi ;;
m68*-motorola-*)	gdb_target=delta68 ;;
m68*-netx-*)		gdb_target=vxworks68 ;;
m68*-sony-*)		gdb_target=news ;;
m68*-tandem-*)		gdb_target=st2000 ;;
m68*-rom68k-*)          gdb_target=monitor ;;
m68*-*bug-*)            gdb_target=monitor ;;
m68*-monitor-*)         gdb_target=monitor ;;
m68*-est-*)		gdb_target=monitor ;;
m68*-*-aout*)		gdb_target=monitor ;;
m68*-*-coff*)		gdb_target=monitor ;;
m68*-*-elf*)		gdb_target=monitor ;;
m68*-*-linux*)		gdb_target=linux
		configdirs="${configdirs} gdbserver" ;;
m68*-*-lynxos*)		gdb_target=m68klynx
		configdirs="${configdirs} gdbserver" ;;
m68*-*-netbsd*)		gdb_target=nbsd ;;
m68*-*-os68k*)		gdb_target=os68k ;;
m68*-*-sunos3*)		gdb_target=sun3os3 ;;
m68*-*-sunos4*)		gdb_target=sun3os4 ;;
m68*-*-sysv4*)		gdb_target=m68kv4 ;;
m68*-*-vxworks*)	gdb_target=vxworks68 ;;

m88*-harris-cxux*)	gdb_target=cxux ;;
m88*-motorola-sysv4*)	gdb_target=delta88v4 ;;
m88*-motorola-*)	gdb_target=delta88 ;;
m88*-*-*)		gdb_target=m88k ;;

mcore*-*-*)		gdb_target=mcore ;;
mips64*-big-*)		gdb_target=bigmips64 ;;
mips*-big-*)		gdb_target=bigmips ;;
mips*-dec-mach3*)	gdb_target=mach3 ;;
mips*-dec-*)		gdb_target=decstation ;;
mips*-*-pe)		gdb_target=mips-pe ;;
mips64*el-*-ecoff*)	gdb_target=embedl64 ;;
mips64*-*-ecoff*)	gdb_target=embed64 ;;
mips64*vr4xxx*el-*-elf*)gdb_target=vr4xxxel ;;
mips64*vr4xxx*-*-elf*)	gdb_target=vr4xxx ;;
mips64*vr4300*el-*-elf*)	gdb_target=vr4300el ;;
mips64*vr4300*-*-elf*)	gdb_target=vr4300 ;;
mips64*vr4100*el-*-elf*)	gdb_target=vr4300el ;;
mips64*vr4100*-*-elf*)	gdb_target=vr4100 ;;
mips64*vr5000*el-*-elf*)	gdb_target=vr5000el ;;
mips64*vr5000*-*-elf*)	gdb_target=vr5000
		configdirs="${configdirs} gdbserver" ;;
mips*tx39*el*-elf*)	gdb_target=tx39l ;;
mips*tx39*-elf*)	gdb_target=tx39 ;;
mips64*el-*-elf*)	gdb_target=embedl64 ;;
mips64*-*-elf*)		gdb_target=embed64 ;;
mips*el-*-ecoff*)	gdb_target=embedl ;;
mips*-*-ecoff*)		gdb_target=embed ;;
mips*el-*-elf*)		gdb_target=embedl ;;
mips*-*-elf*)		gdb_target=embed ;;
mips*-little-*)		gdb_target=littlemips ;;
mips*-*-lnews*)		gdb_target=embedl ;;
mips*-sgi-irix5*)	gdb_target=irix5 ;;
mips*-sgi-irix6*)	gdb_target=irix5 ;;
mips*-sgi-*)		gdb_target=irix3 ;;
mips*-sony-*)		gdb_target=bigmips ;;
mips*-*-mach3*)		gdb_target=mipsm3 ;;
mips*-*-sysv4*)		gdb_target=mipsv4 ;;
mips*-*-sysv*)		gdb_target=bigmips ;;
mips*-*-riscos*)	gdb_target=bigmips ;;
mips*-*-vxworks*)       gdb_target=vxmips ;;

mn10200-*-*)		gdb_target=mn10200 ;;
mn10300-*-*)		gdb_target=mn10300 ;;

none-*-*)		gdb_target=none ;;

# OBSOLETE np1-*-*)		gdb_target=np1 ;;

ns32k-*-mach3*)		gdb_target=ns32km3 ;;
ns32k-*-netbsd*)	gdb_target=nbsd ;;
ns32k-utek-sysv*)	gdb_target=merlin ;;
ns32k-utek-*)		gdb_target=umax ;;

# OBSOLETE pn-*-*)			gdb_target=pn ;;

powerpc-*-macos*)	gdb_target=macos ;;
powerpc-*-netware*)	gdb_target=ppc-nw
			configdirs="${configdirs} nlm" ;;

powerpc-*-aix*)		gdb_target=aix ;;
powerpcle-*-cygwin*)	gdb_target=cygwin ;;
powerpcle-*-solaris*)	gdb_target=solaris ;;
powerpc-*-eabi* | powerpc-*-linux* | powerpc-*-sysv* | powerpc-*-elf*)
			if test -f ../sim/ppc/Makefile; then
			  gdb_target=ppc-sim
			else
			  gdb_target=ppc-eabi
			fi ;;
powerpcle-*-eabi* | powerpcle-*-sysv* | powerpcle-*-elf*)
			if test -f ../sim/ppc/Makefile; then
			  gdb_target=ppcle-sim
			else
			  gdb_target=ppcle-eabi
			fi ;;
powerpc-*-vxworks*)	gdb_target=vxworks ;;

# OBSOLETE pyramid-*-*)		gdb_target=pyramid ;;

rs6000-*-lynxos*)	gdb_target=rs6000lynx ;;
rs6000-*-aix4*)		gdb_target=aix4 ;;
rs6000-*-*)		gdb_target=rs6000 ;;

sh-*-*)			gdb_target=sh ;;

sparc-*-aout*)		gdb_target=sparc-em ;;
sparc-*-coff*)		gdb_target=sparc-em ;;
sparc-*-elf*)		gdb_target=sparc-em ;;
sparc-*-linux*)		gdb_target=linux ;;
sparc-*-lynxos*)	gdb_target=sparclynx
		configdirs="${configdirs} gdbserver" ;;
sparc-*-netbsd*)	gdb_target=nbsd ;;
sparc-*-solaris2*)	gdb_target=sun4sol2 ;;
sparc-*-sunos4*)	gdb_target=sun4os4 ;;
sparc-*-sunos5*)	gdb_target=sun4sol2 ;;
sparc-*-vxworks*)	gdb_target=vxsparc ;;
sparc-*-*)		gdb_target=sun4os4 ;;
sparclet-*-*)		gdb_target=sparclet;;
sparclite-*-*)		gdb_target=sparclite ;;
sparc86x-*-*)		gdb_target=sparclite ;;
# It's not clear what the right solution for "v8plus" systems is yet.
# For now, stick with sparc-sun-solaris2 since that's what config.guess
# should return.  Work is still needed to get gdb to print the 64 bit
# regs (some of which are usable in v8plus) so sp64sol.mt hasn't been
# deleted though presumably it should be eventually.
#sparc64-*-solaris2*)	gdb_target=sp64sol2 ;;
sparc64-*-*)		gdb_target=sp64 ;;

# OBSOLETE tahoe-*-*)		gdb_target=tahoe ;;

tic80-*-*)		gdb_target=tic80
			configdirs="${configdirs} gdbserver" ;;

vax-*-*)		gdb_target=vax ;;

fr30-*-*)		gdb_target=fr30
			;;

v850*-*-*)		gdb_target=v850
			case ${gdb_host} in
			cygwin*)
				CONFIG_OBS="${CONFIG_OBS} v850ice.o" ;;
			* ) ;;
			esac
			;;

w65-*-*)		gdb_target=w65 ;;

z8k-*-coff*)		gdb_target=z8k ;;

esac

