Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

# Mappings from configuration triplets to gdbserver build options.
# This is invoked from the autoconf-generated configure script, to
# produce the appropriate Makefile substitutions.
# It is also sourced by the top level configure script, to determine
# whether gdbserver is supported on a given host.

# 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.
#   UNSUPPORTED         Set to 1 if the host is unsupported.
#
# 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"

ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-isa205-ppr-dscr-vsx32l-ipa.o powerpc-isa207-vsx32l-ipa.o powerpc-isa207-htm-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o powerpc-isa205-ppr-dscr-vsx64l-ipa.o powerpc-isa207-vsx64l-ipa.o powerpc-isa207-htm-vsx64l-ipa.o"

# Linux object files.  This is so we don't have to repeat
# these files over and over again.
srv_linux_obj="linux-low.o nat/linux-osdata.o nat/linux-procfs.o nat/linux-ptrace.o nat/linux-waitpid.o nat/linux-personality.o nat/linux-namespaces.o fork-child.o nat/fork-inferior.o"

# Input is taken from the "${host}" and "${target}" variables.

# GDBserver can only debug native programs.
if test "${target}" = "${host}"; then
    gdbserver_host=${host}
else
    gdbserver_host=
fi

case "${gdbserver_host}" in
  aarch64*-*-linux*)	srv_tgtobj="linux-aarch64-low.o"
			srv_tgtobj="$srv_tgtobj nat/aarch64-linux-hw-point.o"
			srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
			srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
			srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
			srv_tgtobj="${srv_tgtobj} arch/arm.o"
			srv_tgtobj="$srv_tgtobj nat/aarch64-linux.o"
			srv_tgtobj="$srv_tgtobj arch/aarch64-insn.o"
			srv_tgtobj="$srv_tgtobj arch/aarch64.o"
			srv_tgtobj="$srv_tgtobj linux-aarch64-tdesc.o"
			srv_tgtobj="$srv_tgtobj nat/aarch64-sve-linux-ptrace.o"
			srv_tgtobj="${srv_tgtobj} $srv_linux_obj"
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			ipa_obj="linux-aarch64-ipa.o"
			ipa_obj="${ipa_obj} linux-aarch64-tdesc-ipa.o"
			ipa_obj="${ipa_obj} arch/aarch64-ipa.o"
			;;
  arm*-*-linux*)	srv_tgtobj="$srv_linux_obj linux-arm-low.o"
			srv_tgtobj="$srv_tgtobj linux-arm-tdesc.o"
			srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
			srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
			srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
			srv_tgtobj="${srv_tgtobj} arch/arm.o"
			srv_tgtobj="${srv_tgtobj} arch/arm-linux.o"
			srv_tgtobj="${srv_tgtobj} arch/arm-get-next-pcs.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  i[34567]86-*-cygwin*)	srv_regobj=""
			srv_tgtobj="x86-low.o nat/x86-dregs.o win32-low.o"
			srv_tgtobj="${srv_tgtobj} win32-i386-low.o"
			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
			srv_tgtobj="${srv_tgtobj} arch/i386.o"
			;;
  i[34567]86-*-linux*)	srv_tgtobj="${srv_tgtobj} arch/i386.o"
			srv_tgtobj="${srv_tgtobj} $srv_linux_obj"
			srv_tgtobj="${srv_tgtobj} linux-x86-low.o x86-low.o"
			srv_tgtobj="${srv_tgtobj} nat/x86-dregs.o i387-fp.o"
			srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
			srv_tgtobj="${srv_tgtobj} nat/linux-btrace.o"
			srv_tgtobj="${srv_tgtobj} nat/x86-linux.o"
			srv_tgtobj="${srv_tgtobj} nat/x86-linux-dregs.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			srv_linux_btrace=yes
			ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o"
			ipa_obj="${ipa_obj} arch/i386-ipa.o"
			;;
  i[34567]86-*-mingw*)	srv_regobj=""
			srv_tgtobj="x86-low.o nat/x86-dregs.o win32-low.o"
			srv_tgtobj="${srv_tgtobj} win32-i386-low.o"
			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
			srv_tgtobj="${srv_tgtobj} arch/i386.o"
			srv_mingw=yes
			;;
  ia64-*-linux*)	srv_regobj=reg-ia64.o
			srv_tgtobj="$srv_linux_obj linux-ia64-low.o"
			srv_linux_usrregs=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="$srv_linux_obj 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="$srv_linux_obj linux-m68k-low.o"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  mips*-*-linux*)	srv_regobj="mips-linux.o"
			srv_regobj="${srv_regobj} mips-dsp-linux.o"
			srv_regobj="${srv_regobj} mips64-linux.o"
			srv_regobj="${srv_regobj} mips64-dsp-linux.o"
			srv_tgtobj="$srv_linux_obj linux-mips-low.o"
			srv_tgtobj="${srv_tgtobj} nat/mips-linux-watch.o"
			srv_xmlfiles="mips-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} mips-dsp-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} mips-dsp.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-dsp-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-cpu.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-cp0.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-fpu.xml"
			srv_xmlfiles="${srv_xmlfiles} mips64-dsp.xml"
			srv_linux_regsets=yes
			srv_linux_usrregs=yes
			srv_linux_thread_db=yes
			;;
  nios2*-*-linux*)	srv_regobj="nios2-linux.o"
			srv_tgtobj="$srv_linux_obj linux-nios2-low.o"
			srv_xmlfiles="nios2-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} nios2-cpu.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-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-isa205-ppr-dscr-vsx32l.o"
			srv_regobj="${srv_regobj} powerpc-isa207-vsx32l.o"
			srv_regobj="${srv_regobj} powerpc-isa207-htm-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-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_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx64l.o"
			srv_regobj="${srv_regobj} powerpc-isa207-vsx64l.o"
			srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx64l.o"
			srv_tgtobj="$srv_linux_obj linux-ppc-low.o"
			srv_tgtobj="${srv_tgtobj} nat/ppc-linux.o"
			srv_tgtobj="${srv_tgtobj} arch/ppc-linux-common.o"
			srv_xmlfiles="rs6000/powerpc-32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.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/powerpc-isa205-ppr-dscr-vsx32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx32l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-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/power-dscr.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-ppr.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-tar.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-ebb.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux-pmu.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-spr.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-core.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-fpu.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-altivec.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-vsx.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-ppr.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-dscr.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-tar.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-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/powerpc-isa205-ppr-dscr-vsx64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx64l.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml"
			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-htm-core.xml"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"
			;;
  riscv*-*-linux*)	srv_tgtobj="arch/riscv.o nat/riscv-linux-tdesc.o"
			srv_tgtobj="${srv_tgtobj} linux-riscv-low.o"
			srv_tgtobj="${srv_tgtobj} ${srv_linux_obj}"
			srv_linux_regsets=yes
			srv_linux_usrregs=yes
			srv_linux_thread_db=yes
			;;
  s390*-*-linux*)	srv_regobj="s390-linux32.o"
			srv_regobj="${srv_regobj} s390-linux32v1.o"
			srv_regobj="${srv_regobj} s390-linux32v2.o"
			srv_regobj="${srv_regobj} s390-linux64.o"
			srv_regobj="${srv_regobj} s390-linux64v1.o"
			srv_regobj="${srv_regobj} s390-linux64v2.o"
			srv_regobj="${srv_regobj} s390-te-linux64.o"
			srv_regobj="${srv_regobj} s390-vx-linux64.o"
			srv_regobj="${srv_regobj} s390-tevx-linux64.o"
			srv_regobj="${srv_regobj} s390-gs-linux64.o"
			srv_regobj="${srv_regobj} s390x-linux64.o"
			srv_regobj="${srv_regobj} s390x-linux64v1.o"
			srv_regobj="${srv_regobj} s390x-linux64v2.o"
			srv_regobj="${srv_regobj} s390x-te-linux64.o"
			srv_regobj="${srv_regobj} s390x-vx-linux64.o"
			srv_regobj="${srv_regobj} s390x-tevx-linux64.o"
			srv_regobj="${srv_regobj} s390x-gs-linux64.o"
			srv_tgtobj="$srv_linux_obj linux-s390-low.o"
			srv_xmlfiles="s390-linux32.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-linux32v1.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-linux32v2.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-linux64v1.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-linux64v2.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-te-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-vx-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-tevx-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-gs-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-linux64v1.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-linux64v2.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-te-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-vx-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-tevx-linux64.xml"
			srv_xmlfiles="${srv_xmlfiles} s390x-gs-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_xmlfiles="${srv_xmlfiles} s390-tdb.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-vx.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-gs.xml"
			srv_xmlfiles="${srv_xmlfiles} s390-gsbc.xml"
			srv_linux_usrregs=yes
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			ipa_obj="linux-s390-ipa.o"
			ipa_obj="${ipa_obj} s390-linux32-ipa.o"
			ipa_obj="${ipa_obj} s390-linux32v1-ipa.o"
			ipa_obj="${ipa_obj} s390-linux32v2-ipa.o"
			ipa_obj="${ipa_obj} s390-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390-linux64v1-ipa.o"
			ipa_obj="${ipa_obj} s390-linux64v2-ipa.o"
			ipa_obj="${ipa_obj} s390-vx-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390-te-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390-tevx-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390-gs-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390x-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390x-linux64v1-ipa.o"
			ipa_obj="${ipa_obj} s390x-linux64v2-ipa.o"
			ipa_obj="${ipa_obj} s390x-vx-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390x-te-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390x-tevx-linux64-ipa.o"
			ipa_obj="${ipa_obj} s390x-gs-linux64-ipa.o"
			;;
  sh*-*-linux*)		srv_regobj=reg-sh.o
			srv_tgtobj="$srv_linux_obj 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="$srv_linux_obj linux-sparc-low.o"
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  tic6x-*-uclinux)	if $development; then
			  srv_regobj="tic6x-c64xp-linux.o"
			  srv_regobj="${srv_regobj} tic6x-c64x-linux.o"
			  srv_regobj="${srv_regobj} tic6x-c62x-linux.o"
                        else
			  srv_regobj=""
                        fi
			srv_tgtobj="$srv_linux_obj linux-tic6x-low.o"
			srv_tgtobj="${srv_tgtobj} arch/tic6x.o"
			srv_linux_regsets=yes
			srv_linux_usrregs=yes
			srv_linux_thread_db=yes
			;;
  x86_64-*-linux*)	srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o"
			srv_tgtobj="${srv_tgtobj} nat/x86-dregs.o i387-fp.o"
			srv_tgtobj="${srv_tgtobj} arch/i386.o arch/amd64.o"
			srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
			srv_tgtobj="${srv_tgtobj} nat/linux-btrace.o"
			srv_tgtobj="${srv_tgtobj} nat/x86-linux.o"
			srv_tgtobj="${srv_tgtobj} nat/x86-linux-dregs.o"
			srv_tgtobj="${srv_tgtobj} nat/amd64-linux-siginfo.o"
			srv_linux_usrregs=yes # This is for i386 progs.
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			srv_linux_btrace=yes
			ipa_obj="linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
			ipa_obj="${ipa_obj} arch/amd64-ipa.o"
			;;
  x86_64-*-mingw*)	srv_regobj=""
			srv_tgtobj="x86-low.o nat/x86-dregs.o i387-fp.o"
			srv_tgtobj="${srv_tgtobj} win32-low.o win32-i386-low.o"
			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
			srv_tgtobj="${srv_tgtobj} arch/amd64.o arch/i386.o"
			srv_mingw=yes
			;;
  x86_64-*-cygwin*)	srv_regobj=""
			srv_tgtobj="x86-low.o nat/x86-dregs.o i387-fp.o"
			srv_tgtobj="${srv_tgtobj} win32-low.o win32-i386-low.o"
			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
			srv_tgtobj="${srv_tgtobj} arch/amd64.o arch/i386.o"
			;;
  x86_64-*-netbsd*)	srv_regobj=""
			srv_tgtobj="netbsd-low.o netbsd-amd64-low.o fork-child.o"
			srv_tgtobj="${srv_tgtobj} nat/fork-inferior.o"
			srv_tgtobj="${srv_tgtobj} nat/netbsd-nat.o"
			srv_tgtobj="${srv_tgtobj} arch/amd64.o"
			;;

  xtensa*-*-linux*)	srv_regobj=reg-xtensa.o
			srv_tgtobj="$srv_linux_obj linux-xtensa-low.o"
			srv_linux_regsets=yes
			srv_linux_thread_db=yes
			;;
  *)
			# Who are you?
			UNSUPPORTED=1
			;;
esac