aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2/frame.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/dwarf2/frame.h')
-rw-r--r--gdb/dwarf2/frame.h37
1 files changed, 35 insertions, 2 deletions
diff --git a/gdb/dwarf2/frame.h b/gdb/dwarf2/frame.h
index 4444c15..5643e55 100644
--- a/gdb/dwarf2/frame.h
+++ b/gdb/dwarf2/frame.h
@@ -66,6 +66,9 @@ enum dwarf2_frame_reg_rule
/* Register state. */
+typedef struct value *(*fn_prev_register) (frame_info_ptr this_frame,
+ void **this_cache, int regnum);
+
struct dwarf2_frame_state_reg
{
/* Each register save state can be described in terms of a CFA slot,
@@ -78,8 +81,7 @@ struct dwarf2_frame_state_reg
const gdb_byte *start;
ULONGEST len;
} exp;
- struct value *(*fn) (frame_info_ptr this_frame, void **this_cache,
- int regnum);
+ fn_prev_register fn;
} loc;
enum dwarf2_frame_reg_rule how;
};
@@ -262,4 +264,35 @@ extern int dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
const gdb_byte **cfa_start_out,
const gdb_byte **cfa_end_out);
+
+/* Allocate a new instance of the function unique data.
+
+ The main purpose of this custom function data object is to allow caching the
+ value of expensive lookups in the prev_register implementation.
+
+ THIS_FRAME is the frame that the custom data object should be associated
+ with.
+ THIS_CACHE is the dwarf2 cache object to store the pointer on.
+ COOKIE is the key for the prev_function implementation.
+ SIZE is the size of the custom data object to allocate. */
+
+extern void *dwarf2_frame_allocate_fn_data (frame_info_ptr this_frame,
+ void **this_cache,
+ fn_prev_register cookie,
+ unsigned long size);
+
+/* Retrieve the function unique data for this frame or NULL if none exists.
+
+ The main purpose of this custom function data object is to allow caching the
+ value of expensive lookups in the prev_register implementation.
+
+ THIS_FRAME is the frame that the custom data object should be associated
+ with.
+ THIS_CACHE is the dwarf2 cache object to store the pointer on.
+ COOKIE is the key for the prev_function implementation. */
+
+extern void *dwarf2_frame_get_fn_data (frame_info_ptr this_frame,
+ void **this_cache,
+ fn_prev_register cookie);
+
#endif /* dwarf2-frame.h */