This patch series introduces support for the Multi-Core Debug (MCD) API, a
commonly used debug interface by emulators. The MCD API, defined through a
header file, consists of 54 functions for implementing debug and trace.
However, since it is a header-file-only interface, MCD does not specify a
communication protocol. We get around this limitation by following a remote
procedure call approach using QMP. The client stub corresponding to this
implementation can be found at https://gitlab.com/lauterbach/mcdrefsrv
This series is the successor to:
"[PATCH v5 00/18] first version of mcdstub"
(https://patchew.org/QEMU/20231220162555.19545-1-nicolas.eder@lauterbach.com/)
* Architecture-independent MCD implementation
* QMP instead of custom TCP protocol
qemu-system-<arch> [options] -qmp tcp::1235,server=on,wait=off
* Architecture-independent QTest test suite
V=1 QTEST_QEMU_BINARY="./qemu-system-<arch> [options]" tests/qtest/mcd-test
* Architecture-specific tests can be found at the client stub
Mario Fleischmann (16):
mcd: Introduce Multi-Core Debug (MCD) API
mcd: Introduce MCD server
mcd: Implement target initialization API
mcd: Implement server connection API
mcd: Implement target system query
mcd: Implement core connection control
mcd: Implement memory space query
gdbstub: Expose GDBRegisterState
mcd: Implement register query
mcd: Implement runstate control
mcd test: Implement core state query
gdbstub: Expose gdb_write_register
mcd: Implement register/memory access
mcd: Implement single stepping
mcd: Implement trigger control
mcd: Implement reset control
MAINTAINERS | 9 +
docs/interop/index.rst | 1 +
docs/interop/mcd.rst | 58 +
gdbstub/gdbstub.c | 15 +-
include/exec/gdbstub.h | 18 +-
mcd/libmcd_qapi.c | 506 +++++
mcd/libmcd_qapi.h | 81 +
mcd/mcd_api.h | 3963 +++++++++++++++++++++++++++++++++++++
mcd/mcdserver.c | 2242 +++++++++++++++++++++
mcd/mcdstub_qapi.c | 974 +++++++++
mcd/meson.build | 12 +
meson.build | 1 +
qapi/mcd.json | 2366 ++++++++++++++++++++++
qapi/meson.build | 1 +
qapi/qapi-schema.json | 1 +
tests/qtest/libmcd-test.c | 379 ++++
tests/qtest/libmcd-test.h | 68 +
tests/qtest/mcd-test.c | 644 ++++++
tests/qtest/meson.build | 2 +
19 files changed, 11331 insertions(+), 10 deletions(-)
create mode 100644 docs/interop/mcd.rst
create mode 100644 mcd/libmcd_qapi.c
create mode 100644 mcd/libmcd_qapi.h
create mode 100644 mcd/mcd_api.h
create mode 100644 mcd/mcdserver.c
create mode 100644 mcd/mcdstub_qapi.c
create mode 100644 mcd/meson.build
create mode 100644 qapi/mcd.json
create mode 100644 tests/qtest/libmcd-test.c
create mode 100644 tests/qtest/libmcd-test.h
create mode 100644 tests/qtest/mcd-test.c
--
2.34.1