aboutsummaryrefslogtreecommitdiff
path: root/gdb/frame-unwind.h
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2004-11-09 01:16:42 +0000
committerAndrew Cagney <cagney@redhat.com>2004-11-09 01:16:42 +0000
commitcbafadeb88b139e212f4e453a8f93304c813b2df (patch)
tree39958aeb28a32b2b09ed71a4eabe0c968b27fc81 /gdb/frame-unwind.h
parenta77a9021ea85cf83d077a32391e682c6320adc88 (diff)
downloadgdb-cbafadeb88b139e212f4e453a8f93304c813b2df.zip
gdb-cbafadeb88b139e212f4e453a8f93304c813b2df.tar.gz
gdb-cbafadeb88b139e212f4e453a8f93304c813b2df.tar.bz2
2004-11-08 Andrew Cagney <cagney@gnu.org>
* sentinel-frame.c (sentinel_frame_prev_pc): New function. (sentinel_frame_unwinder): Add the prev_pc method. * frame.c (frame_pc_unwind): Use the per-frame pc unwinder when available. Do not handle the sentinel-frame case. * frame-unwind.h (frame_prev_register_ftype): Define. (struct frame_unwind): Add prev_pc;
Diffstat (limited to 'gdb/frame-unwind.h')
-rw-r--r--gdb/frame-unwind.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/frame-unwind.h b/gdb/frame-unwind.h
index 12d6dd2..74c0a4a 100644
--- a/gdb/frame-unwind.h
+++ b/gdb/frame-unwind.h
@@ -118,6 +118,14 @@ typedef void (frame_prev_register_ftype) (struct frame_info *next_frame,
CORE_ADDR *addrp,
int *realnump, void *valuep);
+/* Assuming the frame chain: (outer) prev <-> this <-> next (inner);
+ use the NEXT frame, and its register unwind method, to return the PREV
+ frame's program-counter. */
+
+typedef CORE_ADDR (frame_prev_pc_ftype) (struct frame_info *next_frame,
+ void **this_prologue_cache);
+
+
struct frame_unwind
{
/* The frame's type. Should this instead be a collection of
@@ -129,6 +137,7 @@ struct frame_unwind
frame_prev_register_ftype *prev_register;
const struct frame_data *unwind_data;
frame_sniffer_ftype *sniffer;
+ frame_prev_pc_ftype *prev_pc;
};
/* Register a frame unwinder, _prepending_ it to the front of the