aboutsummaryrefslogtreecommitdiff
path: root/gdb/frame.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/frame.h')
-rw-r--r--gdb/frame.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/gdb/frame.h b/gdb/frame.h
index a05ac82..dc25ce9 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -90,6 +90,9 @@ enum frame_id_stack_status
/* Stack address is valid, and is found in the stack_addr field. */
FID_STACK_VALID = 1,
+ /* Sentinel frame. */
+ FID_STACK_SENTINEL = 2,
+
/* Stack address is unavailable. I.e., there's a valid stack, but
we don't know where it is (because memory or registers we'd
compute it from were not collected). */
@@ -150,7 +153,7 @@ struct frame_id
CORE_ADDR special_addr;
/* Flags to indicate the above fields have valid contents. */
- ENUM_BITFIELD(frame_id_stack_status) stack_status : 2;
+ ENUM_BITFIELD(frame_id_stack_status) stack_status : 3;
unsigned int code_addr_p : 1;
unsigned int special_addr_p : 1;
@@ -166,6 +169,9 @@ struct frame_id
/* For convenience. All fields are zero. This means "there is no frame". */
extern const struct frame_id null_frame_id;
+/* Sentinel frame. */
+extern const struct frame_id sentinel_frame_id;
+
/* This means "there is no frame ID, but there is a frame". It should be
replaced by best-effort frame IDs for the outermost frame, somehow.
The implementation is only special_addr_p set. */
@@ -310,6 +316,10 @@ extern void select_frame (struct frame_info *);
extern struct frame_info *get_prev_frame (struct frame_info *);
extern struct frame_info *get_next_frame (struct frame_info *);
+/* Like get_next_frame(), but allows return of the sentinel frame. NULL
+ is never returned. */
+extern struct frame_info *get_next_frame_sentinel_okay (struct frame_info *);
+
/* Return a "struct frame_info" corresponding to the frame that called
THIS_FRAME. Returns NULL if there is no such frame.