On Tue, Nov 5, 2024 at 7:41 AM Richard Henderson <
richard.henderson@linaro.org> wrote:
> 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 <iii@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.henderson@linaro.org>
>
Same.
Reviewed-by: Warner Losh <imp@bsdimp.com>