Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Stan Shebs <stan@codesourcery.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org, Stan Shebs <stan@codesourcery.com>
Subject: Re: [PATCH] Handle errors in tracepoint target agent
Date: Thu, 25 Mar 2010 22:30:00 -0000	[thread overview]
Message-ID: <4BABE407.30609@codesourcery.com> (raw)
In-Reply-To: <201003251027.14862.pedro@codesourcery.com>

Pedro Alves wrote:
> On Thursday 25 March 2010 00:48:41, Stan Shebs wrote:
>
>   
>> But before committing, I want to get feedback on what to do about a 
>> protocol mistake I made with this one; the descriptive string is 
>> included verbatim in the status packet, which means that it can't have 
>> colons embedded, and probably other characters.  There are a couple ways 
>> to fix - encode the string in hex, or add a length prefix.
>>     
>
> IMO, we should hex encode the string, like we do for other
> protocol transfered user visible strings.
>   
Yeah, it's the safe thing to do.  It would be a minor convenience to 
have the info be readable text, so you could understand it at a glance 
when looking at the raw packet or trace file.
>> The problem is that this feature has been in Ericsson's hands for awhile, bolted 
>> into their application already I think, and so there is a compatibility 
>> issue.  We do have the list of strings that their agent returns, and we 
>> could say for instance that a leading numeric digit is assumed to 
>> indicate a length field, otherwise it's handled verbatim.  On the flip 
>> side, this all is getting rather arcane, so maybe I'm worrying too much 
>> about it.  What do people think?
>>     
>
> IIRC, we've had similar issues before, and the decision tends to be to
> fix the mistake in the FSF version, and worry about backwards compatility
> in the local versions (Ericsson's gdb, in this case).  I think this should
> work: try to hex2bin the string, and if that doesn't consume the whole
> buffer up to ':', then we have a non-hex encoded string.  We're still
> adding features for Ericsson, so with time there's good chance the
> old version will disappear from their systems.
>   
And hopefully no one returns "deadbeef" as their error message. :-)
>   
>> +         if (ts->stopping_tracepoint)
>> +           printf_filtered (_("Trace stopped by an error (%s, tracepoint %d).\n"),
>> +                            (ts->error_desc ? ts->error_desc : ""),
>>     
>
> This doesn't assume error_desc is always non-NULL,
>   
A last-minute waffle - alway non-NULL is a reasonable assumption in this 
context, but I always worry that a devious programmer will get around it 
somehow. :-)
>> +   /* Dump the size of the R (register) blocks in traceframes.  */
>> +   snprintf (spbuf, sizeof spbuf, "R %x\n", 500 /* FIXME get from arch */);
>> +   write (fd, spbuf, strlen (spbuf));
>>     
>
> FIXME?  If not important, or if this just need to be as big enough
> to cope with all supported archs, then we should drop the FIXME note,
> and explain that instead.
>   
I was thinking somebody might know of a clever way for the compiler to 
get it into the test program...
>> +   /* Write end of tracebuffer marker.  */
>> +   *((short *) trptr) = 0;
>> +   trptr += sizeof (short);
>> +   *((int *) trptr) = 0;
>> +   trptr += sizeof (int);
>>     
>
> Please don't add code like this.  These casts and
> dereferences tend to work on x86, because that arch can
> write to unaligned addresses.  Most others can't.  This should
> do memset instead.  Assuming short is 2 bytes and int is 4
> isn't supper portable either, but it will be a while longer
> to trip on that.
>   
The file format prescribes exact sizes for its elements, so memset is a 
good idea.

Stan


  reply	other threads:[~2010-03-25 22:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-25  0:48 Stan Shebs
2010-03-25  4:18 ` Eli Zaretskii
2010-03-25 10:27 ` Pedro Alves
2010-03-25 22:30   ` Stan Shebs [this message]
2010-03-25 22:42     ` Pedro Alves
2010-03-25 23:06       ` Stan Shebs

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=4BABE407.30609@codesourcery.com \
    --to=stan@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedro@codesourcery.com \
    /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