This patchset adds the stubs necessary to support GDB memory tagging commands on QEMU aarch64 user mode.
These new stubs handle the qIsAddressTagged, qMemTag, and QMemTag packets, which allow GDB memory tagging subcommands 'check', 'print-allocation-tag', and 'set-allocation-tag' to work. The remaining memory tagging commands ('print-logical-tag' and 'with-logical-tag') will also work, but they don't rely on any stub because they perform local operations. Since the memory tagging stubs are not common to all architectures, this patchset also introduces three functions: set_query_supported_arch, set_gdb_gen_query_table_arch, and set_gdb_gen_set_table_arch. These functions can be used to extend the target-specific 'qSupported' feature string and the handlers for the 'q' (query) and 'Q' (set) packets. These new functions are used to add the MTE stubs for the aarch64 gdbstub. Note that this patchset requires a GDB that supports the qIsAddressTagged packet (recently added to GDB), so the gdbstub MTE tests introduced by it must be run using GDB's master branch, since the GDB in the distros hasn't picked up the change yet. Once GDB is built and installed locally, the tests can be exercised, for example, this way: make GDB=~/.local/bin/gdb run-tcg-tests-aarch64-linux-user -j 32 Cheers, Gustavo Gustavo Romero (4): gdbstub: Add support for target-specific stubs gdbstub: Add support for MTE in user mode tests: Gently exit from GDB when tests complete tests/tcg/aarch64: Add MTE gdbstub tests configs/targets/aarch64-linux-user.mak | 2 +- gdbstub/gdbstub.c | 108 +++++---- gdbstub/internals.h | 22 -- gdbstub/syscalls.c | 1 + include/exec/gdbstub.h | 86 ++++++- target/arm/cpu.c | 1 + target/arm/gdbstub.c | 321 +++++++++++++++++++++++++ target/arm/internals.h | 2 + tests/guest-debug/test_gdbstub.py | 2 +- tests/tcg/aarch64/Makefile.target | 11 +- tests/tcg/aarch64/gdbstub/test-mte.py | 86 +++++++ tests/tcg/aarch64/mte-8.c | 102 ++++++++ 12 files changed, 670 insertions(+), 74 deletions(-) create mode 100644 tests/tcg/aarch64/gdbstub/test-mte.py create mode 100644 tests/tcg/aarch64/mte-8.c -- 2.34.1