Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jeff Johnston <jjohnstn@redhat.com>
To: Andrew Cagney <cagney@gnu.org>
Cc: Daniel Jacobowitz <drow@mvista.com>, gdb-patches@sources.redhat.com
Subject: Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
Date: Thu, 19 Feb 2004 22:53:00 -0000	[thread overview]
Message-ID: <40353C5F.2060909@redhat.com> (raw)
In-Reply-To: <400D9DAF.3020506@gnu.org>

Just to inform that the original patch has been checked in.

-- Jeff J.

Andrew Cagney wrote:
>>
>> My point is that we can _change_ the behavior of print.  I think that
>> it is reasonable for the process to be something like this:
>>   print /format expression
>>     Evaluate expression
>>     Expression has a type
>>      Examine the value of that type according to /format
>>       [interpret its bits as a double, or as hex, or whatever...]
>>
>> This isn't the first time this has come up, Jim (?) made a similar
>> suggestion some time ago for the case of ObjC.  I think that I
>> disagreed with it at the time, but I've got a history of being
>> inconsistent.
>>
>> Think about it.  What use do these have:
>>   p/f int_var
>>   p/x double_var
>>
>> None that I can see.  p (double) int_var is obviously <int_var>.0 in C,
>> and p/x (int) double_var is obviously 0x<truncate(double_var)>, but the
>> format specifiers don't add value.
> 
> 
> Apparent lack of value is not a bug.  Often its a sign of well thought 
> out design.
> 
> Consider:
>     struct st { int i:12; j:4; short s } stv = { 1, 2, 3 };
> (something that is currently causing the linux kernel grief - GCC 3.4 
> finally rejects typeof stv.i).  For:
>     (gdb) print stv
>     { 1, 2, 3}
>     (gdb) print/f stv
>     { 1.0, 2.0, 3.0 }
> GDB interprets stv.i and stv.j as _abstract_ values and then formats and 
> displays them accordingly.  At the same time for:
>     (gdb) x/b &stv
>     0x1234000:  0x00120003
> GDB displays the bits used in the underlying representation of stv.
> 
> The thing that is missing here, and I suspect at the time this code was 
> written was never thought to be a problem so ignored, is a mechanism for 
> examining / manipulating the underlying representation of a value that 
> is not sequentially laid out in memory.  For instance:
>     (gdb) ptype v
>     vector int i[4]
>     (gdb) print &v[1] - &v[0]
>     1
> should always work (that's valid C), only it doesn't when the value 
> isn't in memory:
>     (gdb) print &$mm0.v8_int8[1] - &$mm0.v8_int8[0]
>     Attempt to take address of value not located in memory.
> Similarly, it should be possible to interpret the underlying 
> representation of an arbitrary value vis (Eli, yes, /v doesn't exist):
>     (gdb) x/8c &$mm0
>     (gdb) x/f &$mm0.v2_int32[1]
> or with a new /v[alue] option (for want of a better letter):
>     (gdb) x/8vc $mm0
> but I suspect that getting & working, while harder, would be better.
> 
> Andrew
> 
> 
> 
> 
>>  Here's some value they could add.
>> Now, for ints vs. pointers it may be a little messier.
>>
>> This might even let me solve a long-standing complaint.  Given $r1 =
>> 0x62636566, I'd love to have a way to make gdb print "bcef".  Or "fceb"
>> or whatever else.  p/s $r1?  p/x 0x62636566?  Examine does an implicit
>> dereference and print doesn't, so this seems like a logical use of
>> printf.
>>
> 
> 
> 


      reply	other threads:[~2004-02-19 22:53 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-12 20:36 Jeff Johnston
2003-12-12 22:17 ` Kevin Buettner
2003-12-12 23:05   ` Daniel Jacobowitz
2003-12-13  0:55   ` J. Johnston
2004-01-19 22:23     ` J. Johnston
2004-01-19 22:57       ` Andrew Cagney
2004-01-19 23:18         ` Daniel Jacobowitz
2004-01-19 23:27           ` Kevin Buettner
2004-01-20  0:41           ` Andrew Cagney
2004-01-20  1:22             ` Daniel Jacobowitz
     [not found]               ` <400C8CC0.3040706@gnu.org>
2004-01-20  5:48                 ` Daniel Jacobowitz
2004-01-20  6:55                   ` Eli Zaretskii
2004-01-20 14:52                     ` Daniel Jacobowitz
2004-01-20 19:15                       ` Eli Zaretskii
2004-01-20 19:33                         ` Daniel Jacobowitz
2004-01-20 20:32                           ` Eli Zaretskii
2004-01-20 16:50                     ` Andrew Cagney
2004-01-20 19:10                       ` Eli Zaretskii
2004-01-20 21:29                   ` Andrew Cagney
2004-02-19 22:53                     ` Jeff Johnston [this message]

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=40353C5F.2060909@redhat.com \
    --to=jjohnstn@redhat.com \
    --cc=cagney@gnu.org \
    --cc=drow@mvista.com \
    --cc=gdb-patches@sources.redhat.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