[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 10/18] gdbstub: Allow the %d placeholder in the socket path
From: |
Alex Bennée |
Subject: |
[PATCH 10/18] gdbstub: Allow the %d placeholder in the socket path |
Date: |
Mon, 3 Feb 2025 14:40:40 +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
- [PATCH 00/18] maintainer updates for feb25 (qtest, gdbstub, plugins), Alex Bennée, 2025/02/03
- [PATCH 03/18] tests/qtest: don't step clock at start of npcm7xx periodic IRQ test, Alex Bennée, 2025/02/03
- [PATCH 01/18] tests/docker: replicate the check-rust-tools-nightly CI job, Alex Bennée, 2025/02/03
- [PATCH 02/18] tests/qtest: don't attempt to clock_step while waiting for virtio ISR, Alex Bennée, 2025/02/03
- [PATCH 05/18] tests/qtest: rename qtest_send_prefix and roll-up into qtest_send, Alex Bennée, 2025/02/03
- [PATCH 04/18] tests/qtest: simplify qtest_process_inbuf, Alex Bennée, 2025/02/03
- [PATCH 10/18] gdbstub: Allow the %d placeholder in the socket path,
Alex Bennée <=
- [PATCH 07/18] Revert "util/timer: avoid deadlock when shutting down", Alex Bennée, 2025/02/03
- [PATCH 14/18] osdep: Introduce qemu_kill_thread(), Alex Bennée, 2025/02/03
- [PATCH 06/18] tests/qtest: tighten up the checks on clock_step, Alex Bennée, 2025/02/03
- [PATCH 12/18] user: Introduce user/signal.h, Alex Bennée, 2025/02/03
- [PATCH 08/18] tests/qtest/migration: Add --full option, Alex Bennée, 2025/02/03
- [PATCH 13/18] user: Introduce host_interrupt_signal, Alex Bennée, 2025/02/03
- [PATCH 15/18] gdbstub: Allow late attachment, Alex Bennée, 2025/02/03
- [PATCH 11/18] gdbstub: Try unlinking the unix socket before binding, Alex Bennée, 2025/02/03