[Pdbg] [PATCH v2 00/39] gdbserver multi-threaded debugging and POWER9/10 support
Nicholas Piggin
npiggin at gmail.com
Wed Apr 20 16:49:34 AEST 2022
POWER10 is working well with sbefifo (modulo the start SBE command
being buggy with stop states -- make sure you use powersave=off when
testing this, until those can be fixed). POWER9 similarly works well,
with the exception of breakpoints causing PSI interrupt storm.
gdbserver itself was due for a bit of attention so there's a bunch of
improvements and fixes.
Multi-threaded debugging is implemented later in the series using the
gdb "all-stop" threads model (all target threads are stopped if any is
stopped).
Since v1:
- Made changes suggested by Joel (thanks).
- Made a generated target, split out the regen of the stale
gdb_parser_precompile.c into that patch.
- Make the double-ctrl-C really immediately kill.
- Implemented multi-threaded debugging.
- A few more smaller improvements (put_mem handling, breakpoint
command handling, returning more registers).
- Redudce round trips further by returning registers with stop reason.
- POWER9 support as well.
- Proper SPATTN / attn detection and clearing for POWER9/10.
Thanks,
Nick
Nicholas Piggin (39):
libpdbg: fix p9chip and p10chip thread_stop
gdbserver: add a 'generated' make target, update
gdb_parser_precompile.c
gdbserver: rename detach command handler
gdbserver: fix put_mem command parsing
gdbserver: include <port> argument in command line help text
gdbserver: Document problem and workaround for client remote timeouts
gdbserver: print some client/server info
gdbserver: Make command callback array static
gdbserver: use standard compatibility test calls
gdbserver: fix read buffer overflow
gdbserver: reduce PR_INFO noise
gdbserver: fix interrupt double stop reason response
libpdbg: thread_regs don't print regs
gdbserver: lexer fixes
gdbserver: put_mem handle arbitrary lengths
gdbserver: implement NoAckMode
libpdbg: Remove enable_attn target command
gdbserver: disable attn after breaking
gdbserver: use read-modify-write for put_mem that is not 8-byte
aligned
gdbserver: enable POWER9 support
gdbserver: Add POWER10 support
gdbserver: check for attn using the SPATTN register
gdbserver: breakpoint instruction test current host endian when it is
required
gdbserver: catch ctrl-C to clean up host state
gdbserver: return more registers
gdbserver: initial thread support
gdbserver: track attn enablement by breakpoints
gdbproxy: implement get_thread / set_thread commands
gdbserver: add multi-threaded start/stop helper functions
gdbserver: tidy poll()
gdbserver: multi-thread polling and stop-reason
gdbserver: track stop reason per thread
gdbserver: multithread debugging support
gdbserver: allow gdbserver to start with targets running
gdbserver: better deal with threads initially stopped
gdbserver: send regs with stop reason
gdbserver: use thread_stop_all() / thread_start_all()
gdbserver: handle gdb breakpoint commands
gdbserver: remove fallback breakpoint support in put_mem
Makefile.am | 12 +
README.md | 45 +-
libpdbg/chip.c | 2 -
libpdbg/hwunit.c | 1 +
libpdbg/hwunit.h | 2 +-
libpdbg/p10chip.c | 8 +-
libpdbg/p8chip.c | 31 -
libpdbg/p9chip.c | 8 +-
libpdbg/thread.c | 7 +-
src/gdb_parser.rl | 124 +++-
src/gdb_parser_precompile.c | 478 ++++++++++-----
src/main.c | 2 +-
src/pdbgproxy.c | 1121 +++++++++++++++++++++++++++++++----
src/pdbgproxy.h | 11 +-
src/thread.c | 2 +
15 files changed, 1495 insertions(+), 359 deletions(-)
--
2.35.1
More information about the Pdbg
mailing list