From: "Alex Bennée" <alex.bennee@linaro.org>
To: Dominik 'Disconnect3d' Czarnota <dominik.b.czarnota@gmail.com>
Cc: qemu-devel@nongnu.org, gustavo.romero@linaro.org,
richard.henderson@linaro.org, philmd@linaro.org,
manos.pitsidianakis@linaro.org,
Patryk 'patryk4815' Sondej <patryk.sondej@gmail.com>
Subject: Re: [PATCH] gdbstub: Implement qqemu.Pid packet
Date: Fri, 02 May 2025 14:18:11 +0100 [thread overview]
Message-ID: <87ecx7w3qk.fsf@draig.linaro.org> (raw)
In-Reply-To: <20250404102603.59936-1-dominik.b.czarnota@gmail.com> (Dominik Czarnota's message of "Fri, 4 Apr 2025 12:26:03 +0200")
Dominik 'Disconnect3d' Czarnota <dominik.b.czarnota@gmail.com> writes:
> This patch adds support for the `qqemu.Pid` packet to the qemu
> gdbstub which can be used by clients to get the QEMU process PID.
>
> This is useful for plugins like Pwndbg [0] or gdb-pt-dump in order to
> inspect the QEMU process memory through the /proc/self/{maps,mem}
> interfaces. Without this feature, they have to rely on doing an
> unreliable pgrep/ps output processing.
That seems a little thin a reason for QEMU to expose its own PID. For
user-mode you can already get that detail through anything using
gdb_append_thread_id().
For system-mode leaking QEMU's own pid seems like an information leak at
best. There are modes like semihosting which give a remote even more
power but you need to at least opt in to that.
>
> This patch has been developed by Patryk, who I included in the
> Co-authored-by and who asked me to send the patch.
>
> [0] https://github.com/pwndbg/pwndbg
> [1] https://github.com/martinradev/gdb-pt-dump
>
> Co-authored-by: Patryk 'patryk4815' Sondej <patryk.sondej@gmail.com>
> Signed-off-by: Dominik 'Disconnect3d' Czarnota <dominik.b.czarnota@gmail.com>
> ---
> gdbstub/gdbstub.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
> index 282e13e163..a077c2c5ed 100644
> --- a/gdbstub/gdbstub.c
> +++ b/gdbstub/gdbstub.c
> @@ -1746,6 +1746,12 @@ static void handle_query_qemu_supported(GArray *params, void *user_ctx)
> gdb_put_strbuf();
> }
>
> +static void handle_query_qemu_pid(GArray *params, void *user_ctx)
> +{
> + g_string_printf(gdbserver_state.str_buf, "F%x", getpid());
> + gdb_put_strbuf();
> +}
> +
> static const GdbCmdParseEntry gdb_gen_query_set_common_table[] = {
> /* Order is important if has same prefix */
> {
> @@ -1902,6 +1908,10 @@ static const GdbCmdParseEntry gdb_gen_query_table[] = {
> .handler = handle_query_qemu_supported,
> .cmd = "qemu.Supported",
> },
> + {
> + .handler = handle_query_qemu_pid,
> + .cmd = "qemu.Pid",
> + },
> #ifndef CONFIG_USER_ONLY
> {
> .handler = gdb_handle_query_qemu_phy_mem_mode,
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2025-05-02 13:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-04 10:26 [PATCH] gdbstub: Implement qqemu.Pid packet Dominik 'Disconnect3d' Czarnota
2025-05-02 13:18 ` Alex Bennée [this message]
2025-05-07 11:26 ` Dominik Czarnota
2025-05-07 13:38 ` 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=87ecx7w3qk.fsf@draig.linaro.org \
--to=alex.bennee@linaro.org \
--cc=dominik.b.czarnota@gmail.com \
--cc=gustavo.romero@linaro.org \
--cc=manos.pitsidianakis@linaro.org \
--cc=patryk.sondej@gmail.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.