X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbedwarf.h;h=49f4cc46806b44ea2ae64187a39c7a875c6c5365;hb=3c3425a50a1d721b74a015c6812257e32feeac85;hp=a795f60e6d3f8620ff9b958860b71e7b483a784a;hpb=5f6c325fb0ecef208f510046e0ade03a645b3540;p=libfirm diff --git a/ir/be/bedwarf.h b/ir/be/bedwarf.h index a795f60e6..49f4cc468 100644 --- a/ir/be/bedwarf.h +++ b/ir/be/bedwarf.h @@ -27,6 +27,11 @@ #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); @@ -39,8 +44,12 @@ void be_dwarf_unit_begin(const char *filename); /** 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); @@ -52,4 +61,19 @@ void be_dwarf_variable(const ir_entity *ent); * 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