bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pushed][PATCH v3 1/4] Extended-remote follow exec


From: Thomas Schwinge
Subject: Re: [pushed][PATCH v3 1/4] Extended-remote follow exec
Date: Thu, 14 Feb 2019 17:42:34 +0100
User-agent: Notmuch/0.9-125-g4686d11 (http://notmuchmail.org) Emacs/25.2.2 (x86_64-pc-linux-gnu)

Hi!

On Fri, 17 Feb 2017 16:45:01 +0000, Pedro Alves <palves@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 <thomas@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  <thomas@codesourcery.com>
+           Pedro Alves  <palves@redhat.com>
+
+       * remote.c (remote_target::remote_parse_stop_reply): Avoid using
+       'PATH_MAX'.
+
 2019-02-14  David Michael  <fedora.dm0@gmail.com>
            Samuel Thibault  <samuel.thibault@gnu.org>
            Thomas Schwinge  <thomas@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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]