#include "beabi.h"
+typedef struct parameter_dbg_info_t {
+ const ir_entity *entity;
+ const arch_register_t *reg;
+} parameter_dbg_info_t;
+
/** initialize and open debug handle */
void be_dwarf_open(void);
/** end compilation unit */
void be_dwarf_unit_end(void);
-/** debug for a method begin */
-void be_dwarf_method_begin(const ir_entity *ent);
+/** output debug info necessary right before defining a method */
+void be_dwarf_method_before(const ir_entity *ent,
+ const parameter_dbg_info_t *infos);
+
+/** output debug info right before beginning to output assembly instructions */
+void be_dwarf_method_begin(void);
/** debug for a method end */
void be_dwarf_method_end(void);
* assembly instructions */
void be_dwarf_location(dbg_info *dbgi);
+/** set base register that points to callframe */
+void be_dwarf_callframe_register(const arch_register_t *reg);
+
+/** set offset from base register that points to the callframe.
+ * Note: callframe is defined as in the dwarf documentation here which is the
+ * stackpointer before the call has happened. (Which would be the beginning of
+ * the between type in our backend) */
+void be_dwarf_callframe_offset(int offset);
+
+/**
+ * Indicate at which offset (relative to the CFA) a caller saved register has
+ * been saved.
+ */
+void be_dwarf_callframe_spilloffset(const arch_register_t *reg, int offset);
+
#endif