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, 8 Dec 2016 12:54:36 +0100
User-agent: Notmuch/0.9-125-g4686d11 (http://notmuchmail.org) Emacs/24.5.1 (x86_64-pc-linux-gnu)

Hi!

On Fri, 11 Sep 2015 11:38:15 -0700, Don Breazeal <donb@codesourcery.com> wrote:
> Here is what I pushed.

> --- a/gdb/remote.c
> +++ b/gdb/remote.c

> @@ -6089,11 +6178,42 @@ Packet: '%s'\n"),
>             event->ws.kind = TARGET_WAITKIND_VFORK_DONE;
>             p = skip_to_semicolon (p1 + 1);
>           }
> +       else if (strncmp (p, "exec", p1 - p) == 0)
> +         {
> +           ULONGEST ignored;
> +           char pathname[PATH_MAX];
> +           int pathlen;
> +
> +           /* Determine the length of the execd pathname.  */
> +           p = unpack_varlen_hex (++p1, &ignored);
> +           pathlen = (p - p1) / 2;
> +
> +           /* Save the pathname for event reporting and for
> +              the next run command.  */
> +           hex2bin (p1, (gdb_byte *) pathname, pathlen);
> +           pathname[pathlen] = '\0';
> +
> +           /* This is freed during event handling.  */
> +           event->ws.value.execd_pathname = xstrdup (pathname);
> +           event->ws.kind = TARGET_WAITKIND_EXECD;
> +
> +           /* Skip the registers included in this packet, since
> +              they may be for an architecture different from the
> +              one used by the original program.  */
> +           skipregs = 1;
> +         }

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';
 
              /* 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


Grüße
 Thomas



reply via email to

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