diff options
Diffstat (limited to 'gdb/frame-base.h')
-rw-r--r-- | gdb/frame-base.h | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/gdb/frame-base.h b/gdb/frame-base.h index 5e0d5db..7433c54 100644 --- a/gdb/frame-base.h +++ b/gdb/frame-base.h @@ -29,30 +29,12 @@ struct frame_base; struct gdbarch; struct regcache; -/* Return the frame base methods for the function that contains PC, or - NULL if it can't handle this frame. */ +/* For compatibility. */ typedef const struct frame_base *(frame_base_p_ftype) (CORE_ADDR pc); - -/* Add a frame base handler to the list. The predicates are polled in - the order that they are appended. */ - extern void frame_base_append_predicate (struct gdbarch *gdbarch, frame_base_p_ftype *p); -/* Set the default frame base. If all else fails, this one is - returned. If this isn't set, the default is to use legacy code - that uses things like the frame ID's base (ulgh!). */ - -extern void frame_base_set_default (struct gdbarch *gdbarch, - const struct frame_base *def); - -/* Iterate through the list of frame base handlers until one returns - an implementation. */ - -extern const struct frame_base *frame_base_find_by_pc (struct gdbarch *gdbarch, - CORE_ADDR pc); - /* Assuming the frame chain: (outer) prev <-> this <-> next (inner); and that this is a `normal frame'; use the NEXT frame, and its register unwind method, to determine the address of THIS frame's @@ -91,4 +73,27 @@ struct frame_base frame_this_args_ftype *this_args; }; +/* Given the NEXT frame, return the frame base methods for THIS frame, + or NULL if it can't handle THIS frame. */ + +typedef const struct frame_base *(frame_base_sniffer_ftype) (struct frame_info *next_frame); + +/* Append a frame base sniffer to the list. The sniffers are polled + in the order that they are appended. */ + +extern void frame_base_append_sniffer (struct gdbarch *gdbarch, + frame_base_sniffer_ftype *sniffer); + +/* Set the default frame base. If all else fails, this one is + returned. If this isn't set, the default is to use legacy code + that uses things like the frame ID's base (ulgh!). */ + +extern void frame_base_set_default (struct gdbarch *gdbarch, + const struct frame_base *def); + +/* Iterate through the list of frame base handlers until one returns + an implementation. */ + +extern const struct frame_base *frame_base_find_by_frame (struct frame_info *next_frame); + #endif |