[RFA] Restore leading zeros in remote_thread_alive

Michael Snyder msnyder@vmware.com
Wed Oct 22 01:10:00 GMT 2008


Damn!  Please ignore the "skip spaces" diff.
Intended to be submitted as a separate patch tomorrow...

Michael Snyder wrote:
> Hi Pedro,
> 
> VMware has a remote target for which "info threads" stopped
> working after you added your remote multi-process patch in
> September.  I've finally got around to figuring out why.
> 
> The docs don't actually say whether this message should have
> leading zeros, but it always used to (you can check out the
> old sprintf spec).
> 
> If there's no compelling reason for removing them,
> do you mind if we put them back?   ;-)
> 
> 
> 
> ------------------------------------------------------------------------
> 
> 2008-10-21  Michael Snyder  <msnyder@vmware.com>
> 
> 	* remote.c (write_ptid): Emit leading zeros to preserve 
> 	remote protocol behavior of remote_thread_alive.
> 
> Index: remote.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/remote.c,v
> retrieving revision 1.321
> diff -u -p -r1.321 remote.c
> --- remote.c	17 Oct 2008 19:43:47 -0000	1.321
> +++ remote.c	22 Oct 2008 01:00:16 -0000
> @@ -1433,15 +1433,15 @@ write_ptid (char *buf, const char *endbu
>      {
>        pid = ptid_get_pid (ptid);
>        if (pid < 0)
> -	buf += xsnprintf (buf, endbuf - buf, "p-%x.", -pid);
> +	buf += xsnprintf (buf, endbuf - buf, "p-%08x.", -pid);
>        else
> -	buf += xsnprintf (buf, endbuf - buf, "p%x.", pid);
> +	buf += xsnprintf (buf, endbuf - buf, "p%08x.", pid);
>      }
>    tid = ptid_get_tid (ptid);
>    if (tid < 0)
> -    buf += xsnprintf (buf, endbuf - buf, "-%x", -tid);
> +    buf += xsnprintf (buf, endbuf - buf, "-%x08", -tid);
>    else
> -    buf += xsnprintf (buf, endbuf - buf, "%x", tid);
> +    buf += xsnprintf (buf, endbuf - buf, "%x08", tid);
>  
>    return buf;
>  }
> @@ -2097,6 +2097,10 @@ remote_threads_info (void)
>  	    {
>  	      do
>  		{
> +		  /* Skip spaces.  */
> +		  while (*bufp == ' ')
> +		    bufp++;
> +
>  		  new_thread = read_ptid (bufp, &bufp);
>  		  if (!ptid_equal (new_thread, null_ptid)
>  		      && (!in_thread_list (new_thread)



More information about the Gdb-patches mailing list