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
next prev parent 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