bb903df05b
This patch adds support for fast tracepoints for aarch64-linux. With this implementation, a tracepoint can only be placed in a +/- 128MB range of the jump pad. This is due to the unconditional branch instruction being limited to a (26 bit << 2) offset from the current PC. Three target operations are implemented: - target_install_fast_tracepoint_jump_pad Building the jump pad the biggest change of this patch. We need to add functions to emit all instructions needed to save and restore the current state when the tracepoint is hit. As well as implementing a lock and creating a collecting_t object identifying the current thread. Steps performed by the jump pad: * Save the current state on the stack. * Push a collecting_t object on the stack. We read the special tpidr_el0 system register to get the thread ID. * Spin-lock on the shared memory location of all tracing threads. We write the address of our collecting_t object there once we have the lock. * Call gdb_collect. * Release the lock. * Restore the state. * Execute the replaced instruction which will have been relocated. * Jump back to the program. - target_get_thread_area As implemented in ps_get_thread_area, target_get_thread_area uses ptrace to fetch the NT_ARM_TLS register. At the architecture level, NT_ARM_TLS represents the tpidr_el0 system register. So this ptrace call (if lwpid is the current thread): ~~~ ptrace (PTRACE_GETREGSET, lwpid, NT_ARM_TLS, &iovec); ~~~ Is equivalent to the following instruction: ~~~ msr x0, tpidr_el0 ~~~ This instruction is used when creating the collecting_t object that GDBserver can read to know if a given thread is currently tracing. So target_get_thread_area must get the same thread IDs as what the jump pad writes into its collecting_t object. - target_get_min_fast_tracepoint_insn_len This just returns 4. gdb/gdbserver/ChangeLog: * Makefile.in (linux-aarch64-ipa.o, aarch64-ipa.o): New rules. * configure.srv (aarch64*-*-linux*): Add linux-aarch64-ipa.o and aarch64-ipa.o. * linux-aarch64-ipa.c: New file. * linux-aarch64-low.c: Include arch/aarch64-insn.h, inttypes.h and endian.h. (aarch64_get_thread_area): New target method. (extract_signed_bitfield): New helper function. (aarch64_decode_ldr_literal): New function. (enum aarch64_opcodes): New enum. (struct aarch64_register): New struct. (struct aarch64_operand): New struct. (x0): New static global. (x1): Likewise. (x2): Likewise. (x3): Likewise. (x4): Likewise. (w2): Likewise. (ip0): Likewise. (sp): Likewise. (xzr): Likewise. (aarch64_register): New helper function. (register_operand): Likewise. (immediate_operand): Likewise. (struct aarch64_memory_operand): New struct. (offset_memory_operand): New helper function. (preindex_memory_operand): Likewise. (enum aarch64_system_control_registers): New enum. (ENCODE): New macro. (emit_insn): New helper function. (emit_b): New function. (emit_bcond): Likewise. (emit_cb): Likewise. (emit_tb): Likewise. (emit_blr): Likewise. (emit_stp): Likewise. (emit_ldp_q_offset): Likewise. (emit_stp_q_offset): Likewise. (emit_load_store): Likewise. (emit_ldr): Likewise. (emit_ldrsw): Likewise. (emit_str): Likewise. (emit_ldaxr): Likewise. (emit_stxr): Likewise. (emit_stlr): Likewise. (emit_data_processing_reg): Likewise. (emit_data_processing): Likewise. (emit_add): Likewise. (emit_sub): Likewise. (emit_mov): Likewise. (emit_movk): Likewise. (emit_mov_addr): Likewise. (emit_mrs): Likewise. (emit_msr): Likewise. (emit_sevl): Likewise. (emit_wfe): Likewise. (append_insns): Likewise. (can_encode_int32_in): New helper function. (aarch64_relocate_instruction): New function. (aarch64_install_fast_tracepoint_jump_pad): Likewise. (aarch64_get_min_fast_tracepoint_insn_len): Likewise. (struct linux_target_ops): Install aarch64_get_thread_area, aarch64_install_fast_tracepoint_jump_pad and aarch64_get_min_fast_tracepoint_insn_len.
369 lines
15 KiB
Text
369 lines
15 KiB
Text
# 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-avx512.o i386-mpx.o i386-mmx.o"
|
|
srv_i386_linux_regobj="i386-linux.o i386-avx-linux.o i386-avx512-linux.o i386-mpx-linux.o i386-mmx-linux.o"
|
|
srv_amd64_regobj="amd64.o amd64-avx.o amd64-avx512.o amd64-mpx.o x32.o x32-avx.o x32-avx512.o"
|
|
srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx512-linux.o amd64-mpx-linux.o x32-linux.o x32-avx-linux.o x32-avx512-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 i386/32bit-avx512.xml i386/32bit-mpx.xml"
|
|
srv_i386_64bit_xmlfiles="i386/64bit-core.xml i386/64bit-sse.xml i386/64bit-avx.xml i386/64bit-avx512.xml i386/x32-core.xml i386/64bit-mpx.xml"
|
|
srv_i386_xmlfiles="i386/i386.xml i386/i386-avx.xml i386/i386-avx512.xml i386/i386-mpx.xml i386/i386-mmx.xml $srv_i386_32bit_xmlfiles"
|
|
srv_amd64_xmlfiles="i386/amd64.xml i386/amd64-avx.xml i386/amd64-avx512.xml i386/x32.xml i386/x32-avx.xml i386/x32-avx512.xml i386/amd64-mpx.xml $srv_i386_64bit_xmlfiles"
|
|
srv_i386_linux_xmlfiles="i386/i386-linux.xml i386/i386-avx-linux.xml i386/i386-avx512-linux.xml i386/i386-mmx-linux.xml i386/32bit-linux.xml i386/i386-mpx-linux.xml $srv_i386_32bit_xmlfiles"
|
|
srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd64-avx512-linux.xml i386/64bit-linux.xml i386/amd64-mpx-linux.xml i386/x32-linux.xml i386/x32-avx-linux.xml i386/x32-avx512-linux.xml $srv_i386_64bit_xmlfiles"
|
|
|
|
|
|
# Linux object files. This is so we don't have to repeat
|
|
# these files over and over again.
|
|
srv_linux_obj="linux-low.o linux-osdata.o linux-procfs.o linux-ptrace.o linux-waitpid.o linux-personality.o linux-namespaces.o"
|
|
|
|
# Input is taken from the "${target}" variable.
|
|
|
|
case "${target}" in
|
|
aarch64*-*-linux*)
|
|
srv_regobj="aarch64.o"
|
|
srv_regobj="${srv_regobj} arm-with-neon.o"
|
|
srv_tgtobj="linux-aarch64-low.o aarch64-linux-hw-point.o"
|
|
srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
|
|
srv_tgtobj="$srv_tgtobj aarch64-linux.o"
|
|
srv_tgtobj="$srv_tgtobj aarch64-insn.o"
|
|
srv_tgtobj="${srv_tgtobj} $srv_linux_obj"
|
|
srv_xmlfiles="aarch64.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} aarch64-core.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} aarch64-fpu.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} arm-core.xml arm-vfpv3.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} arm-with-neon.xml"
|
|
srv_linux_regsets=yes
|
|
srv_linux_thread_db=yes
|
|
ipa_obj="linux-aarch64-ipa.o aarch64-ipa.o"
|
|
;;
|
|
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="$srv_linux_obj linux-arm-low.o"
|
|
srv_tgtobj="$srv_tgtobj linux-aarch32-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="$srv_linux_obj linux-bfin-low.o"
|
|
srv_linux_usrregs=yes
|
|
srv_linux_thread_db=yes
|
|
;;
|
|
crisv32-*-linux*) srv_regobj=reg-crisv32.o
|
|
srv_tgtobj="$srv_linux_obj linux-crisv32-low.o"
|
|
srv_linux_regsets=yes
|
|
srv_linux_thread_db=yes
|
|
;;
|
|
cris-*-linux*) srv_regobj=reg-cris.o
|
|
srv_tgtobj="$srv_linux_obj linux-cris-low.o"
|
|
srv_linux_usrregs=yes
|
|
srv_linux_thread_db=yes
|
|
;;
|
|
i[34567]86-*-cygwin*) srv_regobj="$srv_i386_regobj"
|
|
srv_tgtobj="x86-low.o x86-dregs.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="$srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
|
|
srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
|
|
srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
|
|
srv_linux_usrregs=yes
|
|
srv_linux_regsets=yes
|
|
srv_linux_thread_db=yes
|
|
srv_linux_btrace=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_xmlfiles="i386/i386.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} i386/32bit-core.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} i386/32bit-sse.xml"
|
|
srv_lynxos=yes
|
|
;;
|
|
i[34567]86-*-mingw32ce*)
|
|
srv_regobj="$srv_i386_regobj"
|
|
srv_tgtobj="x86-low.o x86-dregs.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="x86-low.o x86-dregs.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="$srv_linux_obj linux-ia64-low.o"
|
|
srv_linux_usrregs=yes
|
|
;;
|
|
m32r*-*-linux*) srv_regobj=reg-m32r.o
|
|
srv_tgtobj="$srv_linux_obj 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="$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} 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-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="$srv_linux_obj linux-ppc-low.o ppc-linux.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_xmlfiles="rs6000/powerpc-32.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
|
|
srv_lynxos=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} 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_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} 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} 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_linux_usrregs=yes
|
|
srv_linux_regsets=yes
|
|
srv_linux_thread_db=yes
|
|
;;
|
|
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
|
|
;;
|
|
spu*-*-*) srv_regobj=reg-spu.o
|
|
srv_tgtobj="spu-low.o"
|
|
;;
|
|
tic6x-*-uclinux) srv_regobj="tic6x-c64xp-linux.o"
|
|
srv_regobj="${srv_regobj} tic6x-c64x-linux.o"
|
|
srv_regobj="${srv_regobj} tic6x-c62x-linux.o"
|
|
srv_xmlfiles="tic6x-c64xp-linux.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} tic6x-c64x-linux.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} tic6x-c62x-linux.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} tic6x-core.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} tic6x-gp.xml"
|
|
srv_xmlfiles="${srv_xmlfiles} tic6x-c6xp.xml"
|
|
srv_tgtobj="$srv_linux_obj linux-tic6x-low.o"
|
|
srv_linux_regsets=yes
|
|
srv_linux_usrregs=yes
|
|
srv_linux_thread_db=yes
|
|
;;
|
|
x86_64-*-linux*) srv_regobj="$srv_amd64_linux_regobj $srv_i386_linux_regobj"
|
|
srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
|
|
srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
|
|
srv_tgtobj="${srv_tgtobj} x86-linux-dregs.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
|
|
srv_linux_btrace=yes
|
|
ipa_obj="${ipa_amd64_linux_regobj} linux-amd64-ipa.o"
|
|
;;
|
|
x86_64-*-mingw*) srv_regobj="$srv_amd64_regobj"
|
|
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
|
|
srv_xmlfiles="$srv_i386_xmlfiles $srv_amd64_xmlfiles"
|
|
srv_mingw=yes
|
|
;;
|
|
x86_64-*-cygwin*) srv_regobj="$srv_amd64_regobj"
|
|
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
|
|
srv_xmlfiles="$srv_i386_xmlfiles"
|
|
;;
|
|
|
|
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
|
|
;;
|
|
tilegx-*-linux*) srv_regobj=reg-tilegx.o
|
|
srv_regobj="${srv_regobj} reg-tilegx32.o"
|
|
srv_tgtobj="$srv_linux_obj linux-tile-low.o"
|
|
srv_linux_regsets=yes
|
|
srv_linux_thread_db=yes
|
|
;;
|
|
*) echo "Error: target not supported by gdbserver."
|
|
exit 1
|
|
;;
|
|
esac
|