# Mapping of configurations into GDB host definitions.  This is
# invoked from the autoconf generated configure script.

# This file sets the following shell variables:
#  gdb_host_cpu		generic name of host's CPU
#  gdb_host		name of GDB host definition to use

# Map host cpu into the config cpu subdirectory name.
# The default is $host_cpu.

case "${host_cpu}" in

alpha*)			gdb_host_cpu=alpha ;;
# OBSOLETE c[12])		gdb_host_cpu=convex ;;
hppa*)			gdb_host_cpu=pa ;;
i[3456]86*)		gdb_host_cpu=i386 ;;
m68*)			gdb_host_cpu=m68k ;;
m88*)			gdb_host_cpu=m88k ;;
# OBSOLETE np1)			gdb_host_cpu=gould ;;
# OBSOLETE pyramid)		gdb_host_cpu=pyr ;;
powerpc*)		gdb_host_cpu=powerpc ;;
sparc64)		gdb_host_cpu=sparc ;;
*)			gdb_host_cpu=$host_cpu ;;

esac

# map host info into gdb names.

case "${host}" in

a29k-*-*)		gdb_host=ultra3 ;;

alpha*-*-osf1*)		gdb_host=alpha-osf1 ;;
alpha*-*-osf2*)		gdb_host=alpha-osf2 ;;
alpha*-*-osf[3456789]*)	gdb_host=alpha-osf3 ;;
alpha*-*-linux*)	gdb_host=alpha-linux ;;

arm-*-*)		gdb_host=arm ;;

# OBSOLETE c[12]-*-*)		gdb_host=convex ;;

hppa*-*-bsd*)		gdb_host=hppabsd ;;
hppa*-*-hiux*)		gdb_host=hppahpux ;;
hppa*-*-hpux10.20)	gdb_host=hpux1020 ;;
hppa2.0w-*-hpux11*)	gdb_host=hpux11w ;;
hppa*-*-hpux11*)	gdb_host=hpux11 ;;
hppa*-*-hpux*)		gdb_host=hppahpux ;;
hppa*-*-osf*)		gdb_host=hppaosf ;;

i[3456]86-ncr-*)	gdb_host=ncr3000 ;;
i[3456]86-sequent-bsd*)	gdb_host=symmetry ;;  # dynix
i[3456]86-sequent-sysv4*) gdb_host=ptx4 ;;
i[3456]86-sequent-sysv*) gdb_host=ptx ;;
i[3456]86-*-aix*)	gdb_host=i386aix ;;
i[3456]86-*-bsd*)	gdb_host=i386bsd ;;
i[3456]86-*-dgux*)	gdb_host=i386dgux ;;
i[3456]86-*-freebsd*)	gdb_host=fbsd ;;
i[3456]86-*-netbsd*)	gdb_host=nbsd ;;
i[3456]86-*-go32*)	gdb_host=go32 ;;
i[3456]86-*-msdosdjgpp*) gdb_host=go32 ;;
i[3456]86-*-linux*)	gdb_host=linux ;;
i[3456]86-*-lynxos*)	gdb_host=i386lynx ;;
i[3456]86-*-mach3*)	gdb_host=i386m3 ;;
i[3456]86-*-mach*)	gdb_host=i386mach ;;
i[3456]86-*-gnu*)	gdb_host=i386gnu ;;
i[3456]86-*-osf1mk*)	gdb_host=i386mk ;;
i[3456]86-*-sco3.2v5*)	gdb_host=i386sco5 ;;
i[3456]86-*-sco3.2v4*)	gdb_host=i386sco4 ;;
i[3456]86-*-sco*)	gdb_host=i386sco ;;
i[3456]86-*-solaris*)	gdb_host=i386sol2 ;;
i[3456]86-*-sunos*)	gdb_host=sun386 ;;
i[3456]86-*-sysv3.2*)	gdb_host=i386v32 ;;
i[3456]86-*-sysv32*)	gdb_host=i386v32 ;;
i[3456]86-*-sysv4.2*)	gdb_host=i386v42mp ;;
i[3456]86-*-sysv4*)	gdb_host=i386v4 ;;
i[3456]86-*-sysv5*)	gdb_host=i386v42mp ;;
i[3456]86-*-unixware2*)	gdb_host=i386v42mp ;;
i[3456]86-*-unixware*)	gdb_host=i386v4 ;;
i[3456]86-*-sysv*)	gdb_host=i386v ;;
i[3456]86-*-isc*)	gdb_host=i386v32 ;;
i[3456]86-*-cygwin*)	gdb_host=cygwin ;;
m680[01]0-sun-sunos3*)	gdb_host=sun2os3 ;;
m680[01]0-sun-sunos4*)	gdb_host=sun2os4 ;;
m68030-sony-*)		gdb_host=news1000 ;;

