Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: Andrew Cagney <ac131313@redhat.com>
Cc: Michal Ludvig <mludvig@suse.cz>,
	GDB Patches <gdb-patches@sources.redhat.com>
Subject: Re: [RFA] Artifical dwarf2 debug info
Date: Mon, 16 Dec 2002 10:17:00 -0000	[thread overview]
Message-ID: <20021216181104.GA21047@nevyn.them.org> (raw)
In-Reply-To: <3DFE14D9.7040102@redhat.com>

On Mon, Dec 16, 2002 at 01:00:57PM -0500, Andrew Cagney wrote:
> 
> >That's right.
> >
> >
> >>If that is the case then I don't think this is either necessary or 
> >>correct.  A `struct frame_info' allows frame specific unwind functions - 
> >>at present only dummy-frame and saved-regs-frame versions are 
> >>implemented, however the next ones to implement are cfi-frame (unwind 
> >>using CFI info) and regs-frame (unwind using the register cache).
> >>
> >>For your problem, wouldn't it be better to, instead of creating fake CFI 
> >>info, implement custom frame unwind functions that handle your case?
> >
> >
> >Hrm.  What do you mean by regs-frame?  If it's for the current frame
> >wouldn't that be a frame which just doesn't unwind?
> 
> A frame that gets the saved registers from the register cache.  As for uses:
> - an inner-most frame that for some reason doesn't unwind (i.e., 
> create_new_frame() barfs).
> - the frame that is inner to `current frame'.

I'm confused again :)

"Current frame" is one which does not unwind, right?  No saved PC, no
saved registers.  The concepts are meaningless.  Its frame ID
corresponds (very) loosely to the current stack pointer.  This would be
frame #0 in a backtrace.  There's nothing inside of it.

Or are you saying that the innermost frame is this special regs-frame,
and the current frame (still #0) is outside of that?  OK, that jives
with some things I remember you describing earlier.  Makes sense now.

I don't see what you mean by "doesn't unwind", since we always start
with having the current frame (i.e. there would be at least two) but I
think I'm back on your page again.

> >As for this situation, and the similar one for i386... there are three
> >unwind functions, to find the previous frame's registers, ID, and PC.
> >For this case we just want to express a normal function call which
> >saves no registers; pretty easy.  But for i386 I'll want to express
> >something which initially pushes a register, and then does some work,
> >pops it, and does more work before returning.
> 
> So you're proposing that the saved-regs code be used to generate a cfi 
> description as well?
> 
> Interesting.

Precisely.  When given a function without enough information to
backtrace through it in the debug info, the prologue scanner could
implement this new method in order to provide backtraces.  It could
really clear up some messes.

I think it's a promising idea.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


  reply	other threads:[~2002-12-16 18:10 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-14 17:31 Michal Ludvig
2002-12-14 22:53 ` Eli Zaretskii
2002-12-15 11:03 ` Daniel Jacobowitz
2002-12-16  7:28   ` Michal Ludvig
2002-12-16  7:49     ` Daniel Jacobowitz
2002-12-16  9:27       ` Michal Ludvig
2002-12-16  9:54         ` Daniel Jacobowitz
2002-12-16 10:38         ` Eli Zaretskii
2002-12-20  8:43           ` Michal Ludvig
2002-12-20 10:51             ` Eli Zaretskii
2002-12-16  9:25 ` Andrew Cagney
2002-12-16  9:40   ` Daniel Jacobowitz
2002-12-16 10:04     ` Andrew Cagney
2002-12-16 10:17       ` Daniel Jacobowitz [this message]
2002-12-16 10:56         ` Andrew Cagney
2002-12-16 11:13           ` Daniel Jacobowitz
2002-12-16 11:34             ` Andrew Cagney
2002-12-16 11:57               ` Daniel Jacobowitz
2002-12-16 12:10                 ` Andrew Cagney
2002-12-16 12:42                   ` Daniel Jacobowitz
2002-12-17  6:23                     ` Michal Ludvig
2002-12-17  6:28                       ` Andrew Cagney
2002-12-17  8:42                         ` Daniel Jacobowitz
2002-12-18  4:39                           ` Andrew Cagney
2002-12-18 10:05                             ` Daniel Jacobowitz
2003-01-02 20:54                               ` Andrew Cagney
2003-01-02 21:19                                 ` Daniel Jacobowitz
2003-01-02 23:05                                   ` Andrew Cagney
2003-01-02 23:27                                     ` Daniel Jacobowitz
2003-01-03  0:28                                       ` Andrew Cagney
2002-12-16  9:46   ` Michal Ludvig
2002-12-16  9:57     ` Andrew Cagney
2002-12-16 10:01       ` Michal Ludvig

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=20021216181104.GA21047@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=ac131313@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=mludvig@suse.cz \
    /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