# Mappings from configuration triplets to gdbserver build options.
# This is invoked from the autoconf-generated configure script, to
# produce the appropriate Makefile substitutions.

# This file sets the following shell variables:
#   srv_regobj		The register protocol appropriate for this target.
#   srv_tgtobj		Any other target-specific modules appropriate
#			for this target.
#   srv_hostio_err	The object implementing the hostio_last_error
#			target method.
#   srv_xmlfiles	All XML files which should be available for
#			gdbserver in this configuration.
#
# In addition, on GNU/Linux the following shell variables will be set:
#   srv_linux_regsets	Set to "yes" if ptrace(PTRACE_GETREGS) and friends
#			may be available on this platform;  unset otherwise.
#			They will only be used if <sys/ptrace.h> defines
#			PTRACE_GETREGS.
#   srv_linux_usrregs	Set to "yes" if we can get at registers via
#			PTRACE_PEEKUSR / PTRACE_POKEUSR.

# Default hostio_last_error implementation
srv_hostio_err_objs="hostio-errno.o"

# Input is taken from the "${target}" variable.

case "${target}" in
  arm*-*-linux*)	srv_regobj="reg-arm.o arm-with-iwmmxt.o"
			srv_tgtobj="linux-low.o linux-arm-low.o"
			srv_xmlfiles="arm-with-iwmmxt.xml"
			srv_xmlfiles="${srv_xmlfiles} arm-core.xml"
			srv_xmlfiles="${srv_xmlfiles} xscale-iwmmxt.xml"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  arm*-*-mingw32ce*)	srv_regobj=reg-arm.o
			srv_tgtobj="win32-low.o win32-arm-low.o"
			srv_tgtobj="${srv_tgtobj} wincecompat.o"
			# hostio_last_error implementation is in win32-low.c
			srv_hostio_err_objs=""
			srv_mingw=yes
			srv_mingwce=yes
			;;
  crisv32-*-linux*)	srv_regobj=reg-crisv32.o
			srv_tgtobj="linux-low.o linux-crisv32-low.o"
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  cris-*-linux*)	srv_regobj=reg-cris.o
			srv_tgtobj="linux-low.o linux-cris-low.o"
			srv_linux_usrregs=yes
			srv_linux_thread_db=yes
			;;
  i[34567]86-*-cygwin*)	srv_regobj=reg-i386.o
			srv_tgtobj="win32-low.o win32-i386-low.o"
			;;
  i[34567]86-*-linux*)	srv_regobj=reg-i386-linux.o
			srv_tgtobj="linux-low.o linux-i386-low.o i387-fp.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  i[34567]86-*-mingw*)	srv_regobj=reg-i386.o
			srv_tgtobj="win32-low.o win32-i386-low.o"
			srv_mingw=yes
			;;
  ia64-*-linux*)	srv_regobj=reg-ia64.o
			srv_tgtobj="linux-low.o linux-ia64-low.o"
			srv_linux_usrregs=yes
			;;
  m32r*-*-linux*)	srv_regobj=reg-m32r.o
			srv_tgtobj="linux-low.o linux-m32r-low.o"
			srv_linux_usrregs=yes
 			srv_linux_thread_db=yes
			;;
  m68*-*-linux*)	srv_regobj=reg-m68k.o
			srv_tgtobj="linux-low.o linux-m68k-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  m68*-*-uclinux*)	srv_regobj=reg-m68k.o
			srv_tgtobj="linux-low.o linux-m68k-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  mips*64*-*-linux*)	srv_regobj=mips64-linux.o
			srv_tgtobj="linux-low.o linux-mips-low.o"
			srv_xmlfiles="mips64-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-cpu.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-cp0.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-fpu.xml"
			srv_linux_regsets=yes
			srv_linux_usrregs=yes
			srv_linux_thread_db=yes
			;;
  mips*-*-linux*)	srv_regobj=mips-linux.o
			srv_tgtobj="linux-low.o linux-mips-low.o"
			srv_xmlfiles="mips-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} mips-cpu.xml"
			srv_xmlfiles="${srv_xmlfiles} mips-cp0.xml"
			srv_xmlfiles="${srv_xmlfiles} mips-fpu.xml"
			srv_linux_regsets=yes
			srv_linux_usrregs=yes
			srv_linux_thread_db=yes
			;;
  powerpc64-*-linux*)	srv_regobj="reg-ppc.o powerpc-32.o powerpc-e500.o"
			srv_regobj="${srv_regobj} reg-ppc64.o powerpc-64.o"
			srv_tgtobj="linux-low.o linux-ppc-low.o"
			srv_xmlfiles="rs6000/powerpc-32.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  powerpc-*-linux*)	srv_regobj="reg-ppc.o powerpc-32.o powerpc-e500.o"
			srv_tgtobj="linux-low.o linux-ppc-low.o"
			srv_xmlfiles="rs6000/powerpc-32.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  s390-*-linux*)	srv_regobj=reg-s390.o
			srv_tgtobj="linux-low.o linux-s390-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  s390x-*-linux*)	srv_regobj="reg-s390.o reg-s390x.o"
			srv_tgtobj="linux-low.o linux-s390-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  sh*-*-linux*)		srv_regobj=reg-sh.o
			srv_tgtobj="linux-low.o linux-sh-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  spu*-*-*)		srv_regobj=reg-spu.o
			srv_tgtobj="spu-low.o"
			;;
  x86_64-*-linux*)	srv_regobj=reg-x86-64-linux.o
			srv_tgtobj="linux-low.o linux-x86-64-low.o i387-fp.o"
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  xscale*-*-linux*)	srv_regobj=reg-arm.o
			srv_tgtobj="linux-low.o linux-arm-low.o"
			srv_linux_usrregs=yes
			srv_linux_thread_db=yes
			;;
  xtensa*-*-linux*)	srv_regobj=reg-xtensa.o
			srv_tgtobj="linux-low.o linux-xtensa-low.o"
			srv_linux_regsets=yes
			;;
  *)			echo "Error: target not supported by gdbserver."
			exit 1
			;;
esac