On 10/24/24 20:59, Ilya Leoshkevich wrote:
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.

Signed-off-by: Ilya Leoshkevich <i...@linux.ibm.com>
---
  gdbstub/user.c | 10 ++++++++++
  1 file changed, 10 insertions(+)

diff --git a/gdbstub/user.c b/gdbstub/user.c
index 0b4bfa9c488..cdf5affae15 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -316,9 +316,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", getpid());

qemu_get_thread_id().

Otherwise,
Reviewed-by: Richard Henderson <richard.hender...@linaro.org>


r~

Reply via email to