summaryrefslogtreecommitdiff
path: root/gdb/frame-unwind.h
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-04-05 03:56:00 +0000
committerAndrew Cagney <cagney@redhat.com>2003-04-05 03:56:00 +0000
commitacd16d51bc2e272d29ba2c3a4b886ddc3fda6e06 (patch)
tree20146abd0421e126c6aa205e29e160cc4815cf6c /gdb/frame-unwind.h
parent3f080cb8f4416aed179b67dd573e4bd96579e75e (diff)
downloadgdb-acd16d51bc2e272d29ba2c3a4b886ddc3fda6e06.tar.gz
2003-04-04 Andrew Cagney <cagney@redhat.com>
* frame.c (get_prev_frame): Do not call frame_type_from_pc. Set the frame's type from the unwinder. (get_frame_type): Map UNKNOWN_FRAME onto NORMAL_FRAME. (create_new_frame, legacy_get_prev_frame): When the unwinder's type isn't UNKNOWN_FRAME, initalize "type" from the unwinder. (get_frame_base_address): Use get_frame_type. (get_frame_locals_address, get_frame_args_address): Ditto. (legacy_saved_regs_unwinder): Set the type to UNKNOWN_TYPE. * frame.h (enum frame_type): Add UNKNOWN_FRAME. (struct frame_info): Add comment explaining why the frame contains a "type" field. * dummy-frame.c (dummy_frame_unwind): Set the type to DUMMY_FRAME. * d10v-tdep.c (d10v_frame_unwind): Set the type to NORMAL_FRAME. * sentinel-frame.c (sentinel_frame_unwinder): Set the type to NORMAL_FRAME. * frame-unwind.h: Include "frame.h". (struct frame_unwind): Add "type" field. * Makefile.in (frame_unwind_h): Add $(frame_h).
Diffstat (limited to 'gdb/frame-unwind.h')
-rw-r--r--gdb/frame-unwind.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gdb/frame-unwind.h b/gdb/frame-unwind.h
index 099f9dee420..ad1efdf353b 100644
--- a/gdb/frame-unwind.h
+++ b/gdb/frame-unwind.h
@@ -28,6 +28,8 @@ struct frame_unwind;
struct gdbarch;
struct regcache;
+#include "frame.h" /* For enum frame_type. */
+
/* Return the frame unwind methods for the function that contains PC,
or NULL if this this unwinder can't handle this frame. */
@@ -128,7 +130,9 @@ typedef void (frame_prev_register_ftype) (struct frame_info *next_frame,
struct frame_unwind
{
- /* Should the frame's type go here? */
+ /* The frame's type. Should this instead be a collection of
+ predicates that test the frame for various attributes? */
+ enum frame_type type;
/* Should an attribute indicating the frame's address-in-block go
here? */
frame_this_id_ftype *this_id;