From: Orjan Friberg <orjan.friberg@axis.com>
To: Andrew Cagney <cagney@gnu.org>
Cc: gdb-patches@sources.redhat.com
Subject: Re: CRIS port; frame cleanup crash
Date: Sat, 14 Feb 2004 13:38:00 -0000 [thread overview]
Message-ID: <402E24DC.8060006@axis.com> (raw)
In-Reply-To: <402BDCDF.5040506@gnu.org>
Andrew Cagney wrote:
>
> The term "unwind" is used by the dwarf-2 specification.
> http://www.eagercon.com/dwarf/dwarf3std.htm
> it includes a working example in the appendix.
Excellent, thanks a lot. Section 6.4 regarding Call Frame Information
cleared up some of the confusion regarding unwinding.
> The important thing is to "dig out" the register from the correct frame.
> frame_unwind_register (next_frame, "pc") will "dig out" the PC from the
> next frame (often found in next frame's link register) returning the
> value as it should be in "this_frame".
This explanation has me slightly puzzled. I gather from the code that
"PC" refers to the current program location within a frame, and not an
actual CPU register. Is "next" synonymous with "outer" in your
explanation above? (Perhaps a stupid question; maybe unwind by
definition works on the outer frame/caller.) And "link register" I
assume is the equivalent of a subroutine return pointer.
Approaching it from another direction, what would be a good test to see
if the unwind code works correctly? At present, step (into function
calls), next (over function calls), finish, and backtrace seem to work
ok for both leaf- and non-leaf-functions (for CRIS the prologue differs
slightly as the SRP isn't pushed in case of a leaf function). Is there
any particular existing testcase that would be good at detecting errors
in the frame code?
Another question: should I hook in the dwarf-2 frame sniffer from the
very beginning? Or wait until the other stuff seems to be working ok?
Thanks,
Orjan
--
Orjan Friberg
Axis Communications
next prev parent reply other threads:[~2004-02-14 13:38 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-11 13:30 Orjan Friberg
2003-08-12 15:11 ` Orjan Friberg
2003-08-12 17:36 ` Andrew Cagney
2003-08-13 10:17 ` Orjan Friberg
2004-02-12 18:59 ` Orjan Friberg
2004-02-12 20:06 ` Andrew Cagney
2004-02-14 13:38 ` Orjan Friberg [this message]
2004-02-14 14:52 ` Andrew Cagney
2004-02-15 17:41 ` Orjan Friberg
2004-02-16 18:19 ` Orjan Friberg
2004-02-16 18:43 ` Andrew Cagney
2004-02-18 17:06 ` Orjan Friberg
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=402E24DC.8060006@axis.com \
--to=orjan.friberg@axis.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