summaryrefslogtreecommitdiff
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
commit3c658c099f944735fd5d75524c1c65c69252beb5 (patch)
treeb2530bbe73bd2b93eeb9d03647300a4adf058d98 /gdb/frame-unwind.h
parent5390c114d6028ec3469a54c68e873d44b70f9c17 (diff)
downloadgdb-3c658c099f944735fd5d75524c1c65c69252beb5.tar.gz
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 12d6dd240ed..74c0a4aa9b4 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