[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