Home | History | Annotate | Download | only in util

Lines Matching full:vr_die

324 static Dwarf_Die *die_get_type(Dwarf_Die *vr_die, Dwarf_Die *die_mem)
328 if (dwarf_attr_integrate(vr_die, DW_AT_type, &attr) &&
336 static Dwarf_Die *__die_get_real_type(Dwarf_Die *vr_die, Dwarf_Die *die_mem)
341 vr_die = die_get_type(vr_die, die_mem);
342 if (!vr_die)
344 tag = dwarf_tag(vr_die);
350 return vr_die;
354 static Dwarf_Die *die_get_real_type(Dwarf_Die *vr_die, Dwarf_Die *die_mem)
357 vr_die = __die_get_real_type(vr_die, die_mem);
358 } while (vr_die && dwarf_tag(vr_die) == DW_TAG_typedef);
360 return vr_die;
739 static int die_get_typename(Dwarf_Die *vr_die, char *buf, int len)
745 if (__die_get_real_type(vr_die, &type) == NULL)
775 static int die_get_varname(Dwarf_Die *vr_die, char *buf, int len)
779 ret = die_get_typename(vr_die, buf, len);
786 dwarf_diename(vr_die));
809 static int convert_variable_location(Dwarf_Die *vr_die, Dwarf_Addr addr,
822 if (dwarf_attr(vr_die, DW_AT_external, &attr) != NULL)
826 if (dwarf_attr(vr_die, DW_AT_location, &attr) == NULL ||
838 ret = strlen(dwarf_diename(vr_die));
842 snprintf(tvar->value, ret + 2, "@%s", dwarf_diename(vr_die));
900 static int convert_variable_type(Dwarf_Die *vr_die,
916 if (die_get_bit_size(vr_die) != 0) {
918 ret = snprintf(buf, 16, "b%d@%d/%zd", die_get_bit_size(vr_die),
919 die_get_bit_offset(vr_die),
920 BYTES_TO_BITS(die_get_byte_size(vr_die)));
924 if (die_get_real_type(vr_die, &type) == NULL) {
926 dwarf_diename(vr_die));
931 dwarf_diename(vr_die), dwarf_diename(&type));
939 dwarf_diename(vr_die), dwarf_diename(&type));
961 dwarf_diename(vr_die));
996 static int convert_variable_fields(Dwarf_Die *vr_die, const char *varname,
1007 if (die_get_real_type(vr_die, &type) == NULL) {
1037 /* Save vr_die for converting types */
1038 memcpy(die_mem, vr_die, sizeof(*die_mem));
1112 static int convert_variable(Dwarf_Die *vr_die, struct probe_finder *pf)
1118 dwarf_diename(vr_die));
1120 ret = convert_variable_location(vr_die, pf->addr, pf->fb_ops,
1128 ret = convert_variable_fields(vr_die, pf->pvar->var,
1131 vr_die = &die_mem;
1134 ret = convert_variable_type(vr_die, pf->tvar, pf->pvar->type);
1142 Dwarf_Die vr_die, *scopes;
1182 if (die_find_variable_at(sp_die, pf->pvar->var, pf->addr, &vr_die))
1183 ret = convert_variable(&vr_die, pf);
1193 &vr_die)) {
1194 ret = convert_variable(&vr_die, pf);