Lines Matching refs:dw_die
179 * @dw_die: A DIE of the object
181 * Get the linkage name attribute of given @dw_die.
184 const char *die_get_linkage_name(Dwarf_Die *dw_die)
188 if (dwarf_attr_integrate(dw_die, DW_AT_linkage_name, &attr) == NULL)
195 * @dw_die: a DIE
198 * Compare the name of @dw_die and @tname. Return false if @dw_die has no name.
200 bool die_compare_name(Dwarf_Die *dw_die, const char *tname)
204 name = dwarf_diename(dw_die);
210 * @dw_die: a DIE
213 * Glob matching the name of @dw_die and @glob. Return false if matching fail.
216 bool die_match_name(Dwarf_Die *dw_die, const char *glob)
220 name = dwarf_diename(dw_die);
224 name = die_get_linkage_name(dw_die);
339 * @dw_die: a DIE
342 * returns true if @dw_die is a function definition.
344 bool die_is_func_def(Dwarf_Die *dw_die)
349 if (dwarf_tag(dw_die) != DW_TAG_subprogram)
352 if (dwarf_attr(dw_die, DW_AT_declaration, &attr))
361 if (!dwarf_attr(dw_die, DW_AT_inline, &attr) &&
362 die_entrypc(dw_die, &addr) < 0)
370 * @dw_die: a DIE
377 int die_entrypc(Dwarf_Die *dw_die, Dwarf_Addr *addr)
385 if (dwarf_entrypc(dw_die, addr) == 0)
392 if (!dwarf_attr(dw_die, DW_AT_ranges, &attr))
395 return dwarf_ranges(dw_die, 0, &base, addr, &end) < 0 ? -ENOENT : 0;
400 * @dw_die: a DIE
403 * This returns true if @dw_die is a function instance. If not, the @dw_die
407 bool die_is_func_instance(Dwarf_Die *dw_die)
411 int tag = dwarf_tag(dw_die);
417 return dwarf_entrypc(dw_die, &tmp) == 0 ||
418 dwarf_attr(dw_die, DW_AT_ranges, &attr_mem) != NULL;
478 static const char *die_get_file_name(Dwarf_Die *dw_die, int idx)
484 if (idx < 0 || !dwarf_attr_integrate(dw_die, DW_AT_decl_file, &attr_mem) ||
506 * @dw_die: a DIE for something declared.
508 * Get declared file name of @dw_die.
513 const char *die_get_decl_file(Dwarf_Die *dw_die)
515 return die_get_file_name(dw_die, die_get_decl_fileno(dw_die));