Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Stan Shebs <stan@codesourcery.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Stan Shebs <stan@codesourcery.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] Tracepoint source strings
Date: Fri, 26 Mar 2010 17:51:00 -0000	[thread overview]
Message-ID: <4BACF406.7080701@codesourcery.com> (raw)
In-Reply-To: <83aatvh4pf.fsf@gnu.org>

Eli Zaretskii wrote:
>>   struct breakpoint *
>>   create_tracepoint_from_upload (struct uploaded_tp *utp)
>>   {
>> !   char *addr_str, small_buf[100];
>>   [...]
>> !       sprintf (small_buf, "*%s", hex_string (utp->addr));
>>     
>
> Tz-tz-tz... Using a constant-size buffer in sprintf without any check
> for overflow?  Are you sure that calling the buffer ``small'' will
> magically keep you from trouble? ;-)
>   

Presumably even a hypothetical future 128-bit address won't need more 
than 65 chars to print. :-)

>> !   if (utp->cond && !utp->cond_string)
>> !     warning ("Uploaded tracepoint %d condition has no source form, ignoring it",
>>     
>
> What about _() ?
>
>   

Oops, yeah.

>
>> + void
>> + encode_source_string (int tpnum, ULONGEST addr,
>> + 		      char *srctype, char *src, char *buf)
>> + {
>> +   sprintf (buf, "%x:%s:%s:%x:%x:",
>> + 	   tpnum, phex_nz (addr, sizeof (addr)), srctype, 0, (int) strlen (src));
>>     
>
> Again, sprintf on a buffer whose size is not even known.
>   

Hmmm, I'll see what I can do.

>>     written = fwrite ("\x7fTRACE0\n", 8, 1, fp);
>> !   if (written < 8)
>>       perror_with_name (pathname);
>>   
>>     /* Write descriptive info.  */
>> --- 2468,2474 ----
>>        binary file, plus a hint as what this file is, and a version
>>        number in case of future needs.  */
>>     written = fwrite ("\x7fTRACE0\n", 8, 1, fp);
>> !   if (written < 1)
>>       perror_with_name (pathname);
>>     
>
> Why did you change this to accept partial writes?
>   

I was hoping to fix a major brain cramp of mine without anybody noticing 
- oh well. :-)  The two numeric arguments to fwrite are semi-redundant a 
la calloc, and the return result is based on the *second* argument, 
which is the number of "items".  The other way to fix is to swap the two 
arguments; about the only advantage of this way is that we always test 
against 1, instead of repeating the fwrite argument.

>> + Specify a source string of tracepoint @var{n} at address @var{var}.
>>     
>                                                              ^^^^^^^^^
> You meant @var{addr}, I presume.
>
> Anyway, can we have several tracepoints with the same number?  If not,
> why do we need to give the address as well?
>   

Yes and yes.

>>                                       such as @samp{cond} for the
>> + conditional expression
>>     
>
> Conditional expression for what or from where?  I'm guessing this is
> somehow related to the original definition of the tracepoint, but
> please connect the dots more explicitly.
>   

Yes, it's the tracepoint's condition, I can make an xref.  I tend to 
think we can be a little more abbreviated when describing the protocol, 
because presumably anybody writing a target agent is going to know GDB 
concepts pretty well.

>> + @value{GDBN} issues a separate packet, in order, for each command in a
>> + list.
>>     
>
> What list?
>   

Command list.

>>          The target does not need to do anything with source strings
>> + except report them back as part of the @samp{qTfP}/@samp{qTsP}
>> + queries.
>>     
>
> "As part of queries" or as part or _responses_?
>   

As part of replies.  I've glossed over details of the qT[fs]P reply to 
date, so as to not to have to rewrite so much as the rest of the 
tracepoint patches go in.  The grand plan is that there is a notion of 
"tracepoint description" with a syntax that is common between remote 
download, remote upload, and trace file, and it should go into its own 
section that is referenced from both protocol and file format descriptions.

Stan


  reply	other threads:[~2010-03-26 17:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-25 22:01 Stan Shebs
2010-03-26  8:24 ` Eli Zaretskii
2010-03-26 17:51   ` Stan Shebs [this message]
2010-03-26 18:03     ` Eli Zaretskii
2010-03-26 18:38       ` Stan Shebs
2010-03-26 20:02         ` Eli Zaretskii
2010-03-30 13:18 ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BACF406.7080701@codesourcery.com \
    --to=stan@codesourcery.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox