libdwarf
Example getting .debug_ranges data

Example accessing ranges data.

*/
void functionusingrange(Dwarf_Ranges *r);
int examplev(Dwarf_Debug dbg,Dwarf_Off rangesoffset,
Dwarf_Die die, Dwarf_Error*error)
{
Dwarf_Signed count = 0;
Dwarf_Off realoffset = 0;
Dwarf_Ranges *rangesbuf = 0;
Dwarf_Unsigned bytecount = 0;
int res = 0;
res = dwarf_get_ranges_b(dbg,rangesoffset,die,
&realoffset,
&rangesbuf,&count,&bytecount,error);
if (res != DW_DLV_OK) {
return res;
}
{
Dwarf_Signed i = 0;
for ( i = 0; i < count; ++i ) {
Dwarf_Ranges *cur = rangesbuf+i;
/* Use cur. */
functionusingrange(cur);
}
dwarf_dealloc_ranges(dbg,rangesbuf,count);
}
return DW_DLV_OK;
}
struct Dwarf_Debug_s * Dwarf_Debug
Definition: libdwarf.h:586
struct Dwarf_Die_s * Dwarf_Die
Definition: libdwarf.h:591
struct Dwarf_Error_s * Dwarf_Error
Definition: libdwarf.h:580
signed long long Dwarf_Signed
Definition: libdwarf.h:197
unsigned long long Dwarf_Unsigned
Definition: libdwarf.h:196
unsigned long long Dwarf_Off
Definition: libdwarf.h:198
int dwarf_get_ranges_b(Dwarf_Debug dw_dbg, Dwarf_Off dw_rangesoffset, Dwarf_Die dw_die, Dwarf_Off *dw_return_realoffset, Dwarf_Ranges **dw_rangesbuf, Dwarf_Signed *dw_rangecount, Dwarf_Unsigned *dw_bytecount, Dwarf_Error *dw_error)
Access to code ranges from a CU or just reading through the raw .debug_ranges section.
void dwarf_dealloc_ranges(Dwarf_Debug dw_dbg, Dwarf_Ranges *dw_rangesbuf, Dwarf_Signed dw_rangecount)
Dealloc the array dw_rangesbuf.
Definition: libdwarf.h:452