qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Dominik 'Disconnect3d' Czarnota" <dominik.b.czarnota@gmail.com>,
	"Patryk 'patryk4815' Sondej" <patryk.sondej@gmail.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PULL 16/17] gdbstub: Implement qGDBServerVersion packet
Date: Thu,  5 Jun 2025 17:26:49 +0100	[thread overview]
Message-ID: <20250605162651.2614401-17-alex.bennee@linaro.org> (raw)
In-Reply-To: <20250605162651.2614401-1-alex.bennee@linaro.org>

From: Dominik 'Disconnect3d' Czarnota <dominik.b.czarnota@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.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>

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
+    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",
-- 
2.47.2



  parent reply	other threads:[~2025-06-05 16:35 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-05 16:26 [PULL 00/17] maintainer updates for May (testing, plugins, virtio-gpu) Alex Bennée
2025-06-05 16:26 ` [PULL 01/17] tests/docker: expose $HOME/.cache/qemu as docker volume Alex Bennée
2025-06-05 16:26 ` [PULL 02/17] gitlab: disable debug info on CI builds Alex Bennée
2025-06-05 16:26 ` [PULL 03/17] tests/tcg: make aarch64 boot.S handle different starting modes Alex Bennée
2025-06-05 16:26 ` [PULL 04/17] tests/qtest: Avoid unaligned access in IGB test Alex Bennée
2025-06-06  9:29   ` Akihiko Odaki
2025-06-05 16:26 ` [PULL 05/17] contrib/plugins: add a scaling factor to the ips arg Alex Bennée
2025-06-05 16:26 ` [PULL 06/17] contrib/plugins: allow setting of instructions per quantum Alex Bennée
2025-06-05 16:26 ` [PULL 07/17] MAINTAINERS: add myself to virtio-gpu for Odd Fixes Alex Bennée
2025-06-05 16:26 ` [PULL 08/17] MAINTAINERS: add Akihiko and Dmitry as reviewers Alex Bennée
2025-06-05 16:26 ` [PULL 09/17] hw/display: re-arrange memory region tracking Alex Bennée
2025-06-06  5:17   ` Akihiko Odaki
2025-06-06  9:54     ` Alex Bennée
2025-06-06 10:31       ` Akihiko Odaki
2025-06-06 11:31         ` Alex Bennée
2025-06-06 15:06           ` Akihiko Odaki
2025-06-05 16:26 ` [PULL 10/17] virtio-gpu: refactor async blob unmapping Alex Bennée
2025-06-08  8:16   ` Akihiko Odaki
2025-06-05 16:26 ` [PULL 11/17] ui/gtk-gl-area: Remove extra draw call in refresh Alex Bennée
2025-06-05 16:26 ` [PULL 12/17] virtio-gpu: support context init multiple timeline Alex Bennée
2025-06-08  8:23   ` Akihiko Odaki
2025-06-20  2:07     ` Yiwei Zhang
2025-06-20  6:45       ` Alex Bennée
2025-06-20 19:47         ` Yiwei Zhang
2025-06-21  5:59           ` Akihiko Odaki
2025-06-05 16:26 ` [PULL 13/17] include/exec: fix assert in size_memop Alex Bennée
2025-06-08  8:29   ` Akihiko Odaki
2025-06-05 16:26 ` [PULL 14/17] include/gdbstub: fix include guard in commands.h Alex Bennée
2025-06-05 16:26 ` [PULL 15/17] gdbstub: assert earlier in handle_read_all_regs Alex Bennée
2025-06-05 16:26 ` Alex Bennée [this message]
2025-06-05 16:26 ` [PULL 17/17] gdbstub: update aarch64-core.xml Alex Bennée
2025-06-06 13:45 ` [PULL 00/17] maintainer updates for May (testing, plugins, virtio-gpu) Stefan Hajnoczi
2025-06-07 15:44   ` Alex Bennée

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250605162651.2614401-17-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=dominik.b.czarnota@gmail.com \
    --cc=patryk.sondej@gmail.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).