libdwarf
Using dwarf_offset_given_die()

Example finding the section offset of a DIE.

Here finding the offset of a CU-DIE.

*/
int example7(Dwarf_Debug dbg, Dwarf_Die in_die,
Dwarf_Bool is_info,
Dwarf_Error * error)
{
int res = 0;
Dwarf_Off cudieoff = 0;
Dwarf_Die cudie = 0;
res = dwarf_CU_dieoffset_given_die(in_die,&cudieoff,error);
if (res != DW_DLV_OK) {
/* FAIL */
return res;
}
res = dwarf_offdie_b(dbg,cudieoff,is_info,&cudie,error);
if (res != DW_DLV_OK) {
/* FAIL */
return res;
}
/* do something with cu_die */
return res;
}
struct Dwarf_Debug_s * Dwarf_Debug
Definition: libdwarf.h:603
struct Dwarf_Die_s * Dwarf_Die
Definition: libdwarf.h:608
struct Dwarf_Error_s * Dwarf_Error
Definition: libdwarf.h:597
int Dwarf_Bool
Definition: libdwarf.h:202
unsigned long long Dwarf_Off
Definition: libdwarf.h:198
int dwarf_offdie_b(Dwarf_Debug dw_dbg, Dwarf_Off dw_offset, Dwarf_Bool dw_is_info, Dwarf_Die *dw_return_die, Dwarf_Error *dw_error)
Return DIE given global (not CU-relative) offset.
void dwarf_dealloc_die(Dwarf_Die dw_die)
Deallocate (free) a DIE.
int dwarf_CU_dieoffset_given_die(Dwarf_Die dw_die, Dwarf_Off *dw_return_offset, Dwarf_Error *dw_error)
Return the CU DIE offset given any DIE.