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.e...@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