Dwarf_Off DieHolder::get_CU_offset(void) { Dwarf_Off cu_offset = 0; Dwarf_Error err = NULL; CHECK_DWERR(dwarf_CU_dieoffset_given_die(m_die, &cu_offset, &err), err, "cannot get CU DIE offset"); return cu_offset; }
static VALUE rdwarf_die_at(VALUE self, VALUE offset) { rdwarf_t *rd = GetRDwarf(self); Dwarf_Die die; Dwarf_Off cu_off; Dwarf_Error err; VALUE cu; chkerr1(dwarf_offdie(rd->shared_data->dbg, NUM2LL(offset), &die, &err), &err, self); chkerr1(dwarf_CU_dieoffset_given_die(die, &cu_off, &err), &err, self); rdwarf_compile_units(self); cu = rb_hash_aref(rd->shared_data->off2die, LL2NUM(cu_off)); if (NIL_P(cu)) { rb_raise(rd_eError, "Cannot find CU"); } return rd_die_new(rd->shared_data, self, cu, die); }