mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 05:13:35 +08:00
fb8f3fc0c3
This commit adds the ability for bare metal RISC-V target to generate core files from within GDB. The intended use case is that a user will connect to a remote bare metal target, debug up to some error condition, then generate a core file in the normal way using: (gdb) generate-core-file This core file can then be used to revisit the state of the remote target without having to reconnect to the remote target. The core file creation code is split between two new files. In elf-none-tdep.c is code for any architecture with the none ABI (i.e. bare metal) when the BFD library is built with ELF support. In riscv-none-tdep.c are the RISC-V specific parts. This is where the regset and regcache_map_entry structures are defined that control how registers are laid out in the core file. As this file could (in theory at least) be used for a non-ELF bare metal RISC-V target, the calls into elf-none-tdep.c are guarded with '#ifdef HAVE_ELF'. Currently for RISC-V only the x-regs and f-regs (if present) are written out. In future commits I plan to add support for writing out the RISC-V CSRs. The core dump format is based around generating an ELF containing sections for the writable regions of memory that a user could be using. Which regions are dumped rely on GDB's existing common core dumping code, GDB will attempt to figure out the stack and heap as well as copying out writable data sections as identified by the original ELF. Register information is added to the core dump using notes, just as it is for Linux of FreeBSD core dumps. The note types used consist of the 3 basic types you would expect in a OS based core dump, NT_PRPSINFO, NT_PRSTATUS, NT_FPREGSET. The layout of these notes differs slightly (due to field sizes) between RV32 and RV64. Below I describe the data layout for each note. In all cases, all padding fields should be set to zero. Note NT_PRPSINFO is optional. Its data layout is: struct prpsinfo32_t /* For RV32. */ { uint8_t padding[32]; char fname[16]; char psargs[80]; } struct prpsinfo64_t /* For RV64. */ { uint8_t padding[40]; char fname[16]; char psargs[80]; } Field 'fname' - null terminated string consisting of the basename of (up to the fist 15 characters of) the executable. Any additional space should be set to zero. If there's no executable name then this field can be set to all zero. Field 'psargs' - a null terminated string up to 80 characters in length. Any additional space should be filled with zero. This field contains the full executable path and any arguments passed to the executable. If there's nothing sensible to write in this field then fill it with zero. Note NT_PRSTATUS is required, its data layout is: struct prstatus32_t /* For RV32. */ { uint8_t padding_1[12]; uint16_t sig; uint8_t padding_2[10]; uint32_t thread_id; uint8_t padding_3[44]; uint32_t x_regs[32]; uint8_t padding_4[4]; } struct prstatus64_t /* For RV64. */ { uint8_t padding_1[12]; uint16_t sig; uint8_t padding_2[18]; uint32_t thread_id; uint8_t padding_3[76]; uint64_t x_regs[32]; uint8_t padding_4[4]; } Field 'sig' - the signal that stopped this thread. It's implementation defined what this field actually means. Within GDB this will be the signal number that the remote target reports as the stop reason for this thread. Field 'thread_is' - the thread id for this thread. It's implementation defined what this field actually means. Within GDB this will be thread thread-id that is assigned to each remote thread. Field 'x_regs' - at index 0 we store the program counter, and at indices 1 to 31 we store x-registers 1 to 31. x-register 0 is not stored, its value is always zero anyway. Note NT_FPREGSET is optional, its data layout is: fpregset32_t /* For targets with 'F' extension. */ { uint32_t f_regs[32]; uint32_t fcsr; } fpregset64_t /* For targets with 'D' extension . */ { uint64_t f_regs[32]; uint32_t fcsr; } Field 'f_regs' - stores f-registers 0 to 31. Field 'fcsr' - stores the fcsr CSR register, and is always 4-bytes. The rules for ordering the notes is the same as for Linux. The NT_PRSTATUS note must come before any other notes about additional register sets. And for multi-threaded targets all registers for a single thread should be grouped together. This is because only NT_PRSTATUS includes a thread-id, all additional register notes after a NT_PRSTATUS are assumed to belong to the same thread until a different NT_PRSTATUS is seen. gdb/ChangeLog: * Makefile.in (ALL_TARGET_OBS): Add riscv-none-tdep.o. (ALLDEPFILES): Add riscv-none-tdep.c. * configure: Regenerate. * configure.ac (CONFIG_OBS): Add elf-none-tdep.o when BFD has ELF support. * configure.tgt (riscv*-*-*): Include riscv-none-tdep.c. * elf-none-tdep.c: New file. * elf-none-tdep.h: New file. * riscv-none-tdep.c: New file.
798 lines
20 KiB
Plaintext
798 lines
20 KiB
Plaintext
# Mappings from configurations to GDB target definitions. This is
|
|
# invoked from the autoconf generated configure script.
|
|
|
|
# This file sets the following shell variables:
|
|
# gdb_target_obs target-specific object files to use
|
|
# gdb_sim simulator library for target
|
|
# gdb_osabi default OS ABI to use with target
|
|
# gdb_have_gcore set to "true"/"false" if this target can run gcore
|
|
|
|
# NOTE: Every file added to a gdb_target_obs variable for any target here
|
|
# must also be added to either ALL_TARGET_OBS or ALL_64_TARGET_OBS
|
|
# in Makefile.in!
|
|
|
|
case $targ in
|
|
*-*-irix* | \
|
|
*-*-solaris2.[01] | *-*-solaris2.[2-9]* | *-*-solaris2.10* | \
|
|
alpha*-*-osf* | \
|
|
alpha*-*-freebsd* | \
|
|
alpha*-*-kfreebsd*-gnu | \
|
|
d10v-*-* | \
|
|
hppa*-*-hiux* | \
|
|
i[34567]86-ncr-* | \
|
|
m68*-cisco*-* | \
|
|
m68*-tandem-* | \
|
|
m68*-*-os68k* | \
|
|
mips*-*-pe | \
|
|
rs6000-*-lynxos* | \
|
|
sh*-*-pe | \
|
|
hppa*-*-hpux* | \
|
|
ia64-*-hpux* | \
|
|
*-*-vxworks* | \
|
|
mt-*-* | \
|
|
null)
|
|
echo "*** Configuration $targ is obsolete." >&2
|
|
echo "*** Support has been REMOVED." >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
x86_tobjs="x86-tdep.o"
|
|
i386_tobjs="i386-tdep.o arch/i386.o i387-tdep.o ${x86_tobjs}"
|
|
amd64_tobjs="ravenscar-thread.o amd64-ravenscar-thread.o \
|
|
amd64-tdep.o arch/amd64.o ${x86_tobjs}"
|
|
|
|
# Here are three sections to get a list of target specific object
|
|
# files according to target triplet $TARG.
|
|
|
|
# 1. Get the objects per cpu in $TARG.
|
|
|
|
case "${targ}" in
|
|
aarch64*-*-*)
|
|
cpu_obs="aarch32-tdep.o aarch64-tdep.o arch/aarch32.o \
|
|
arch/aarch64-insn.o arch/aarch64.o ravenscar-thread.o \
|
|
aarch64-ravenscar-thread.o";;
|
|
|
|
alpha*-*-*)
|
|
# Target: Alpha
|
|
cpu_obs="alpha-tdep.o"
|
|
;;
|
|
|
|
arc*-*-*)
|
|
# Target: Unidentified ARC target
|
|
cpu_obs="arc-tdep.o arch/arc.o"
|
|
;;
|
|
|
|
arm*-*-*)
|
|
cpu_obs="aarch32-tdep.o arch/aarch32.o arch/arm.o \
|
|
arch/arm-get-next-pcs.o arm-tdep.o";;
|
|
|
|
hppa*-*-*)
|
|
# Target: HP PA-RISC
|
|
cpu_obs="hppa-tdep.o"
|
|
;;
|
|
|
|
i[34567]86-*-*)
|
|
cpu_obs="${i386_tobjs}"
|
|
if test "x$enable_64_bit_bfd" = "xyes"; then
|
|
cpu_obs="${amd64_tobjs} ${cpu_obs}"
|
|
fi
|
|
;;
|
|
|
|
ia64*-*-*)
|
|
# Target: Intel IA-64
|
|
cpu_obs="ia64-tdep.o"
|
|
;;
|
|
|
|
riscv*-*-*)
|
|
cpu_obs="riscv-tdep.o riscv-none-tdep.o arch/riscv.o \
|
|
ravenscar-thread.o riscv-ravenscar-thread.o";;
|
|
|
|
x86_64-*-*)
|
|
cpu_obs="${i386_tobjs} ${amd64_tobjs}";;
|
|
|
|
xtensa*)
|
|
# Target: Tensilica Xtensa processors
|
|
cpu_obs="xtensa-tdep.o xtensa-config.o solib-svr4.o"
|
|
;;
|
|
|
|
esac
|
|
|
|
# 2. Get the objects per os in $TARG.
|
|
|
|
case "${targ}" in
|
|
*-*-freebsd* | *-*-kfreebsd*-gnu)
|
|
os_obs="fbsd-tdep.o solib-svr4.o";;
|
|
*-*-netbsd* | *-*-knetbsd*-gnu)
|
|
os_obs="nbsd-tdep.o solib-svr4.o";;
|
|
*-*-openbsd*)
|
|
os_obs="obsd-tdep.o solib-svr4.o";;
|
|
esac
|
|
|
|
# 3. Get the rest of objects.
|
|
|
|
case "${targ}" in
|
|
aarch64*-*-elf | aarch64*-*-rtems*)
|
|
# Target: AArch64 embedded system
|
|
gdb_target_obs="aarch64-newlib-tdep.o"
|
|
;;
|
|
|
|
aarch64*-*-freebsd*)
|
|
# Target: FreeBSD/aarch64
|
|
gdb_target_obs="aarch64-fbsd-tdep.o"
|
|
;;
|
|
|
|
aarch64*-*-linux*)
|
|
# Target: AArch64 linux
|
|
gdb_target_obs="aarch64-linux-tdep.o arch/aarch64.o\
|
|
arch/arm.o arch/arm-linux.o arch/arm-get-next-pcs.o \
|
|
arm-tdep.o arm-linux-tdep.o \
|
|
glibc-tdep.o linux-tdep.o solib-svr4.o \
|
|
symfile-mem.o linux-record.o"
|
|
;;
|
|
|
|
alpha*-*-linux*)
|
|
# Target: Little-endian Alpha running Linux
|
|
gdb_target_obs="alpha-mdebug-tdep.o alpha-linux-tdep.o \
|
|
linux-tdep.o solib-svr4.o"
|
|
;;
|
|
alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
|
|
# Target: NetBSD/alpha
|
|
gdb_target_obs="alpha-mdebug-tdep.o alpha-bsd-tdep.o \
|
|
alpha-netbsd-tdep.o"
|
|
;;
|
|
alpha*-*-openbsd*)
|
|
# Target: OpenBSD/alpha
|
|
gdb_target_obs="alpha-mdebug-tdep.o alpha-bsd-tdep.o \
|
|
alpha-netbsd-tdep.o alpha-obsd-tdep.o nbsd-tdep.o"
|
|
;;
|
|
|
|
am33_2.0*-*-linux*)
|
|
# Target: Matsushita mn10300 (AM33) running Linux
|
|
gdb_target_obs="mn10300-tdep.o mn10300-linux-tdep.o linux-tdep.o \
|
|
solib-svr4.o"
|
|
;;
|
|
|
|
arc*-*-elf32)
|
|
# Target: baremetal ARC elf32 (newlib) target
|
|
gdb_target_obs="arc-newlib-tdep.o"
|
|
;;
|
|
|
|
arc*-*-linux*)
|
|
# Target: ARC machine running Linux
|
|
gdb_target_obs="arc-linux-tdep.o linux-tdep.o solib-svr4.o"
|
|
;;
|
|
|
|
arm*-wince-pe | arm*-*-mingw32ce*)
|
|
# Target: ARM based machine running Windows CE (win32)
|
|
gdb_target_obs="arm-wince-tdep.o windows-tdep.o"
|
|
;;
|
|
arm*-*-linux*)
|
|
# Target: ARM based machine running GNU/Linux
|
|
gdb_target_obs="arch/arm-linux.o arm-linux-tdep.o glibc-tdep.o \
|
|
solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
|
|
;;
|
|
arm*-*-freebsd*)
|
|
# Target: FreeBSD/arm
|
|
gdb_target_obs="arm-fbsd-tdep.o"
|
|
;;
|
|
arm*-*-netbsd* | arm*-*-knetbsd*-gnu)
|
|
# Target: NetBSD/arm
|
|
gdb_target_obs="arm-netbsd-tdep.o"
|
|
;;
|
|
arm*-*-openbsd*)
|
|
# Target: OpenBSD/arm
|
|
gdb_target_obs="arm-bsd-tdep.o arm-obsd-tdep.o"
|
|
;;
|
|
arm*-*-*)
|
|
# Target: ARM embedded system
|
|
gdb_target_obs="arm-pikeos-tdep.o"
|
|
gdb_sim=../sim/arm/libsim.a
|
|
;;
|
|
|
|
avr-*-*)
|
|
# Target: AVR
|
|
gdb_target_obs="avr-tdep.o"
|
|
gdb_sim=../sim/avr/libsim.a
|
|
;;
|
|
|
|
bfin-*-*linux*)
|
|
# Target: Blackfin Linux
|
|
gdb_target_obs="bfin-tdep.o bfin-linux-tdep.o linux-tdep.o"
|
|
gdb_sim=../sim/bfin/libsim.a
|
|
;;
|
|
bfin-*-*)
|
|
# Target: Blackfin processor
|
|
gdb_target_obs="bfin-tdep.o"
|
|
gdb_sim=../sim/bfin/libsim.a
|
|
;;
|
|
|
|
bpf-*-*)
|
|
# Target: eBPF
|
|
gdb_target_obs="bpf-tdep.o"
|
|
gdb_sim=../sim/bpf/libsim.a
|
|
;;
|
|
|
|
cris*)
|
|
# Target: CRIS
|
|
gdb_target_obs="cris-tdep.o cris-linux-tdep.o linux-tdep.o solib-svr4.o"
|
|
;;
|
|
|
|
csky*-*-linux*)
|
|
# Target: CSKY running GNU/Linux
|
|
gdb_target_obs="csky-tdep.o csky-linux-tdep.o glibc-tdep.o \
|
|
linux-tdep.o solib-svr4.o"
|
|
;;
|
|
|
|
csky*-*-*)
|
|
# Target: CSKY bare metal
|
|
gdb_target_obs="csky-tdep.o"
|
|
;;
|
|
|
|
frv-*-*)
|
|
# Target: Fujitsu FRV processor
|
|
gdb_target_obs="frv-tdep.o frv-linux-tdep.o linux-tdep.o solib-frv.o"
|
|
gdb_sim=../sim/frv/libsim.a
|
|
;;
|
|
|
|
moxie-*-elf | moxie-*-moxiebox | moxie-*-rtems*)
|
|
gdb_target_obs="moxie-tdep.o"
|
|
gdb_sim=../sim/moxie/libsim.a
|
|
;;
|
|
|
|
h8300-*-*)
|
|
# Target: H8300 processor
|
|
gdb_target_obs="h8300-tdep.o"
|
|
gdb_sim=../sim/h8300/libsim.a
|
|
;;
|
|
|
|
hppa*-*-linux*)
|
|
# Target: HP PA-RISC running Linux
|
|
gdb_target_obs="hppa-linux-tdep.o glibc-tdep.o \
|
|
linux-tdep.o solib-svr4.o symfile-mem.o"
|
|
;;
|
|
hppa*-*-netbsd*)
|
|
# Target: NetBSD/hppa
|
|
gdb_target_obs="hppa-bsd-tdep.o hppa-netbsd-tdep.o solib-svr4.o"
|
|
;;
|
|
hppa*-*-openbsd*)
|
|
# Target: OpenBSD/hppa
|
|
gdb_target_obs="hppa-bsd-tdep.o hppa-obsd-tdep.o solib-svr4.o"
|
|
;;
|
|
|
|
i[34567]86-*-darwin*)
|
|
# Target: Darwin/i386
|
|
gdb_target_obs="i386-darwin-tdep.o solib-darwin.o"
|
|
if test "x$enable_64_bit_bfd" = "xyes"; then
|
|
# Target: GNU/Linux x86-64
|
|
gdb_target_obs="amd64-darwin-tdep.o ${gdb_target_obs}"
|
|
fi
|
|
;;
|
|
i[34567]86-*-dicos*)
|
|
# Target: DICOS/i386
|
|
gdb_target_obs="dicos-tdep.o i386-dicos-tdep.o"
|
|
;;
|
|
i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
|
|
# Target: FreeBSD/i386
|
|
gdb_target_obs="i386-bsd-tdep.o i386-fbsd-tdep.o "
|
|
;;
|
|
i[34567]86-*-netbsd* | i[34567]86-*-knetbsd*-gnu)
|
|
# Target: NetBSD/i386
|
|
gdb_target_obs="i386-bsd-tdep.o i386-netbsd-tdep.o "
|
|
;;
|
|
i[34567]86-*-openbsd*)
|
|
# Target: OpenBSD/i386
|
|
gdb_target_obs="i386-bsd-tdep.o i386-obsd-tdep.o bsd-uthread.o"
|
|
;;
|
|
i[34567]86-*-nto*)
|
|
# Target: Intel 386 running qnx6.
|
|
gdb_target_obs="solib-svr4.o \
|
|
i386-nto-tdep.o nto-tdep.o"
|
|
;;
|
|
i[34567]86-*-solaris2* | x86_64-*-solaris2*)
|
|
# Target: Solaris x86_64
|
|
gdb_target_obs="${i386_tobjs} ${amd64_tobjs} \
|
|
amd64-sol2-tdep.o i386-sol2-tdep.o sol2-tdep.o \
|
|
solib-svr4.o"
|
|
;;
|
|
i[34567]86-*-linux*)
|
|
# Target: Intel 386 running GNU/Linux
|
|
gdb_target_obs="i386-linux-tdep.o \
|
|
glibc-tdep.o \
|
|
solib-svr4.o symfile-mem.o \
|
|
linux-tdep.o linux-record.o"
|
|
if test "x$enable_64_bit_bfd" = "xyes"; then
|
|
# Target: GNU/Linux x86-64
|
|
gdb_target_obs="amd64-linux-tdep.o ${gdb_target_obs}"
|
|
fi
|
|
;;
|
|
i[34567]86-*-gnu*)
|
|
# Target: Intel 386 running the GNU Hurd
|
|
gdb_target_obs="i386-gnu-tdep.o solib-svr4.o"
|
|
;;
|
|
i[34567]86-*-cygwin*)
|
|
# Target: Intel 386 running win32
|
|
gdb_target_obs="i386-windows-tdep.o windows-tdep.o"
|
|
;;
|
|
i[34567]86-*-mingw32*)
|
|
# Target: Intel 386 running win32
|
|
gdb_target_obs="i386-windows-tdep.o windows-tdep.o"
|
|
;;
|
|
i[34567]86-*-go32* | i[34567]86-*-msdosdjgpp*)
|
|
# Target: i386 running DJGPP/go32.
|
|
gdb_target_obs="i386-go32-tdep.o"
|
|
;;
|
|
|
|
ia64-*-linux*)
|
|
# Target: Intel IA-64 running GNU/Linux
|
|
gdb_target_obs="ia64-linux-tdep.o linux-tdep.o \
|
|
solib-svr4.o symfile-mem.o"
|
|
;;
|
|
ia64-*-*vms*)
|
|
# Target: Intel IA-64 running OpenVMS
|
|
gdb_target_obs="ia64-vms-tdep.o"
|
|
;;
|
|
|
|
iq2000-*-*)
|
|
gdb_target_obs="iq2000-tdep.o"
|
|
gdb_sim=../sim/iq2000/libsim.a
|
|
;;
|
|
|
|
lm32-*-*)
|
|
gdb_target_obs="lm32-tdep.o"
|
|
gdb_sim=../sim/lm32/libsim.a
|
|
;;
|
|
|
|
m32c-*-*)
|
|
# Target: Renesas M32C family
|
|
gdb_target_obs="m32c-tdep.o"
|
|
# There may also be a SID / CGEN simulator for this,
|
|
# but we do have DJ Delorie's mini-sim.
|
|
gdb_sim=../sim/m32c/libsim.a
|
|
;;
|
|
|
|
m32r*-*-linux*)
|
|
# Target: Renesas M32R running GNU/Linux
|
|
gdb_target_obs="m32r-tdep.o m32r-linux-tdep.o \
|
|
glibc-tdep.o solib-svr4.o symfile-mem.o \
|
|
linux-tdep.o"
|
|
gdb_sim=../sim/m32r/libsim.a
|
|
;;
|
|
m32r*-*-*)
|
|
# Target: Renesas m32r processor
|
|
gdb_target_obs="m32r-tdep.o"
|
|
gdb_sim=../sim/m32r/libsim.a
|
|
;;
|
|
|
|
m68hc11*-*-*|m6811*-*-*)
|
|
# Target: Motorola 68HC11 processor
|
|
gdb_target_obs="m68hc11-tdep.o"
|
|
gdb_sim=../sim/m68hc11/libsim.a
|
|
;;
|
|
|
|
m68*-*-aout* | m68*-*-coff* | m68*-*-elf* | m68*-*-rtems* | m68*-*-uclinux* | \
|
|
fido-*-elf*)
|
|
# Target: Motorola m68k embedded
|
|
gdb_target_obs="m68k-tdep.o"
|
|
;;
|
|
m68*-*-linux*)
|
|
# Target: Motorola m68k with a.out and ELF
|
|
gdb_target_obs="m68k-tdep.o m68k-linux-tdep.o solib-svr4.o \
|
|
linux-tdep.o glibc-tdep.o symfile-mem.o"
|
|
;;
|
|
m68*-*-netbsd* | m68*-*-knetbsd*-gnu)
|
|
# Target: NetBSD/m68k
|
|
gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o"
|
|
;;
|
|
m68*-*-openbsd*)
|
|
# Target: OpenBSD/m68k
|
|
gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o"
|
|
;;
|
|
|
|
mep-*-*)
|
|
# Target: Toshiba Media Processor (MEP)
|
|
gdb_target_obs="mep-tdep.o"
|
|
# No sim needed. Target uses SID.
|
|
;;
|
|
|
|
microblaze*-linux-*|microblaze*-*-linux*)
|
|
# Target: Xilinx MicroBlaze running Linux
|
|
gdb_target_obs="microblaze-tdep.o microblaze-linux-tdep.o solib-svr4.o \
|
|
symfile-mem.o linux-tdep.o"
|
|
gdb_sim=../sim/microblaze/libsim.a
|
|
;;
|
|
microblaze*-*-*)
|
|
# Target: Xilinx MicroBlaze running standalone
|
|
gdb_target_obs="microblaze-tdep.o"
|
|
gdb_sim=../sim/microblaze/libsim.a
|
|
;;
|
|
|
|
mips*-*-linux*)
|
|
# Target: Linux/MIPS
|
|
gdb_target_obs="mips-tdep.o mips-linux-tdep.o glibc-tdep.o \
|
|
solib-svr4.o symfile-mem.o linux-tdep.o"
|
|
gdb_sim=../sim/mips/libsim.a
|
|
;;
|
|
mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
|
|
# Target: MIPS running NetBSD
|
|
gdb_target_obs="mips-tdep.o mips-netbsd-tdep.o"
|
|
gdb_sim=../sim/mips/libsim.a
|
|
;;
|
|
mips*-*-freebsd*)
|
|
# Target: MIPS running FreeBSD
|
|
gdb_target_obs="mips-tdep.o mips-fbsd-tdep.o"
|
|
gdb_sim=../sim/mips/libsim.a
|
|
;;
|
|
mips64*-*-openbsd*)
|
|
# Target: OpenBSD/mips64
|
|
gdb_target_obs="mips-tdep.o mips64-obsd-tdep.o"
|
|
;;
|
|
mips*-sde*-elf*)
|
|
# Target: MIPS SDE
|
|
gdb_target_obs="mips-tdep.o mips-sde-tdep.o"
|
|
gdb_sim=../sim/mips/libsim.a
|
|
;;
|
|
mips*-*-elf)
|
|
# Target: MIPS ELF
|
|
gdb_target_obs="mips-tdep.o"
|
|
gdb_sim=../sim/mips/libsim.a
|
|
;;
|
|
mips*-*-*)
|
|
# Target: MIPS
|
|
gdb_target_obs="mips-tdep.o"
|
|
gdb_sim=../sim/mips/libsim.a
|
|
;;
|
|
|
|
mn10300-*-*)
|
|
# Target: Matsushita mn10300
|
|
gdb_target_obs="mn10300-tdep.o"
|
|
gdb_sim=../sim/mn10300/libsim.a
|
|
;;
|
|
|
|
msp430-*-elf*)
|
|
gdb_target_obs="msp430-tdep.o"
|
|
gdb_sim=../sim/msp430/libsim.a
|
|
;;
|
|
|
|
nds32*-*-elf)
|
|
# Target: AndesTech NDS32 core
|
|
gdb_target_obs="nds32-tdep.o"
|
|
;;
|
|
|
|
nios2*-*-linux*)
|
|
# Target: Altera Nios II running Linux
|
|
gdb_target_obs="nios2-tdep.o nios2-linux-tdep.o solib-svr4.o \
|
|
symfile-mem.o glibc-tdep.o linux-tdep.o"
|
|
;;
|
|
|
|
nios2*-*-*)
|
|
# Target: Altera Nios II bare-metal
|
|
gdb_target_obs="nios2-tdep.o"
|
|
;;
|
|
|
|
or1k*-*-linux*)
|
|
# Target: OpenCores OpenRISC 1000 32-bit running Linux
|
|
gdb_target_obs="or1k-tdep.o or1k-linux-tdep.o solib-svr4.o \
|
|
symfile-mem.o glibc-tdep.o linux-tdep.o"
|
|
gdb_sim=../sim/or1k/libsim.a
|
|
;;
|
|
|
|
or1k-*-* | or1knd-*-*)
|
|
# Target: OpenCores OpenRISC 1000 32-bit implementation bare metal
|
|
gdb_target_obs="or1k-tdep.o"
|
|
gdb_sim=../sim/or1k/libsim.a
|
|
;;
|
|
|
|
powerpc*-*-freebsd*)
|
|
# Target: FreeBSD/powerpc
|
|
gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc64-tdep.o \
|
|
ppc-fbsd-tdep.o \
|
|
ravenscar-thread.o ppc-ravenscar-thread.o"
|
|
;;
|
|
|
|
powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
|
|
# Target: NetBSD/powerpc
|
|
gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc-netbsd-tdep.o \
|
|
ravenscar-thread.o ppc-ravenscar-thread.o"
|
|
gdb_sim=../sim/ppc/libsim.a
|
|
;;
|
|
powerpc-*-openbsd*)
|
|
# Target: OpenBSD/powerpc
|
|
gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc-obsd-tdep.o \
|
|
ravenscar-thread.o ppc-ravenscar-thread.o"
|
|
;;
|
|
powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
|
|
# Target: PowerPC running AIX
|
|
gdb_target_obs="rs6000-tdep.o rs6000-aix-tdep.o xcoffread.o \
|
|
ppc-sysv-tdep.o solib-aix.o \
|
|
ravenscar-thread.o ppc-ravenscar-thread.o"
|
|
;;
|
|
powerpc*-*-linux*)
|
|
# Target: PowerPC running Linux
|
|
gdb_target_obs="rs6000-tdep.o ppc-linux-tdep.o ppc-sysv-tdep.o \
|
|
ppc64-tdep.o solib-svr4.o \
|
|
glibc-tdep.o symfile-mem.o linux-tdep.o \
|
|
ravenscar-thread.o ppc-ravenscar-thread.o \
|
|
linux-record.o \
|
|
arch/ppc-linux-common.o"
|
|
gdb_sim=../sim/ppc/libsim.a
|
|
;;
|
|
powerpc-*-lynx*178)
|
|
# Target: PowerPC running Lynx178.
|
|
gdb_target_obs="rs6000-tdep.o rs6000-lynx178-tdep.o \
|
|
xcoffread.o ppc-sysv-tdep.o \
|
|
ravenscar-thread.o ppc-ravenscar-thread.o"
|
|
;;
|
|
powerpc*-*-*)
|
|
# Target: PowerPC running eabi
|
|
gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o solib-svr4.o \
|
|
ravenscar-thread.o ppc-ravenscar-thread.o"
|
|
gdb_sim=../sim/ppc/libsim.a
|
|
;;
|
|
|
|
s390*-*-linux*)
|
|
# Target: S390 running Linux
|
|
gdb_target_obs="s390-linux-tdep.o s390-tdep.o solib-svr4.o \
|
|
linux-tdep.o linux-record.o symfile-mem.o"
|
|
;;
|
|
|
|
riscv*-*-freebsd*)
|
|
# Target: FreeBSD/riscv
|
|
gdb_target_obs="riscv-fbsd-tdep.o"
|
|
;;
|
|
|
|
riscv*-*-linux*)
|
|
# Target: Linux/RISC-V
|
|
gdb_target_obs="riscv-linux-tdep.o glibc-tdep.o \
|
|
linux-tdep.o solib-svr4.o symfile-mem.o linux-record.o"
|
|
;;
|
|
|
|
riscv*-*-*)
|
|
# Target: RISC-V architecture
|
|
gdb_target_obs=""
|
|
gdb_sim=../sim/riscv/libsim.a
|
|
;;
|
|
|
|
rl78-*-elf)
|
|
# Target: Renesas rl78
|
|
gdb_target_obs="rl78-tdep.o"
|
|
gdb_sim=../sim/rl78/libsim.a
|
|
;;
|
|
|
|
rx-*-elf)
|
|
# Target: Renesas RX
|
|
gdb_target_obs="rx-tdep.o"
|
|
gdb_sim=../sim/rx/libsim.a
|
|
;;
|
|
|
|
score-*-*)
|
|
# Target: S+core embedded system
|
|
gdb_target_obs="score-tdep.o"
|
|
;;
|
|
|
|
sh*-*-linux*)
|
|
# Target: GNU/Linux Super-H
|
|
gdb_target_obs="sh-tdep.o sh-linux-tdep.o \
|
|
solib-svr4.o symfile-mem.o \
|
|
glibc-tdep.o linux-tdep.o"
|
|
gdb_sim=../sim/sh/libsim.a
|
|
;;
|
|
sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
|
|
# Target: NetBSD/sh
|
|
gdb_target_obs="sh-tdep.o sh-netbsd-tdep.o"
|
|
gdb_sim=../sim/sh/libsim.a
|
|
;;
|
|
sh*-*-openbsd*)
|
|
# Target: OpenBSD/sh
|
|
gdb_target_obs="sh-tdep.o sh-netbsd-tdep.o"
|
|
;;
|
|
sh*)
|
|
# Target: Embedded Renesas Super-H processor
|
|
gdb_target_obs="sh-tdep.o"
|
|
gdb_sim=../sim/sh/libsim.a
|
|
;;
|
|
|
|
sparc-*-linux*)
|
|
# Target: GNU/Linux SPARC
|
|
gdb_target_obs="sparc-tdep.o \
|
|
sparc-linux-tdep.o solib-svr4.o symfile-mem.o \
|
|
linux-tdep.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
if test "x$enable_64_bit_bfd" = "xyes"; then
|
|
# Target: GNU/Linux UltraSPARC
|
|
gdb_target_obs="sparc64-tdep.o \
|
|
sparc64-linux-tdep.o ${gdb_target_obs}"
|
|
fi
|
|
;;
|
|
sparc64-*-linux*)
|
|
# Target: GNU/Linux UltraSPARC
|
|
gdb_target_obs="sparc64-tdep.o \
|
|
sparc64-linux-tdep.o sparc-tdep.o \
|
|
sparc-linux-tdep.o solib-svr4.o linux-tdep.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
sparc*-*-freebsd* | sparc*-*-kfreebsd*-gnu)
|
|
# Target: FreeBSD/sparc64
|
|
gdb_target_obs="sparc-tdep.o sparc64-tdep.o sparc64-fbsd-tdep.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
sparc-*-netbsd* | sparc-*-knetbsd*-gnu)
|
|
# Target: NetBSD/sparc
|
|
gdb_target_obs="sparc-tdep.o sparc-netbsd-tdep.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu)
|
|
# Target: NetBSD/sparc64
|
|
gdb_target_obs="sparc64-tdep.o sparc64-netbsd-tdep.o sparc-tdep.o \
|
|
sparc-netbsd-tdep.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
sparc-*-openbsd*)
|
|
# Target: OpenBSD/sparc
|
|
gdb_target_obs="sparc-tdep.o sparc-netbsd-tdep.o sparc-obsd-tdep.o \
|
|
nbsd-tdep.o bsd-uthread.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
sparc64-*-openbsd*)
|
|
# Target: OpenBSD/sparc64
|
|
gdb_target_obs="sparc64-tdep.o sparc64-netbsd-tdep.o sparc64-obsd-tdep.o \
|
|
sparc-tdep.o sparc-netbsd-tdep.o sparc-obsd-tdep.o \
|
|
nbsd-tdep.o bsd-uthread.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
|
|
# Target: Solaris UltraSPARC
|
|
gdb_target_obs="sparc64-tdep.o sparc64-sol2-tdep.o sparc-tdep.o \
|
|
sparc-sol2-tdep.o sol2-tdep.o solib-svr4.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
sparc-*-*)
|
|
# Target: SPARC
|
|
gdb_target_obs="sparc-tdep.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
gdb_sim=../sim/erc32/libsim.a
|
|
;;
|
|
sparc64-*-*)
|
|
# Target: UltraSPARC
|
|
gdb_target_obs="sparc-tdep.o sparc64-tdep.o \
|
|
ravenscar-thread.o sparc-ravenscar-thread.o"
|
|
;;
|
|
|
|
s12z-*-*)
|
|
# Target: Freescale S12z
|
|
gdb_target_obs="s12z-tdep.o"
|
|
;;
|
|
|
|
tic6x-*-*linux)
|
|
# Target: GNU/Linux TI C6x
|
|
gdb_target_obs="tic6x-tdep.o tic6x-linux-tdep.o solib-dsbt.o \
|
|
glibc-tdep.o linux-tdep.o"
|
|
;;
|
|
|
|
tic6x-*-*)
|
|
# Target: TI C6X
|
|
gdb_target_obs="tic6x-tdep.o"
|
|
;;
|
|
|
|
tilegx-*-linux*)
|
|
# Target: TILE-Gx
|
|
gdb_target_obs="tilegx-tdep.o tilegx-linux-tdep.o solib-svr4.o \
|
|
symfile-mem.o glibc-tdep.o linux-tdep.o"
|
|
;;
|
|
|
|
xstormy16-*-*)
|
|
# Target: Sanyo Xstormy16a processor
|
|
gdb_target_obs="xstormy16-tdep.o"
|
|
# No simulator libraries are needed -- target uses SID.
|
|
;;
|
|
|
|
ft32-*-elf)
|
|
gdb_target_obs="ft32-tdep.o"
|
|
gdb_sim=../sim/ft32/libsim.a
|
|
;;
|
|
|
|
v850*-*-elf | v850*-*-rtems*)
|
|
# Target: NEC V850 processor
|
|
gdb_target_obs="v850-tdep.o"
|
|
gdb_sim=../sim/v850/libsim.a
|
|
;;
|
|
|
|
vax-*-netbsd* | vax-*-knetbsd*-gnu)
|
|
# Target: NetBSD/vax
|
|
gdb_target_obs="vax-tdep.o solib-svr4.o"
|
|
;;
|
|
vax-*-openbsd*)
|
|
# Target: OpenBSD/vax
|
|
gdb_target_obs="vax-tdep.o"
|
|
;;
|
|
vax-*-*)
|
|
# Target: VAX
|
|
gdb_target_obs="vax-tdep.o"
|
|
;;
|
|
|
|
x86_64-*-darwin*)
|
|
# Target: Darwin/x86-64
|
|
gdb_target_obs="${i386_tobjs} \
|
|
i386-darwin-tdep.o amd64-darwin-tdep.o \
|
|
solib-darwin.o"
|
|
;;
|
|
|
|
x86_64-*-dicos*)
|
|
# Target: DICOS/x86-64
|
|
gdb_target_obs="${i386_tobjs} \
|
|
dicos-tdep.o i386-dicos-tdep.o amd64-dicos-tdep.o"
|
|
;;
|
|
x86_64-*-elf*)
|
|
gdb_target_obs="${i386_tobjs}"
|
|
;;
|
|
x86_64-*-linux*)
|
|
# Target: GNU/Linux x86-64
|
|
gdb_target_obs="amd64-linux-tdep.o ${i386_tobjs} \
|
|
i386-linux-tdep.o glibc-tdep.o \
|
|
solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
|
|
;;
|
|
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
|
|
# Target: FreeBSD/amd64
|
|
gdb_target_obs="amd64-fbsd-tdep.o ${i386_tobjs} \
|
|
i386-bsd-tdep.o i386-fbsd-tdep.o"
|
|
;;
|
|
x86_64-*-mingw* | x86_64-*-cygwin*)
|
|
# Target: MingW/amd64
|
|
gdb_target_obs="amd64-windows-tdep.o \
|
|
${i386_tobjs} i386-windows-tdep.o \
|
|
windows-tdep.o"
|
|
;;
|
|
x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu)
|
|
# Target: NetBSD/amd64
|
|
gdb_target_obs="amd64-netbsd-tdep.o ${i386_tobjs}"
|
|
;;
|
|
x86_64-*-openbsd*)
|
|
# Target: OpenBSD/amd64
|
|
gdb_target_obs="amd64-obsd-tdep.o ${i386_tobjs} \
|
|
i386-bsd-tdep.o i386-obsd-tdep.o \
|
|
bsd-uthread.o"
|
|
;;
|
|
x86_64-*-rtems*)
|
|
gdb_target_obs="${amd64_tobjs} ${i386_tobjs} i386-bsd-tdep.o"
|
|
;;
|
|
xtensa*-*-*linux*)
|
|
# Target: GNU/Linux Xtensa
|
|
gdb_target_obs="xtensa-linux-tdep.o symfile-mem.o linux-tdep.o"
|
|
;;
|
|
|
|
esac
|
|
|
|
# Put them together.
|
|
|
|
gdb_target_obs="${cpu_obs} ${os_obs} ${gdb_target_obs}"
|
|
|
|
# map target onto default OS ABI
|
|
|
|
case "${targ}" in
|
|
*-*-freebsd* | *-*-kfreebsd*-gnu)
|
|
gdb_osabi=GDB_OSABI_FREEBSD ;;
|
|
*-*-linux* | *-*-uclinux*)
|
|
gdb_osabi=GDB_OSABI_LINUX ;;
|
|
*-*-nto*) gdb_osabi=GDB_OSABI_QNXNTO ;;
|
|
m68*-*-openbsd* | m88*-*-openbsd* | vax-*-openbsd*) ;;
|
|
*-*-openbsd*) gdb_osabi=GDB_OSABI_OPENBSD ;;
|
|
*-*-solaris*) gdb_osabi=GDB_OSABI_SOLARIS ;;
|
|
*-*-*-gnu*) ;; # prevent non-GNU kernels to match the Hurd rule below
|
|
*-*-gnu*) gdb_osabi=GDB_OSABI_HURD ;;
|
|
*-*-mingw32ce*) gdb_osabi=GDB_OSABI_WINCE ;;
|
|
*-*-mingw*) gdb_osabi=GDB_OSABI_WINDOWS ;;
|
|
*-*-cygwin*) gdb_osabi=GDB_OSABI_CYGWIN ;;
|
|
*-*-dicos*) gdb_osabi=GDB_OSABI_DICOS ;;
|
|
powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
|
|
gdb_osabi=GDB_OSABI_AIX ;;
|
|
esac
|
|
|
|
# Check whether this target supports gcore.
|
|
# Such target has to call set_gdbarch_find_memory_regions.
|
|
gdb_have_gcore=false
|
|
for t in x ${gdb_target_obs}; do
|
|
if test "$t" = linux-tdep.o; then
|
|
gdb_have_gcore=true
|
|
fi
|
|
done
|