Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: Eli Zaretskii <eliz@elta.co.il>
Cc: cagney@gnu.org, gdb-patches@sources.redhat.com
Subject: Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
Date: Tue, 20 Jan 2004 14:52:00 -0000	[thread overview]
Message-ID: <20040120145225.GA10459@nevyn.them.org> (raw)
In-Reply-To: <2427-Tue20Jan2004085108+0200-eliz@elta.co.il>

On Tue, Jan 20, 2004 at 08:51:09AM +0200, Eli Zaretskii wrote:
> > Date: Tue, 20 Jan 2004 00:48:36 -0500
> > From: Daniel Jacobowitz <drow@mvista.com>
> > 
> > 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.
> 
> May I wave the truce flag here?

By all means :)

> Daniel, do you object to having the feature you wanted in `x', rather
> than in `print'?  If you do, could you please explain why?

Because, at the moment, we have a common syntax shared by print and
examine - but some of the options don't make sense (I claim) for print. 
But they do all make sense for examine.  Witness:

(gdb) help x
Examine memory: x/FMT ADDRESS.

For a double located in memory, you can already do x/2x &double_var,
and I often do.  You can't apply & to a register; I suppose that would
be another reasonable alternative, but that changes the C expression
syntax instead of the syntax of a specific GDB command, and I don't
much fancy the idea.  You can't apply & to a constant, either.  I've
wanted to do p/x 2.0 and have some way to get the representation out
from that.  Right now the only way I know is:
(gdb) set *(double *)($sp - 1024) = 2.0
(gdb) x/2x $sp - 1024

Which I try to avoid doing, for obvious reasons.

> If having this on `x' is not something we agree to, how about a
> `maint' command, or a new format letter for `print' that would
> specifically be designed to reveal the bit pattern of the value as it
> would be stored in memory?

I don't think that it is a maintenance command - see my example about
p/s 0x62636566.  I also think that adding a new print format flag that
examines without changing the existing ones will be more confusing.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


  reply	other threads:[~2004-01-20 14:52 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 [this message]
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=20040120145225.GA10459@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=cagney@gnu.org \
    --cc=eliz@elta.co.il \
    --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