Philippe Mathieu-Daudé <phi...@linaro.org> writes: > On 21/5/25 17:42, Alex Bennée wrote: >> From: Dominik 'Disconnect3d' Czarnota <dominik.b.czarn...@gmail.com> >> This commit adds support for the `qGDBServerVersion` packet to the >> qemu >> gdbstub which could be used by clients to detect the QEMU version >> (and, e.g., use a workaround for known bugs). >> This packet is not documented/standarized by GDB but it was >> implemented >> by LLDB gdbstub [0] and is helpful for projects like Pwndbg [1]. >> This has been implemented by Patryk, who I included in >> Co-authored-by >> and who asked me to send the patch. >> [0] >> https://lldb.llvm.org/resources/lldbgdbremote.html#qgdbserverversion >> [1] https://github.com/pwndbg/pwndbg/issues/2648 >> Co-authored-by: Patryk 'patryk4815' Sondej <patryk.son...@gmail.com> >> Signed-off-by: Dominik 'Disconnect3d' Czarnota <dominik.b.czarn...@gmail.com> >> Message-Id: <20250403191340.53343-1-dominik.b.czarn...@gmail.com> >> [AJB: fix include, checkpatch linewrap] >> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> >> --- >> gdbstub/gdbstub.c | 17 +++++++++++++++++ >> 1 file changed, 17 insertions(+) >> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c >> index 6023c80d25..def0b7e877 100644 >> --- a/gdbstub/gdbstub.c >> +++ b/gdbstub/gdbstub.c >> @@ -28,6 +28,7 @@ >> #include "qemu/cutils.h" >> #include "qemu/module.h" >> #include "qemu/error-report.h" >> +#include "qemu/target-info.h" >> #include "trace.h" >> #include "exec/gdbstub.h" >> #include "gdbstub/commands.h" >> @@ -1597,6 +1598,18 @@ static void handle_query_threads(GArray *params, void >> *user_ctx) >> gdbserver_state.query_cpu = >> gdb_next_attached_cpu(gdbserver_state.query_cpu); >> } >> +static void handle_query_gdb_server_version(GArray *params, void >> *user_ctx) >> +{ >> +#if defined(CONFIG_USER_ONLY) >> + g_string_printf(gdbserver_state.str_buf, "name:qemu-%s;version:%s;", >> + target_name(), QEMU_VERSION); >> +#else >> + g_string_printf(gdbserver_state.str_buf, >> "name:qemu-system-%s;version:%s;", >> + target_name(), QEMU_VERSION); >> +#endif > > g_string_printf() isn't really justified, we usually call > g_string_append().
How is that meant to work with a format string? > >> + gdb_put_strbuf(); >> +} -- Alex Bennée Virtualisation Tech Lead @ Linaro