# OBSOLETE m68*-altos-*)	gdb_host=altos ;;
m68*-apollo*-sysv*)	gdb_host=apollo68v ;;
m68*-apollo*-bsd*)	gdb_host=apollo68b ;;
m68*-att-*)		gdb_host=3b1 ;;
m68*-bull*-sysv*)	gdb_host=dpx2 ;;
m68*-hp-bsd*)		gdb_host=hp300bsd ;;
m68*-hp-hpux*)		gdb_host=hp300hpux ;;
m68*-isi-*)		gdb_host=isi ;;
m68*-*-linux*)		gdb_host=linux ;;
m68*-*-lynxos*)		gdb_host=m68klynx ;;
m68*-*-netbsd*)		gdb_host=nbsd ;;
m68*-*-sysv4*)		gdb_host=m68kv4 ;;
m68*-motorola-*)	gdb_host=delta68 ;;
m68*-sony-*)		gdb_host=news ;;
m68*-sun-sunos3*)	gdb_host=sun3os3 ;;
m68*-sun-sunos4*)	gdb_host=sun3os4 ;;
m68*-sun-*)		gdb_host=sun3os4 ;;

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

mips-dec-mach3*)	gdb_host=mipsm3 ;;
mips-dec-*)		gdb_host=decstation ;;
mips-little-*)		gdb_host=littlemips ;;
mips-sgi-irix3*)	gdb_host=irix3 ;;
mips-sgi-irix4*)	gdb_host=irix4 ;;
mips-sgi-irix5*)	gdb_host=irix5 ;;
# Close enough for now.
mips-sgi-irix6*)	gdb_host=irix5 ;;
mips-sony-*)		gdb_host=news-mips ;;
mips-*-mach3*)		gdb_host=mipsm3 ;;
mips-*-sysv4*)		gdb_host=mipsv4 ;;
mips-*-sysv*)		gdb_host=riscos ;;
mips-*-riscos*)		gdb_host=riscos ;;

none-*-*)		gdb_host=none ;;

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

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

powerpc-*-aix*)		gdb_host=aix ;;
powerpcle-*-cygwin*)	gdb_host=cygwin ;;
powerpcle-*-solaris*)	gdb_host=solaris ;;
powerpc-*-linux*)	gdb_host=linux ;;

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

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

romp-*-*)		gdb_host=rtbsd ;;

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

sparc-*-linux*)		gdb_host=linux ;;
sparc-*-lynxos*)	gdb_host=sparclynx ;;
sparc-*-netbsd*)	gdb_host=nbsd ;;
sparc-*-solaris2*)	gdb_host=sun4sol2 ;;
sparc-*-sunos4*)	gdb_host=sun4os4 ;;
sparc-*-sunos5*)	gdb_host=sun4sol2 ;;
sparc-*-*)		gdb_host=sun4os4 ;;
sparc64-*-*)		gdb_host=sun4sol2 ;;

strongarm-*-*)		gdb_host=arm ;;

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

vax-*-bsd*)		gdb_host=vaxbsd ;;
vax-*-ultrix2*)		gdb_host=vaxult2 ;;
vax-*-ultrix*)		gdb_host=vaxult ;;

esac
