# 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.
#   ipa_obj		Any other target-specific modules appropriate
#			for this target's in-process agent.
#
# 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"

srv_i386_regobj="i386.o i386-avx.o i386-mmx.o"
srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-mmx-linux.o"
srv_amd64_regobj="amd64.o amd64-avx.o"
srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o"

ipa_i386_linux_regobj=i386-linux-ipa.o
ipa_amd64_linux_regobj=amd64-linux-ipa.o

srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.xml"
srv_i386_64bit_xmlfiles="i386/64bit-core.xml i386/64bit-sse.xml i386/64bit-avx.xml"
srv_i386_xmlfiles="i386/i386.xml i386/i386-avx.xml i386/i386-mmx.xml $srv_i386_32bit_xmlfiles"
srv_amd64_xmlfiles="i386/amd64.xml i386/amd64-avx.xml $srv_i386_64bit_xmlfiles"
srv_i386_linux_xmlfiles="i386/i386-linux.xml i386/i386-avx-linux.xml i386/i386-mmx-linux.xml i386/32bit-linux.xml $srv_i386_32bit_xmlfiles"
srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/64bit-linux.xml $srv_i386_64bit_xmlfiles"

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

case "${target}" in
  arm*-*-linux*)	srv_regobj="reg-arm.o arm-with-iwmmxt.o"
			srv_regobj="${srv_regobj} arm-with-vfpv2.o"
			srv_regobj="${srv_regobj} arm-with-vfpv3.o"
			srv_regobj="${srv_regobj} arm-with-neon.o"
			srv_tgtobj="linux-low.o linux-arm-low.o"
			srv_xmlfiles="arm-with-iwmmxt.xml"
			srv_xmlfiles="${srv_xmlfiles} arm-with-vfpv2.xml"
			srv_xmlfiles="${srv_xmlfiles} arm-with-vfpv3.xml"
			srv_xmlfiles="${srv_xmlfiles} arm-with-neon.xml"
			srv_xmlfiles="${srv_xmlfiles} arm-core.xml"
			srv_xmlfiles="${srv_xmlfiles} xscale-iwmmxt.xml"
			srv_xmlfiles="${srv_xmlfiles} arm-vfpv2.xml"
			srv_xmlfiles="${srv_xmlfiles} arm-vfpv3.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
			;;
  bfin-*-*linux*)	srv_regobj=reg-bfin.o
			srv_tgtobj="linux-low.o linux-bfin-low.o"
			srv_linux_usrregs=yes
			srv_linux_thread_db=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="$srv_i386_regobj"
			srv_tgtobj="i386-low.o win32-low.o win32-i386-low.o"
			srv_xmlfiles="$srv_i386_xmlfiles"
			;;
  i[34567]86-*-linux*)	srv_regobj="$srv_i386_linux_regobj"
			srv_xmlfiles="$srv_i386_linux_xmlfiles"
			if test "$gdb_cv_i386_is_x86_64" = yes ; then
			    srv_regobj="$srv_regobj $srv_amd64_linux_regobj"
			    srv_xmlfiles="${srv_xmlfiles} $srv_amd64_linux_xmlfiles"
			fi
			srv_tgtobj="linux-low.o linux-x86-low.o i386-low.o i387-fp.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			ipa_obj="${ipa_i386_linux_regobj} linux-i386-ipa.o"
			;;
  i[34567]86-*-lynxos*)	srv_regobj="i386.o"
			srv_tgtobj="lynx-low.o lynx-i386-low.o"
			srv_lynxos=yes
			;;
  i[34567]86-*-mingw32ce*)
			srv_regobj="$srv_i386_regobj"
			srv_tgtobj="i386-low.o win32-low.o win32-i386-low.o"
			srv_tgtobj="${srv_tgtobj} wincecompat.o"
			srv_xmlfiles="$srv_i386_xmlfiles"
			# hostio_last_error implementation is in win32-low.c
			srv_hostio_err_objs=""
			srv_mingw=yes
			srv_mingwce=yes
			;;
  i[34567]86-*-mingw*)	srv_regobj="$srv_i386_regobj"
			srv_tgtobj="i386-low.o win32-low.o win32-i386-low.o"
			srv_xmlfiles="$srv_i386_xmlfiles"
			srv_mingw=yes
			;;
  i[34567]86-*-nto*)	srv_regobj="$srv_i386_regobj"
			srv_tgtobj="nto-low.o nto-x86-low.o"
			srv_xmlfiles="$srv_i386_xmlfiles"
			srv_qnx="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*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
                          srv_regobj=reg-cf.o
                        else
                          srv_regobj=reg-m68k.o
                        fi
			srv_tgtobj="linux-low.o linux-m68k-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  m68*-*-uclinux*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
                          srv_regobj=reg-cf.o
                        else
                          srv_regobj=reg-m68k.o
                        fi
			srv_tgtobj="linux-low.o linux-m68k-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  mips*-*-linux*)	srv_regobj="mips-linux.o mips64-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_xmlfiles="${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
			;;
  powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"
			srv_regobj="${srv_regobj} powerpc-altivec32l.o"
			srv_regobj="${srv_regobj} powerpc-cell32l.o"
			srv_regobj="${srv_regobj} powerpc-vsx32l.o"
			srv_regobj="${srv_regobj} powerpc-isa205-32l.o"
			srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o"
			srv_regobj="${srv_regobj} powerpc-isa205-vsx32l.o"
			srv_regobj="${srv_regobj} powerpc-e500l.o"
			srv_regobj="${srv_regobj} powerpc-64l.o"
			srv_regobj="${srv_regobj} powerpc-altivec64l.o"
			srv_regobj="${srv_regobj} powerpc-cell64l.o"
			srv_regobj="${srv_regobj} powerpc-vsx64l.o"
			srv_regobj="${srv_regobj} powerpc-isa205-64l.o"
			srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o"
			srv_regobj="${srv_regobj} powerpc-isa205-vsx64l.o"
			srv_tgtobj="linux-low.o linux-ppc-low.o"
			srv_xmlfiles="rs6000/powerpc-32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-cell32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-vsx.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu-isa205.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-cell64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  powerpc-*-lynxos*)	srv_regobj="powerpc-32.o"
			srv_tgtobj="lynx-low.o lynx-ppc-low.o"
			srv_lynxos=yes
			;;
  s390*-*-linux*)	srv_regobj="s390-linux32.o"
			srv_regobj="${srv_regobj} s390-linux64.o"
			srv_regobj="${srv_regobj} s390x-linux64.o"
			srv_tgtobj="linux-low.o linux-s390-low.o"
			srv_xmlfiles="s390-linux32.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-core32.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-core64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-core64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-acr.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-fpr.xml"
			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
			;;
  sparc*-*-linux*)	srv_regobj=reg-sparc64.o
			srv_tgtobj="linux-low.o linux-sparc-low.o"
			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="$srv_amd64_linux_regobj $srv_i386_linux_regobj"
			srv_tgtobj="linux-low.o linux-x86-low.o i386-low.o i387-fp.o"
			srv_xmlfiles="$srv_i386_linux_xmlfiles $srv_amd64_linux_xmlfiles"
			srv_linux_usrregs=yes # This is for i386 progs.
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			ipa_obj="${ipa_amd64_linux_regobj} linux-amd64-ipa.o"
			;;
  x86_64-*-mingw*)	srv_regobj="$srv_amd64_regobj"
			srv_tgtobj="i386-low.o i387-fp.o win32-low.o win32-i386-low.o"
			srv_xmlfiles="$srv_i386_xmlfiles $srv_amd64_xmlfiles"
			srv_mingw=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