• Home
  • Raw
  • Download

Lines Matching refs:sp_die

523 static Dwarf_Die *die_find_inlinefunc(Dwarf_Die *sp_die, Dwarf_Addr addr,  in die_find_inlinefunc()  argument
528 sp_die = die_find_child(sp_die, __die_find_inline_cb, &addr, &tmp_die); in die_find_inlinefunc()
529 if (!sp_die) in die_find_inlinefunc()
533 while (sp_die) { in die_find_inlinefunc()
534 memcpy(die_mem, sp_die, sizeof(Dwarf_Die)); in die_find_inlinefunc()
535 sp_die = die_find_child(sp_die, __die_find_inline_cb, &addr, in die_find_inlinefunc()
572 static int __die_walk_funclines(Dwarf_Die *sp_die, in __die_walk_funclines() argument
585 lw.fname = dwarf_decl_file(sp_die); in __die_walk_funclines()
586 if (lw.fname && dwarf_decl_line(sp_die, &lineno) == 0 && in __die_walk_funclines()
587 dwarf_entrypc(sp_die, &addr) == 0) { in __die_walk_funclines()
592 die_find_child(sp_die, __die_walk_funclines_cb, &lw, &die_mem); in __die_walk_funclines()
597 static int __die_walk_culines_cb(Dwarf_Die *sp_die, void *data) in __die_walk_culines_cb() argument
601 lw->retval = __die_walk_funclines(sp_die, lw->handler, lw->data); in __die_walk_culines_cb()
710 static Dwarf_Die *die_find_variable_at(Dwarf_Die *sp_die, const char *name, in die_find_variable_at() argument
715 return die_find_child(sp_die, __die_find_variable_cb, (void *)&fvp, in die_find_variable_at()
1140 static int find_variable(Dwarf_Die *sp_die, struct probe_finder *pf) in find_variable() argument
1182 if (die_find_variable_at(sp_die, pf->pvar->var, pf->addr, &vr_die)) in find_variable()
1186 nscopes = dwarf_getscopes_die(sp_die, &scopes); in find_variable()
1210 static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr, in convert_to_trace_point() argument
1217 name = dwarf_diename(sp_die); in convert_to_trace_point()
1219 if (dwarf_entrypc(sp_die, &eaddr) != 0) { in convert_to_trace_point()
1221 dwarf_diename(sp_die)); in convert_to_trace_point()
1246 static int call_probe_finder(Dwarf_Die *sp_die, struct probe_finder *pf) in call_probe_finder() argument
1254 if (!sp_die || dwarf_tag(sp_die) != DW_TAG_subprogram) { in call_probe_finder()
1255 sp_die = die_find_real_subprogram(&pf->cu_die, in call_probe_finder()
1257 if (!sp_die) { in call_probe_finder()
1265 dwarf_attr(sp_die, DW_AT_frame_base, &fb_attr); in call_probe_finder()
1283 ret = pf->callback(sp_die, pf); in call_probe_finder()
1374 static int find_probe_point_lazy(Dwarf_Die *sp_die, struct probe_finder *pf) in find_probe_point_lazy() argument
1386 return die_walk_lines(sp_die, probe_point_lazy_walker, pf); in find_probe_point_lazy()
1426 static int probe_point_search_cb(Dwarf_Die *sp_die, void *data) in probe_point_search_cb() argument
1433 if (dwarf_tag(sp_die) != DW_TAG_subprogram || in probe_point_search_cb()
1434 !die_compare_name(sp_die, pp->function)) in probe_point_search_cb()
1438 if (pp->file && strtailcmp(pp->file, dwarf_decl_file(sp_die))) in probe_point_search_cb()
1441 pf->fname = dwarf_decl_file(sp_die); in probe_point_search_cb()
1443 dwarf_decl_line(sp_die, &pf->lno); in probe_point_search_cb()
1446 } else if (!dwarf_func_inline(sp_die)) { in probe_point_search_cb()
1449 param->retval = find_probe_point_lazy(sp_die, pf); in probe_point_search_cb()
1451 if (dwarf_entrypc(sp_die, &pf->addr) != 0) { in probe_point_search_cb()
1453 "%s.\n", dwarf_diename(sp_die)); in probe_point_search_cb()
1459 param->retval = call_probe_finder(sp_die, pf); in probe_point_search_cb()
1465 dwarf_func_inline_instances(sp_die, probe_point_inline_cb, in probe_point_search_cb()
1485 Dwarf_Die *sp_die; member
1493 if (dwarf_offdie(dbg, gl->die_offset, param->sp_die)) { in pubname_search_cb()
1494 if (dwarf_tag(param->sp_die) != DW_TAG_subprogram) in pubname_search_cb()
1497 if (die_compare_name(param->sp_die, param->function)) { in pubname_search_cb()
1502 strtailcmp(param->file, dwarf_decl_file(param->sp_die))) in pubname_search_cb()
1547 .sp_die = &pf->sp_die, in find_probes()
1556 ret = probe_point_search_cb(&pf->sp_die, &probe_param); in find_probes()
1599 static int add_probe_trace_event(Dwarf_Die *sp_die, struct probe_finder *pf) in add_probe_trace_event() argument
1614 ret = convert_to_trace_point(sp_die, pf->addr, pf->pev->point.retprobe, in add_probe_trace_event()
1630 ret = find_variable(sp_die, pf); in add_probe_trace_event()
1697 static int add_available_vars(Dwarf_Die *sp_die, struct probe_finder *pf) in add_available_vars() argument
1712 ret = convert_to_trace_point(sp_die, pf->addr, pf->pev->point.retprobe, in add_available_vars()
1725 die_find_child(sp_die, collect_variables_cb, (void *)af, &die_mem); in add_available_vars()
1732 nscopes = dwarf_getscopes_die(sp_die, &scopes); in add_available_vars()
1918 static int find_line_range_by_line(Dwarf_Die *sp_die, struct line_finder *lf) in find_line_range_by_line() argument
1922 ret = die_walk_lines(sp_die ?: &lf->cu_die, line_range_walk_cb, lf); in find_line_range_by_line()
1946 static int line_range_search_cb(Dwarf_Die *sp_die, void *data) in line_range_search_cb() argument
1953 if (lr->file && strtailcmp(lr->file, dwarf_decl_file(sp_die))) in line_range_search_cb()
1956 if (dwarf_tag(sp_die) == DW_TAG_subprogram && in line_range_search_cb()
1957 die_compare_name(sp_die, lr->function)) { in line_range_search_cb()
1958 lf->fname = dwarf_decl_file(sp_die); in line_range_search_cb()
1959 dwarf_decl_line(sp_die, &lr->offset); in line_range_search_cb()
1970 if (dwarf_func_inline(sp_die)) { in line_range_search_cb()
1974 dwarf_func_inline_instances(sp_die, in line_range_search_cb()
1979 param->retval = find_line_range_by_line(sp_die, lf); in line_range_search_cb()
2016 .cu_die = &lf.cu_die, .sp_die = &lf.sp_die, .found = 0}; in find_line_range()
2022 line_range_search_cb(&lf.sp_die, &line_range_param); in find_line_range()