Hi! On Fri, 17 Feb 2017 16:45:01 +0000, Pedro Alves <pal...@redhat.com> wrote: > Only noticed this patch now.
Heh, and I've only now gotten back to completing this. ;-) > > On GNU/Hurd, there is no "#define PATH_MAX", so this fails to build. > > (I'm aware that there is other PATH_MAX usage in GDB sources, which we > > ought to fix at some point, for example in gdbserver -- which is not yet > > enabled for GNU/Hurd.) > > > > OK to push the following? (Similar to Svante's patch in > > <https://bugs.debian.org/834575>.) > > > > > > --- gdb/remote.c > > +++ gdb/remote.c > > @@ -6927,7 +6927,6 @@ Packet: '%s'\n"), > > else if (strprefix (p, p1, "exec")) > > { > > ULONGEST ignored; > > - char pathname[PATH_MAX]; > > int pathlen; > > > > /* Determine the length of the execd pathname. */ > > @@ -6936,11 +6935,12 @@ Packet: '%s'\n"), > > > > /* Save the pathname for event reporting and for > > the next run command. */ > > + char *pathname = (char *) xmalloc (pathlen + 1); > > hex2bin (p1, (gdb_byte *) pathname, pathlen); > > pathname[pathlen] = '\0'; > > > hex2bin can throw, so wrap with a cleanup: > > char *pathname = (char *) xmalloc (pathlen + 1); > struct cleanup *old_chain = make_cleanup (xfree, pathname); > hex2bin (p1, (gdb_byte *) pathname, pathlen); > pathname[pathlen] = '\0'; > discard_cleanups (old_chain); > > OK with that change. Thanks; pushed to master the attached commit b671c7fb21306ce125717a44c30a71686bd24db1 "[gdb, hurd] Avoid using 'PATH_MAX' in 'gdb/remote.c'". Grüße Thomas
>From b671c7fb21306ce125717a44c30a71686bd24db1 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge <tho...@codesourcery.com> Date: Fri, 17 Feb 2017 16:45:01 +0000 Subject: [PATCH] [gdb, hurd] Avoid using 'PATH_MAX' in 'gdb/remote.c' ..., which is not defined in GNU/Hurd systems, and so commit 94585166dfea8232c248044f9f4b1c217dc4ac2e "Extended-remote follow-exec" caused: [...]/gdb/remote.c: In member function 'void remote_target::remote_parse_stop_reply(const char*, stop_reply*)': [...]/gdb/remote.c:7343:22: error: 'PATH_MAX' was not declared in this scope char pathname[PATH_MAX]; ^~~~~~~~ gdb/ * remote.c (remote_target::remote_parse_stop_reply): Avoid using 'PATH_MAX'. --- gdb/ChangeLog | 6 ++++++ gdb/remote.c | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f2bbd77558..bb27f74de1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2019-02-14 Thomas Schwinge <tho...@codesourcery.com> + Pedro Alves <pal...@redhat.com> + + * remote.c (remote_target::remote_parse_stop_reply): Avoid using + 'PATH_MAX'. + 2019-02-14 David Michael <fedora....@gmail.com> Samuel Thibault <samuel.thiba...@gnu.org> Thomas Schwinge <tho...@codesourcery.com> diff --git a/gdb/remote.c b/gdb/remote.c index 18e678d07a..85af01e4b7 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -7340,7 +7340,6 @@ Packet: '%s'\n"), else if (strprefix (p, p1, "exec")) { ULONGEST ignored; - char pathname[PATH_MAX]; int pathlen; /* Determine the length of the execd pathname. */ @@ -7349,11 +7348,14 @@ Packet: '%s'\n"), /* Save the pathname for event reporting and for the next run command. */ + char *pathname = (char *) xmalloc (pathlen + 1); + struct cleanup *old_chain = make_cleanup (xfree, pathname); hex2bin (p1, (gdb_byte *) pathname, pathlen); pathname[pathlen] = '\0'; + discard_cleanups (old_chain); /* This is freed during event handling. */ - event->ws.value.execd_pathname = xstrdup (pathname); + event->ws.value.execd_pathname = pathname; event->ws.kind = TARGET_WAITKIND_EXECD; /* Skip the registers included in this packet, since -- 2.19.2