mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
a45b1e66c5
This patch adds support for running gdb natively on OpenRISC linux. Debugging support is provided via the linux PTRACE interface which is mostly handled by GDB genric code. This patch provides the logic of how to read and write the ptrace registers between linux and GDB. Single stepping is privided in a separate patch.
498 lines
12 KiB
Bash
498 lines
12 KiB
Bash
# ; -*- mode: sh ; -*-
|
|
# Copyright (C) 2013-2021 Free Software Foundation, Inc.
|
|
#
|
|
# This file is part of GDB.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Variables defined here:
|
|
#
|
|
# NAT_FILE - The header file with definitions for this native target.
|
|
#
|
|
# NATDEPFILES - Source files required for native debugging on this
|
|
# native target.
|
|
#
|
|
# NAT_CDEPS - Dynamic symbols to be exported for libthread_db.
|
|
#
|
|
# LOADLIBES - Libraries against which GDB will be linked for this
|
|
# native target.
|
|
#
|
|
# MH_CFLAGS - Additional CFLAGS for this host.
|
|
#
|
|
# XM_CLIBS - Host-dependent libraries against which GDB will be linked
|
|
# for this native target.
|
|
#
|
|
# HAVE_NATIVE_GCORE_HOST - Whether gcore should be installed on this
|
|
# native target.
|
|
#
|
|
# nat_makefile_frag - Name of the (optional) Makefile fragment file
|
|
# required to build the native target. The
|
|
# fragment is incorporated into the Makefile that
|
|
# configure constructs from Makefile.in.
|
|
#
|
|
# Notes:
|
|
#
|
|
# - To avoid shell expansion of variables, declare them with single
|
|
# quotes.
|
|
#
|
|
# - nat_makefile_frag must contain the full path of the file.
|
|
|
|
|
|
# This first case is useful for filling default values for each
|
|
# gdb_host.
|
|
case ${gdb_host} in
|
|
*linux*)
|
|
NAT_FILE='config/nm-linux.h'
|
|
NATDEPFILES='inf-ptrace.o fork-child.o nat/fork-inferior.o \
|
|
proc-service.o \
|
|
linux-thread-db.o linux-nat.o nat/linux-osdata.o linux-fork.o \
|
|
nat/linux-procfs.o nat/linux-ptrace.o nat/linux-waitpid.o \
|
|
nat/linux-personality.o nat/linux-namespaces.o'
|
|
NAT_CDEPS='$(srcdir)/proc-service.list'
|
|
LOADLIBES='-ldl $(RDYNAMIC)'
|
|
;;
|
|
fbsd*)
|
|
NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o fbsd-nat.o'
|
|
HAVE_NATIVE_GCORE_HOST=1
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
nbsd*)
|
|
NATDEPFILES='fork-child.o nat/fork-inferior.o nat/netbsd-nat.o inf-ptrace.o'
|
|
HAVE_NATIVE_GCORE_HOST=1
|
|
;;
|
|
obsd*)
|
|
NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o'
|
|
;;
|
|
cygwin*)
|
|
NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
|
|
;;
|
|
mingw*)
|
|
NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
|
|
;;
|
|
aix)
|
|
NATDEPFILES='nat/fork-inferior.o fork-child.o inf-ptrace.o'
|
|
;;
|
|
darwin)
|
|
NATDEPFILES='fork-child.o nat/fork-inferior.o darwin-nat.o \
|
|
darwin-nat-info.o'
|
|
;;
|
|
sol2)
|
|
NATDEPFILES='fork-child.o nat/fork-inferior.o \
|
|
procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o \
|
|
sol-thread.o'
|
|
HAVE_NATIVE_GCORE_HOST=1
|
|
;;
|
|
esac
|
|
|
|
# This is where we actually filter by host and host CPU.
|
|
case ${gdb_host} in
|
|
aix)
|
|
case ${gdb_host_cpu} in
|
|
powerpc)
|
|
# Host: IBM PowerPC running AIX aix-thread.o is not
|
|
# listed in NATDEPFILES as it is pulled in by
|
|
# configure.
|
|
NATDEPFILES="${NATDEPFILES} rs6000-nat.o"
|
|
|
|
# When compiled with cc, for debugging, this argument
|
|
# should be passed. We have no idea who our current
|
|
# compiler is though, so we skip it.
|
|
# MH_CFLAGS='-bnodelcsect'
|
|
;;
|
|
esac
|
|
;;
|
|
alpha-linux)
|
|
case ${gdb_host_cpu} in
|
|
alpha)
|
|
# Host: Little-endian Alpha running Linux
|
|
NATDEPFILES="${NATDEPFILES} linux-nat-trad.o alpha-linux-nat.o"
|
|
# doublest.c currently assumes some properties of FP arithmetic
|
|
# on the host which require this.
|
|
MH_CFLAGS='-mieee'
|
|
;;
|
|
esac
|
|
;;
|
|
cygwin)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Native config information for GDB on i386
|
|
# systems running Cygwin.
|
|
NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
cygwin64)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Native config information for GDB on amd64
|
|
# systems running Cygwin.
|
|
NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
darwin)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: IA86 running Darwin
|
|
NATDEPFILES="${NATDEPFILES} i386-darwin-nat.o x86-nat.o \
|
|
nat/x86-dregs.o amd64-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
fbsd)
|
|
case ${gdb_host_cpu} in
|
|
aarch64)
|
|
# Host: FreeBSD/aarch64
|
|
NATDEPFILES="${NATDEPFILES} aarch64-fbsd-nat.o"
|
|
LOADLIBES=
|
|
;;
|
|
arm)
|
|
# Host: FreeBSD/arm
|
|
NATDEPFILES="${NATDEPFILES} arm-fbsd-nat.o"
|
|
LOADLIBES=
|
|
;;
|
|
i386)
|
|
# Host: FreeBSD/i386
|
|
NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
|
|
x86-bsd-nat.o i386-bsd-nat.o i386-fbsd-nat.o bsd-kvm.o"
|
|
;;
|
|
mips)
|
|
# Host: FreeBSD/mips
|
|
NATDEPFILES="${NATDEPFILES} mips-fbsd-nat.o"
|
|
LOADLIBES=
|
|
;;
|
|
powerpc)
|
|
# Native config information for GDB on PowerPC
|
|
# systems running FreeBSD.
|
|
NATDEPFILES="${NATDEPFILES} ppc-fbsd-nat.o bsd-kvm.o"
|
|
;;
|
|
riscv*)
|
|
# Host: FreeBSD/riscv
|
|
NATDEPFILES="${NATDEPFILES} riscv-fbsd-nat.o"
|
|
;;
|
|
sparc)
|
|
# Host: FreeBSD/sparc64
|
|
NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
|
|
sparc64-fbsd-nat.o bsd-kvm.o"
|
|
;;
|
|
esac
|
|
;;
|
|
fbsd64)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: FreeBSD/amd64
|
|
NATDEPFILES="${NATDEPFILES} amd64-nat.o amd64-bsd-nat.o \
|
|
amd64-fbsd-nat.o bsd-kvm.o x86-nat.o nat/x86-dregs.o \
|
|
x86-bsd-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
go32)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: Intel x86 running DJGPP
|
|
# We include several header files from config/djgpp
|
|
MH_CFLAGS='-I$(srcdir)/config/djgpp'
|
|
NATDEPFILES='go32-nat.o x86-nat.o nat/x86-dregs.o'
|
|
XM_CLIBS='-ldbg'
|
|
;;
|
|
esac
|
|
;;
|
|
i386gnu)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: Intel 386 running the GNU Hurd
|
|
NATDEPFILES='i386-gnu-nat.o gnu-nat.o \
|
|
x86-nat.o nat/x86-dregs.o fork-child.o \
|
|
nat/fork-inferior.o \
|
|
notify_S.o process_reply_S.o msg_reply_S.o \
|
|
msg_U.o exc_request_U.o exc_request_S.o'
|
|
HAVE_NATIVE_GCORE_HOST=1
|
|
|
|
NAT_FILE='nm-i386gnu.h'
|
|
MH_CFLAGS='-D_GNU_SOURCE'
|
|
|
|
XM_CLIBS='-lshouldbeinlibc'
|
|
|
|
nat_makefile_frag="${srcdir}/config/${gdb_host_cpu}/i386gnu.mn"
|
|
;;
|
|
esac
|
|
;;
|
|
linux)
|
|
case ${gdb_host_cpu} in
|
|
aarch64)
|
|
# Host: AArch64 based machine running GNU/Linux
|
|
NATDEPFILES="${NATDEPFILES} aarch64-linux-nat.o \
|
|
aarch32-linux-nat.o nat/aarch64-linux-hw-point.o \
|
|
nat/aarch64-linux.o \
|
|
nat/aarch64-sve-linux-ptrace.o \
|
|
nat/aarch64-mte-linux-ptrace.o"
|
|
;;
|
|
arc)
|
|
# Host: ARC based machine running GNU/Linux
|
|
NATDEPFILES="${NATDEPFILES} arc-linux-nat.o"
|
|
;;
|
|
arm)
|
|
# Host: ARM based machine running GNU/Linux
|
|
NATDEPFILES="${NATDEPFILES} arm-linux-nat.o \
|
|
aarch32-linux-nat.o"
|
|
;;
|
|
i386)
|
|
# Host: Intel 386 running GNU/Linux.
|
|
NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
|
|
i386-linux-nat.o x86-linux-nat.o nat/linux-btrace.o \
|
|
nat/x86-linux.o nat/x86-linux-dregs.o"
|
|
;;
|
|
ia64)
|
|
# Host: Intel IA-64 running GNU/Linux
|
|
NATDEPFILES="${NATDEPFILES} ia64-linux-nat.o"
|
|
;;
|
|
m32r)
|
|
# Host: M32R based machine running GNU/Linux
|
|
NATDEPFILES="${NATDEPFILES} m32r-linux-nat.o"
|
|
;;
|
|
m68k)
|
|
# Host: Motorola m68k running GNU/Linux.
|
|
NATDEPFILES="${NATDEPFILES} m68k-linux-nat.o"
|
|
;;
|
|
mips)
|
|
# Host: Linux/MIPS
|
|
NATDEPFILES="${NATDEPFILES} linux-nat-trad.o \
|
|
mips-linux-nat.o nat/mips-linux-watch.o"
|
|
;;
|
|
or1k)
|
|
# Host: Linux/OpenRISC
|
|
NATDEPFILES="${NATDEPFILES} or1k-linux-nat.o"
|
|
;;
|
|
pa)
|
|
# Host: Hewlett-Packard PA-RISC machine, running Linux
|
|
NATDEPFILES="${NATDEPFILES} hppa-linux-nat.o"
|
|
;;
|
|
powerpc)
|
|
# Host: PowerPC, running Linux
|
|
NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
|
|
;;
|
|
riscv*)
|
|
# Host: RISC-V, running Linux
|
|
NATDEPFILES="${NATDEPFILES} riscv-linux-nat.o \
|
|
nat/riscv-linux-tdesc.o"
|
|
;;
|
|
s390)
|
|
# Host: S390, running Linux
|
|
NATDEPFILES="${NATDEPFILES} s390-linux-nat.o"
|
|
;;
|
|
sparc)
|
|
# Host: GNU/Linux SPARC
|
|
NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-linux-nat.o"
|
|
;;
|
|
tilegx)
|
|
# Host: Tilera TILE-Gx running GNU/Linux.
|
|
NATDEPFILES="${NATDEPFILES} tilegx-linux-nat.o"
|
|
NAT_CDEPS=
|
|
;;
|
|
xtensa)
|
|
# Host: Xtensa, running GNU/Linux.
|
|
NATDEPFILES="${NATDEPFILES} xtensa-linux-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
linux64)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: GNU/Linux x86-64
|
|
NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
|
|
amd64-nat.o amd64-linux-nat.o x86-linux-nat.o \
|
|
nat/linux-btrace.o \
|
|
nat/x86-linux.o nat/x86-linux-dregs.o \
|
|
nat/amd64-linux-siginfo.o"
|
|
;;
|
|
sparc)
|
|
# Host: GNU/Linux UltraSPARC
|
|
NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
|
|
sparc64-linux-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
mingw)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
mingw64)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
nbsd)
|
|
case ${gdb_host_cpu} in
|
|
alpha)
|
|
# Host: NetBSD/alpha
|
|
NATDEPFILES="${NATDEPFILES} alpha-bsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
mips)
|
|
# Host: NetBSD/mips
|
|
NATDEPFILES="${NATDEPFILES} mips-netbsd-nat.o"
|
|
;;
|
|
pa)
|
|
# Host: NetBSD/hppa
|
|
NATDEPFILES="${NATDEPFILES} netbsd-nat.o hppa-netbsd-nat.o"
|
|
;;
|
|
powerpc)
|
|
# Host: NetBSD/powerpc
|
|
NATDEPFILES="${NATDEPFILES} ppc-netbsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
sh)
|
|
# Host: NetBSD/sh
|
|
NATDEPFILES="${NATDEPFILES} sh-netbsd-nat.o"
|
|
;;
|
|
|
|
esac
|
|
;;
|
|
nbsd64)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: NetBSD/amd64
|
|
NATDEPFILES="${NATDEPFILES} netbsd-nat.o amd64-nat.o x86-nat.o \
|
|
nat/x86-dregs.o x86-bsd-nat.o amd64-bsd-nat.o amd64-netbsd-nat.o"
|
|
;;
|
|
sparc)
|
|
# Host: NetBSD/sparc64
|
|
NATDEPFILES="${NATDEPFILES} sparc64-netbsd-nat.o sparc-nat.o \
|
|
bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
|
|
esac
|
|
;;
|
|
nbsdelf)
|
|
case ${gdb_host_cpu} in
|
|
arm)
|
|
# Host: NetBSD/arm
|
|
NATDEPFILES="${NATDEPFILES} arm-netbsd-nat.o"
|
|
;;
|
|
i386)
|
|
# Host: NetBSD/i386 ELF
|
|
NATDEPFILES="${NATDEPFILES} netbsd-nat.o x86-nat.o \
|
|
nat/x86-dregs.o \
|
|
x86-bsd-nat.o i386-bsd-nat.o i386-netbsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
m68k)
|
|
# Host: NetBSD/m68k ELF
|
|
NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
sparc)
|
|
# Host: NetBSD/sparc ELF
|
|
NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-netbsd-nat.o \
|
|
bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
vax)
|
|
# Host: NetBSD/vax ELF
|
|
NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
|
|
esac
|
|
;;
|
|
nto)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: Intel 386 running QNX.
|
|
NATDEPFILES='nto-procfs.o'
|
|
NAT_FILE='config/nm-nto.h'
|
|
;;
|
|
esac
|
|
;;
|
|
obsd)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: OpenBSD/i386 ELF
|
|
NATDEPFILES="${NATDEPFILES} obsd-nat.o x86-bsd-nat.o \
|
|
i386-bsd-nat.o i386-obsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
m68k)
|
|
# Host: OpenBSD/m68k
|
|
NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
pa)
|
|
# Host: OpenBSD/hppa
|
|
NATDEPFILES="${NATDEPFILES} obsd-nat.o hppa-obsd-nat.o"
|
|
;;
|
|
powerpc)
|
|
# Host: OpenBSD/powerpc
|
|
NATDEPFILES="${NATDEPFILES} obsd-nat.o ppc-obsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
vax)
|
|
# Host: OpenBSD/vax
|
|
NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
esac
|
|
;;
|
|
obsd64)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: OpenBSD/amd64
|
|
NATDEPFILES="${NATDEPFILES} obsd-nat.o amd64-nat.o \
|
|
x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
mips)
|
|
# Host: OpenBSD/mips64
|
|
NATDEPFILES="${NATDEPFILES} obsd-nat.o mips64-obsd-nat.o"
|
|
;;
|
|
sparc)
|
|
# Host: OpenBSD/sparc64
|
|
NATDEPFILES="${NATDEPFILES} obsd-nat.o sparc64-obsd-nat.o \
|
|
sparc-nat.o bsd-kvm.o"
|
|
LOADLIBES='-lkvm'
|
|
;;
|
|
esac
|
|
;;
|
|
ppc64-linux)
|
|
case ${gdb_host_cpu} in
|
|
powerpc)
|
|
# Host: PowerPC64, running Linux
|
|
XM_CLIBS=
|
|
NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
|
|
;;
|
|
esac
|
|
;;
|
|
sol2)
|
|
case ${gdb_host_cpu} in
|
|
i386)
|
|
# Host: Solaris x86_64
|
|
NATDEPFILES="${NATDEPFILES} \
|
|
amd64-nat.o i386-sol2-nat.o"
|
|
;;
|
|
sparc)
|
|
# Host: Solaris SPARC & UltraSPARC
|
|
NAT_FILE='nm-sol2.h'
|
|
NATDEPFILES="${NATDEPFILES} sparc-sol2-nat.o"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|