libdwarf
Using dwarf_offdie_b()

Example accessing a DIE by its offset.

*/
int example6(Dwarf_Debug dbg,Dwarf_Off die_offset,
Dwarf_Bool is_info,
Dwarf_Error *error)
{
Dwarf_Die return_die = 0;
int res = 0;
res = dwarf_offdie_b(dbg,die_offset,is_info,&return_die, error);
if (res != DW_DLV_OK) {
/* res could be NO ENTRY or ERROR, so no
dealloc necessary. */
return res;
}
/* Use return_die here. */
dwarf_dealloc_die(return_die);
/* return_die is no longer usable for anything, we
ensure we do not use it accidentally
though a bit silly here given the return_die
goes out of scope... */
return_die = 0;
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.