Based-on: <20240202152506.279476-1-...@linux.ibm.com> ("[PATCH v3 0/5] gdbstub: Implement catching syscalls")
v1: https://lists.gnu.org/archive/html/qemu-devel/2024-01/msg06646.html v1 -> v2: Factor out a number of prep patches; Add a state transition diagram comment (Alex). Improve a few comments; Extend the ts_tid fix to bsd. Hi, I needed to debug a linux-user crash between fork() and exec() [1] and realized that gdbstub does not allow this. This series lifts this restriction (one still cannot debug past exec() though). Patches 1-9 are preliminary refactorings, patch 10 is the implementation, and patch 11 is the test. [1] https://lists.gnu.org/archive/html/qemu-devel/2024-01/msg06424.html Best regards, Ilya Ilya Leoshkevich (11): gdbstub: Support disablement in a multi-threaded process {linux,bsd}-user: Update ts_tid after fork() gdbstub: Introduce gdbserver_fork_start() {linux,bsd}-user: Pass pid to fork_end() {linux,bsd}-user: Pass pid to gdbserver_fork() gdbstub: Call gdbserver_fork() both in parent and in child gdbstub: Introduce gdb_handle_query_supported_user() gdbstub: Introduce gdb_handle_set_thread_user() gdbstub: Introduce gdb_handle_detach_user() gdbstub: Implement follow-fork-mode child tests/tcg: Add two follow-fork-mode tests bsd-user/freebsd/os-proc.h | 6 +- bsd-user/main.c | 9 +- bsd-user/qemu.h | 2 +- gdbstub/gdbstub.c | 29 ++- gdbstub/internals.h | 3 + gdbstub/user.c | 244 +++++++++++++++++- include/gdbstub/user.h | 11 +- linux-user/main.c | 8 +- linux-user/syscall.c | 6 +- linux-user/user-internals.h | 2 +- tests/tcg/multiarch/Makefile.target | 17 +- tests/tcg/multiarch/follow-fork-mode.c | 56 ++++ .../gdbstub/follow-fork-mode-child.py | 40 +++ .../gdbstub/follow-fork-mode-parent.py | 16 ++ 14 files changed, 424 insertions(+), 25 deletions(-) create mode 100644 tests/tcg/multiarch/follow-fork-mode.c create mode 100644 tests/tcg/multiarch/gdbstub/follow-fork-mode-child.py create mode 100644 tests/tcg/multiarch/gdbstub/follow-fork-mode-parent.py -- 2.43.0