Lines Matching refs:sp_die
171 Dwarf_Op *fb_ops, Dwarf_Die *sp_die,
206 ret = dwarf_entrypc(sp_die, &tmp);
218 ret = dwarf_highpc(sp_die, &tmp);
569 &pf->sp_die, pf->machine, pf->tvar);
635 static int convert_to_trace_point(Dwarf_Die *sp_die, Dwfl_Module *mod,
645 if (!dwarf_haspc(sp_die, paddr)) {
647 dwarf_diename(sp_die));
651 if (dwarf_entrypc(sp_die, &eaddr) == 0) {
653 symbol = dwarf_diename(sp_die);
701 if (!die_find_realfunc(&pf->cu_die, pf->addr, &pf->sp_die)) {
702 if (die_find_tailfunc(&pf->cu_die, pf->addr, &pf->sp_die)) {
704 dwarf_diename(&pf->sp_die));
713 memcpy(&pf->sp_die, sc_die, sizeof(Dwarf_Die));
716 dwarf_attr(&pf->sp_die, DW_AT_frame_base, &fb_attr);
953 static int find_probe_point_lazy(Dwarf_Die *sp_die, struct probe_finder *pf)
982 return die_walk_lines(sp_die, probe_point_lazy_walker, pf);
985 static void skip_prologue(Dwarf_Die *sp_die, struct probe_finder *pf)
1014 die_skip_prologue(sp_die, &pf->cu_die, &pf->addr);
1056 static int probe_point_search_cb(Dwarf_Die *sp_die, void *data)
1063 if (!die_is_func_def(sp_die) ||
1064 !die_match_name(sp_die, pp->function))
1068 if (pp->file && strtailcmp(pp->file, dwarf_decl_file(sp_die)))
1071 pr_debug("Matched function: %s [%lx]\n", dwarf_diename(sp_die),
1072 (unsigned long)dwarf_dieoffset(sp_die));
1073 pf->fname = dwarf_decl_file(sp_die);
1075 dwarf_decl_line(sp_die, &pf->lno);
1078 } else if (die_is_func_instance(sp_die)) {
1080 die_entrypc(sp_die, &pf->addr);
1084 dwarf_diename(sp_die));
1088 param->retval = find_probe_point_lazy(sp_die, pf);
1090 skip_prologue(sp_die, pf);
1093 param->retval = call_probe_finder(sp_die, pf);
1097 param->retval = die_walk_instances(sp_die,
1125 Dwarf_Die *sp_die;
1133 if (dwarf_offdie(dbg, gl->die_offset, param->sp_die)) {
1134 if (dwarf_tag(param->sp_die) != DW_TAG_subprogram)
1137 if (die_match_name(param->sp_die, param->function)) {
1142 strtailcmp(param->file, dwarf_decl_file(param->sp_die)))
1173 .sp_die = &pf->sp_die,
1183 ret = probe_point_search_cb(&pf->sp_die, &probe_param);
1281 vf->pf->fb_ops, &pf->sp_die,
1369 ret = convert_to_trace_point(&pf->sp_die, tf->mod, pf->addr,
1510 af->pf.fb_ops, &af->pf.sp_die,
1535 ret2 = die_get_var_range(&af->pf.sp_die,
1596 ret = convert_to_trace_point(&pf->sp_die, af->mod, pf->addr,
1849 static int find_line_range_by_line(Dwarf_Die *sp_die, struct line_finder *lf)
1853 ret = die_walk_lines(sp_die ?: &lf->cu_die, line_range_walk_cb, lf);
1881 static int line_range_search_cb(Dwarf_Die *sp_die, void *data)
1888 if (lr->file && strtailcmp(lr->file, dwarf_decl_file(sp_die)))
1891 if (die_match_name(sp_die, lr->function) && die_is_func_def(sp_die)) {
1892 lf->fname = dwarf_decl_file(sp_die);
1893 dwarf_decl_line(sp_die, &lr->offset);
1904 if (!die_is_func_instance(sp_die))
1905 param->retval = die_walk_instances(sp_die,
1908 param->retval = find_line_range_by_line(sp_die, lf);
1934 .cu_die = &lf.cu_die, .sp_die = &lf.sp_die, .found = 0};
1941 line_range_search_cb(&lf.sp_die, &line_range_param);