[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 10/17] gdbstub: Allow the %d placeholder in the socket path
From: |
Alex Bennée |
Subject: |
[PATCH v2 10/17] gdbstub: Allow the %d placeholder in the socket path |
Date: |
Fri, 7 Feb 2025 15:31:05 +0000 |
From: Ilya Leoshkevich <iii@linux.ibm.com>
Just like for QEMU_LOG_FILENAME, replace %d with PID in the GDB socket
path. This allows running multi-process applications with, e.g.,
export QEMU_GDB=/tmp/qemu-%d.sock. Currently this is not possible,
since the first process will cause the subsequent ones to fail due to
not being able to bind() the GDB socket.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20250117001542.8290-2-iii@linux.ibm.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
gdbstub/user.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/gdbstub/user.c b/gdbstub/user.c
index c2bdfc3d49..fd29d595f4 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -317,9 +317,19 @@ static bool gdb_accept_socket(int gdb_fd)
static int gdbserver_open_socket(const char *path)
{
+ g_autoptr(GString) buf = g_string_new("");
struct sockaddr_un sockaddr = {};
+ char *pid_placeholder;
int fd, ret;
+ pid_placeholder = strstr(path, "%d");
+ if (pid_placeholder != NULL) {
+ g_string_append_len(buf, path, pid_placeholder - path);
+ g_string_append_printf(buf, "%d", qemu_get_thread_id());
+ g_string_append(buf, pid_placeholder + 2);
+ path = buf->str;
+ }
+
fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (fd < 0) {
perror("create socket");
--
2.39.5
- Re: [PATCH v2 02/17] tests/qtest: don't attempt to clock_step while waiting for virtio ISR, (continued)
- [PATCH v2 05/17] tests/qtest: rename qtest_send_prefix and roll-up into qtest_send, Alex Bennée, 2025/02/07
- [PATCH v2 03/17] tests/qtest: don't step clock at start of npcm7xx periodic IRQ test, Alex Bennée, 2025/02/07
- [PATCH v2 11/17] gdbstub: Try unlinking the unix socket before binding, Alex Bennée, 2025/02/07
- [PATCH v2 08/17] tests/qtest/migration: Add --full option, Alex Bennée, 2025/02/07
- [PATCH v2 06/17] tests/qtest: tighten up the checks on clock_step, Alex Bennée, 2025/02/07
- [PATCH v2 04/17] tests/qtest: simplify qtest_process_inbuf, Alex Bennée, 2025/02/07
- [PATCH v2 16/17] docs/user: Document the %d placeholder and suspend=n QEMU_GDB features, Alex Bennée, 2025/02/07
- [PATCH v2 07/17] Revert "util/timer: avoid deadlock when shutting down", Alex Bennée, 2025/02/07
- [PATCH v2 10/17] gdbstub: Allow the %d placeholder in the socket path,
Alex Bennée <=
- [PATCH v2 13/17] user: Introduce host_interrupt_signal, Alex Bennée, 2025/02/07
- [PATCH v2 14/17] osdep: Introduce qemu_kill_thread(), Alex Bennée, 2025/02/07
- [PATCH v2 15/17] gdbstub: Allow late attachment, Alex Bennée, 2025/02/07
- [PATCH v2 12/17] user: Introduce user/signal.h, Alex Bennée, 2025/02/07
- [PATCH v2 09/17] tests/qtest/migration: Pick smoke tests, Alex Bennée, 2025/02/07
- [PATCH v2 17/17] tests/tcg: Add late gdbstub attach test, Alex Bennée, 2025/02/07