[PATCH 00/22] [GDBserver] Multi-process + multi-arch

Pedro Alves
2013-05-29T16:24:41Z

This is a rebase of the series originaly posted at
<http://www.sourceware.org/ml/gdb-patches/2012-04/msg00202.html>, over
a year ago (!).

Meanwhile, the GDB patch has gone in, at
<http://sourceware.org/ml/gdb-patches/2012-11/msg00228.html>.

GDB is now prepared to handle the case of debugging programs of
different architectures (gdbarch's) simultaneously. However,
GDBserver still isn't. A simple example is debugging both a 32-bit
and a 64-bit program simultaneously on x86_64 (think following forks,
and 32-bit and/or 64-bit children being spawned), though more
complicated examples could be multi-core setups with processors on the
same target (e.g., x86_64 + ARM isn't uncommon these days).

The previous time I had posted this, I had tested all that I could
find a machine to test on. GDBserver hasn't changed that much since,
and most patches applied cleanly, so I skipped the very time consuming
retesting of non-x86 ports this time. I re-checked things still build
with a set of cross compilers though. A few archs were cross-compile
tested only even back then (for I have no access to some archs), and a
few were not tested at all, so it's quite possible that I broke them.
We're still early enough in the release cycle that I'm not much
concerned with port breakage, as any necessary fix should be trivial.

The first patch does the core work, and adjusts the GNU/Linux
x86/x86_64 port to interface changes. The build is then broken for
all other ports after patch 1. All the subsequent patches then fix
each port one by one. In order to try to keep the tree building at
all revisions, all GDBserver patches will be consolidated into a
single CVS commit; I've kept them separate to ease development,
testing, and review.

The x86 port was the one that had the most conflicts when rebasing to
current mainline. I ended up doing things a little bit differently
here and there.

Since I last posted this, GDBserver gained a few new ports -- Nios2,
Aarch64 and TILE-Gx. I've adjusted them too now. I plan to push this
in soon, before yet another port comes along. :-)

For convenience, the whole series is also found at
<https://github.com/palves/gdb/commits/multi-process-multi-arch-v2>
or
git://github.com/palves/gdb.git multi-process-multi-arch-v2
---

Pedro Alves (22):
[GDBserver] Multi-process + multi-arch: core + GNU/Linux x86*
[GDBserver] Multi-process + multi-arch: GNU/Linux IA64
[GDBserver] Multi-process + multi-arch: GNU/Linux SPARC
[GDBserver] Multi-process + multi-arch: GNU/Linux PowerPC
[GDBserver] Multi-process + multi-arch: GNU/Linux S/390
[GDBserver] Multi-process + multi-arch: GNU/Linux MIPS
[GDBserver] Multi-process + multi-arch: GNU/Linux ARM
[GDBserver] Multi-process + multi-arch: GNU/Linux m68k
[GDBserver] Multi-process + multi-arch: GNU/Linux SH
[GDBserver] Multi-process + multi-arch: GNU/Linux Blackfin
[GDBserver] Multi-process + multi-arch: GNU/Linux CRIS
[GDBserver] Multi-process + multi-arch: GNU/Linux CRISv32
[GDBserver] Multi-process + multi-arch: GNU/Linux M32R
[GDBserver] Multi-process + multi-arch: GNU/Linux TI C6x
[GDBserver] Multi-process + multi-arch: GNU/Linux Xtensa
[GDBserver] Multi-process + multi-arch: GNU/Linux Nios 2
[GDBserver] Multi-process + multi-arch: GNU/Linux Aarch64
[GDBserver] Multi-process + multi-arch: GNU/Linux TILE-Gx
[GDBserver] Multi-process + multi-arch: SPU
[GDBserver] Multi-process + multi-arch: Windows
[GDBserver] Multi-process + multi-arch: LynxOS
[GDBserver] Multi-process + multi-arch: QNX NTO

gdb/gdbserver/Makefile.in | 8 -
gdb/gdbserver/ax.c | 2
gdb/gdbserver/i387-fp.c | 34 ++-
gdb/gdbserver/i387-fp.h | 2
gdb/gdbserver/inferiors.c | 1
gdb/gdbserver/linux-aarch64-low.c | 43 +++-
gdb/gdbserver/linux-amd64-ipa.c | 8 -
gdb/gdbserver/linux-arm-low.c | 88 +++++--
gdb/gdbserver/linux-bfin-low.c | 38 +++
gdb/gdbserver/linux-cris-low.c | 37 +++
gdb/gdbserver/linux-crisv32-low.c | 52 ++++
gdb/gdbserver/linux-i386-ipa.c | 4
gdb/gdbserver/linux-ia64-low.c | 44 +++-
gdb/gdbserver/linux-low.c | 217 ++++++++++--------
gdb/gdbserver/linux-low.h | 72 +++++-
gdb/gdbserver/linux-m32r-low.c | 37 +++
gdb/gdbserver/linux-m68k-low.c | 50 ++++
gdb/gdbserver/linux-mips-low.c | 191 +++++++++++-----
gdb/gdbserver/linux-nios2-low.c | 43 +++-
gdb/gdbserver/linux-ppc-low.c | 168 ++++++++++----
gdb/gdbserver/linux-s390-low.c | 187 ++++++++++++---
gdb/gdbserver/linux-sh-low.c | 49 ++++
gdb/gdbserver/linux-sparc-low.c | 60 ++++-
gdb/gdbserver/linux-tic6x-low.c | 74 +++++-
gdb/gdbserver/linux-tile-low.c | 47 +++-
gdb/gdbserver/linux-x86-low.c | 450 ++++++++++++++++++++++++-------------
gdb/gdbserver/linux-xtensa-low.c | 61 ++++-
gdb/gdbserver/lynx-i386-low.c | 2
gdb/gdbserver/lynx-low.c | 3
gdb/gdbserver/lynx-low.h | 4
gdb/gdbserver/lynx-ppc-low.c | 2
gdb/gdbserver/nto-low.c | 6
gdb/gdbserver/nto-low.h | 6
gdb/gdbserver/nto-x86-low.c | 2
gdb/gdbserver/proc-service.c | 10 -
gdb/gdbserver/regcache.c | 235 +++++++++++--------
gdb/gdbserver/regcache.h | 33 ++-
gdb/gdbserver/remote-utils.c | 9 -
gdb/gdbserver/server.c | 25 +-
gdb/gdbserver/server.h | 6
gdb/gdbserver/spu-low.c | 10 +
gdb/gdbserver/tdesc.c | 66 +++++
gdb/gdbserver/tdesc.h | 64 +++++
gdb/gdbserver/tracepoint.c | 35 ++-
gdb/gdbserver/win32-arm-low.c | 11 +
gdb/gdbserver/win32-i386-low.c | 8 -
gdb/gdbserver/win32-low.c | 10 -
gdb/gdbserver/win32-low.h | 6
48 files changed, 1924 insertions(+), 696 deletions(-)
create mode 100644 gdb/gdbserver/tdesc.c
create mode 100644 gdb/gdbserver/tdesc.h

--
Signature