mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
gdbstub: Implement qGDBServerVersion packet
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.sondej@gmail.com> Signed-off-by: Dominik 'Disconnect3d' Czarnota <dominik.b.czarnota@gmail.com> Message-Id: <20250403191340.53343-1-dominik.b.czarnota@gmail.com> [AJB: fix include, checkpatch linewrap] Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-ID: <20250603110204.838117-17-alex.bennee@linaro.org>
This commit is contained in:
parent
3bb69b1953
commit
b2654598b3
1 changed files with 17 additions and 0 deletions
|
@ -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
|
||||
gdb_put_strbuf();
|
||||
}
|
||||
|
||||
static void handle_query_first_threads(GArray *params, void *user_ctx)
|
||||
{
|
||||
gdbserver_state.query_cpu = gdb_first_attached_cpu();
|
||||
|
@ -1842,6 +1855,10 @@ static const GdbCmdParseEntry gdb_gen_query_table[] = {
|
|||
.handler = handle_query_threads,
|
||||
.cmd = "sThreadInfo",
|
||||
},
|
||||
{
|
||||
.handler = handle_query_gdb_server_version,
|
||||
.cmd = "GDBServerVersion",
|
||||
},
|
||||
{
|
||||
.handler = handle_query_first_threads,
|
||||
.cmd = "fThreadInfo",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue