Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jeffrey A Law <law@cygnus.com>
To: "Ben Combee" <bcombee@metrowerks.com>
Cc: "Jim Blandy" <jimb@cygnus.com>,
	egcs@egcs.cygnus.com, gdb@sourceware.cygnus.com
Subject: Re: IA32: printing FP register variables
Date: Thu, 08 Jul 1999 22:04:00 -0000	[thread overview]
Message-ID: <4220.931496340@upchuck.cygnus.com> (raw)
In-Reply-To: <000d01bec9c2$06f4fdb0$3404010a@metrowerks.com>

  In message < 000d01bec9c2$06f4fdb0$3404010a@metrowerks.com >you write:
  > I would suggest that we may use a "negative" ST value.  The debugger can
  > always know the depth of the stack from reading the status registers, so
  > saying that something was in ST(7) could be interpreted as the top-most
  > stack item, ST(6) as one below that, and so on.  As long as the relative
  > position of items on the stack didn't change (this var is always 2 from the
  > top), this should be OK.
Unfortunately, I believe the relative positions of items does change.

Jim's brought up an interesting problem.

I believe dwarf2 can handle this in a straightforward manner -- it has the
capability to say variable X is in location Y between points A & B and in
location Z between points C & D.

This is more difficult to do with stabs, but possible since Cygnus defined a
set of extensions to describe the same basic concepts.

The more difficult problem is getting information about the state of the
FP regstack  into dwarf2out.c & dbxout.c in a reasonably clean manner.

jeff
dbxout.c 
clean manner 
same mechanisms 


  > 
  > --
  > Ben Combee, x86/Win32/Novell/Linux CompilerWarrior
  > http://www.metrowerks.com/
  > ----- Original Message -----
  > From: Jim Blandy <jimb@cygnus.com>
  > To: <egcs@egcs.cygnus.com>; <gdb@sourceware.cygnus.com>
  > Sent: Thursday, July 08, 1999 10:56 PM
  > Subject: IA32: printing FP register variables
  > 
  > 
  > >
  > > This is a question about how GDB should grok code produced by GCC, so
  > > I'm posting it to both lists.
  > >
  > > On IA32 processors, how should GDB find the values of variables which
  > > live in floating-point registers?  At the moment, it can't do this
  > > reliably, which must be a royal pain for people doing numeric work.
  > >
  > > It's a non-trivial problem.  GCC simply places the variables on the
  > > top of the FP stack, so which physical FP registers receive them
  > > depends on the value of the floating-point stack pointer upon entry to
  > > the function.  And since GCC uses the floating-point stack to hold
  > > temporary values, a variable's offset from the stack pointer changes
  > > as the function executes.
  > >
  > > This makes it difficult for GDB to find a variable's value as the
  > > function executes.  In order to find a variable, it needs to know how
  > > many intermediate results are presently above it on the stack.  GCC
  > > knows this, but doesn't give GDB any hints about it in the debugging
  > > info.
  > >
  > > What does the register number which GCC emits now mean?  If an N_RSYM
  > > stab has a value of 8, what does that mean?  ST(0)?  When?  Every
  > > variable is ST(0) when it's just been pushed.
  > >
  > > Should GCC emit more debug info, to help GDB find variables?
  > >
  > > Should GDB derive this info on its own?  It could disassemble the
  > > function, starting from the end of the prologue, and count pushes and
  > > pops, building a table mapping PC values onto stack depths.  (This
  > > assumes that the stack depth is constant at a given PC.)  That would
  > > require no debug info, but would be a pain to implement.
  > >
  > 
  > 



  parent reply	other threads:[~1999-07-08 22:04 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-07-08 20:56 Jim Blandy
1999-07-08 22:12 ` Jeffrey A Law
     [not found] ` <000d01bec9c2$06f4fdb0$3404010a@metrowerks.com>
1999-07-08 22:04   ` Jeffrey A Law [this message]
1999-07-09  7:04     ` Michael Meissner
1999-07-10 11:00       ` Tom Tromey
1999-07-09 10:53   ` Jim Blandy
     [not found] <199907091724.SAA31114@phal.cygnus.co.uk>
     [not found] ` <00d401beca31$3d752c10$3404010a@metrowerks.com>
1999-07-09 10:52   ` Jeffrey A Law
1999-07-09 13:50   ` Jim Blandy
1999-07-09 14:00 Michael Meissner
     [not found] <400.931648196@upchuck.cygnus.com>
     [not found] ` <np908ljwht.fsf@zwingli.cygnus.com>
     [not found]   ` <9209.931822541@upchuck.cygnus.com>
1999-07-12 16:50     ` Joern Rennecke
1999-07-12 17:18     ` Robert Lipe
1999-07-12 19:40   ` Richard Henderson
     [not found]     ` <np3dysi9gh.fsf@zwingli.cygnus.com>
1999-07-13 16:05       ` Richard Henderson
     [not found] <9500.931826533@upchuck.cygnus.com>
     [not found] ` <np1zeci6tm.fsf@zwingli.cygnus.com>
     [not found]   ` <npn1ws2xp1.fsf@zwingli.cygnus.com>
1999-07-19 23:41     ` Richard Henderson
1999-07-26 11:43       ` Jim Blandy
1999-07-26 13:15         ` Richard Henderson

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=4220.931496340@upchuck.cygnus.com \
    --to=law@cygnus.com \
    --cc=bcombee@metrowerks.com \
    --cc=egcs@egcs.cygnus.com \
    --cc=gdb@sourceware.cygnus.com \
    --cc=jimb@cygnus.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