/* Frame unwinder for frames with DWARF Call Frame Information.
- Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009
- Free Software Foundation, Inc.
+ Copyright (C) 2003-2017 Free Software Foundation, Inc.
Contributed by Mark Kettenis.
struct gdbarch;
struct objfile;
struct frame_info;
+struct dwarf2_per_cu_data;
+struct agent_expr;
+struct axs_value;
/* Register rule. */
union {
LONGEST offset;
ULONGEST reg;
- unsigned char *exp;
+ const gdb_byte *exp;
struct value *(*fn) (struct frame_info *this_frame, void **this_cache,
int regnum);
} loc;
extern const struct frame_base *
dwarf2_frame_base_sniffer (struct frame_info *this_frame);
-/* Register the DWARF CFI for OBJFILE. */
-
-void dwarf2_frame_build_info (struct objfile *objfile);
-
/* Compute the DWARF CFA for a frame. */
CORE_ADDR dwarf2_frame_cfa (struct frame_info *this_frame);
+/* Find the CFA information for PC.
+
+ Return 1 if a register is used for the CFA, or 0 if another
+ expression is used. Throw an exception on error.
+
+ GDBARCH is the architecture to use.
+ DATA is the per-CU data.
+
+ REGNUM_OUT is an out parameter that is set to the register number.
+ OFFSET_OUT is the offset to use from this register.
+ These are only filled in when 1 is returned.
+
+ TEXT_OFFSET_OUT, CFA_START_OUT, and CFA_END_OUT describe the CFA
+ in other cases. These are only used when 0 is returned. */
+
+extern int dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
+ struct dwarf2_per_cu_data *data,
+ int *regnum_out, LONGEST *offset_out,
+ CORE_ADDR *text_offset_out,
+ const gdb_byte **cfa_start_out,
+ const gdb_byte **cfa_end_out);
+
#endif /* dwarf2-frame.h */