aboutsummaryrefslogtreecommitdiff
path: root/gdb/sentinel-frame.c
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2009-07-02 17:09:28 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2009-07-02 17:09:28 +0000
commit36f15f554fcea7aedfdcdabcdd19e927b623d615 (patch)
tree5a463a24d70815849ae47b1b8547f6e1bc1f3633 /gdb/sentinel-frame.c
parent848f574829bcbcc1ce46870e898fbb1118ff7130 (diff)
downloadgdb-36f15f554fcea7aedfdcdabcdd19e927b623d615.zip
gdb-36f15f554fcea7aedfdcdabcdd19e927b623d615.tar.gz
gdb-36f15f554fcea7aedfdcdabcdd19e927b623d615.tar.bz2
* frame.h (frame_unwind_arch): New.
(frame_unwind_caller_arch): Likewise. * frame-unwind.h (frame_prev_arch_ftype): New type. (struct frame_unwind): New member prev_arch. * frame.c (struct frame_info): New member prev_arch. (frame_unwind_arch): New function. (frame_unwind_caller_arch): Likewise.. (get_frame_arch): Reimplement in terms of frame_unwind_arch. * sentinel-frame.c (sentinel_frame_prev_arch): New function. (sentinel_frame_unwinder): Install it. * frame.c (frame_pc_unwind): Use frame_unwind_arch instead of get_frame_arch. (frame_unwind_register_value): Likewise. (frame_unwind_register_signed): Likewise. (frame_unwind_register_unsigned): Likewise. * frame-unwind.c (frame_unwind_got_optimized): Likewise. (frame_unwind_got_register): Likewise. (frame_unwind_got_constant): Likewise. (frame_unwind_got_bytes): Likewise. (frame_unwind_got_address): Likewise. * frame.h (enum frame_type): New value ARCH_FRAME. * frame.c (fprint_frame_type): Handle ARCH_FRAME. * stack.c (print_frame_info): Likewise.
Diffstat (limited to 'gdb/sentinel-frame.c')
-rw-r--r--gdb/sentinel-frame.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gdb/sentinel-frame.c b/gdb/sentinel-frame.c
index d20c426..e01d198 100644
--- a/gdb/sentinel-frame.c
+++ b/gdb/sentinel-frame.c
@@ -76,11 +76,23 @@ sentinel_frame_this_id (struct frame_info *this_frame,
internal_error (__FILE__, __LINE__, _("sentinel_frame_this_id called"));
}
+static struct gdbarch *
+sentinel_frame_prev_arch (struct frame_info *this_frame,
+ void **this_prologue_cache)
+{
+ struct frame_unwind_cache *cache = *this_prologue_cache;
+ return get_regcache_arch (cache->regcache);
+}
+
const struct frame_unwind sentinel_frame_unwinder =
{
SENTINEL_FRAME,
sentinel_frame_this_id,
- sentinel_frame_prev_register
+ sentinel_frame_prev_register,
+ NULL,
+ NULL,
+ NULL,
+ sentinel_frame_prev_arch,
};
const struct frame_unwind *const sentinel_frame_unwind = &sentinel_frame_unwinder;