Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: Andrew Cagney <cagney@gnu.org>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
Date: Tue, 20 Jan 2004 05:48:00 -0000	[thread overview]
Message-ID: <20040120054836.GA23548@nevyn.them.org> (raw)
In-Reply-To: <400C8CC0.3040706@gnu.org>

On Mon, Jan 19, 2004 at 09:04:48PM -0500, Andrew Cagney wrote:
> >(gdb) print/x doublevar
> >>>$1 = 0xc000000000000000
> >>>(gdb) print/i doublevar
> >>>???? [no preference really]
> >
> >>
> >>No.  That would be wrong.  print/<format> prints the value (not the 
> >>implementation) using the specified format.  Being able to examine the 
> >>underlying implementation in various formats is more of an "examine" 
> >>command.
> >
> >
> >Andrew, please explain to us all how you can respond to "I think this
> >would be a better, different-than-the-current behavior" with "No, that
> >would be wrong".
> 
> "us all"?

Yes, since "That would be wrong" is a pretty sweeping policy statement
for GDB.  It indicates the existance of an absolute standard that we
need to adhere to.  If there is one, I've missed it, please add it to
the manual.

> "print" displays the value, not the underlying representation, using 
> normal language rules. Consider:
> 	int i = 1.0;
> 	extern foo (int i);
> 	foo (1.0:
> which don't leave something like 0xc0000000 in i.  On the other hand 

So if you use no format characters, you'll get the expected result.  I
think at least one word is missing from the above example...

> "examine" lets you display the underlying [memory] representation in 
> various forms.
> 
> The problem here is not print/f, but rather that there isn't way to 
> examine the underlying representation of non-memory values (most often 
> registers) this leaves people attempting:
> 	x/x $fp0
> and then:
> 	p/x $fp0
> :-(

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.  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.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


  parent reply	other threads:[~2004-01-20  5:48 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 [this message]
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

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=20040120054836.GA23548@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=cagney@gnu.org \
    --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