diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 8a7da6f4a569..c236b38ed02b 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -1515,6 +1515,8 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, struct perf_sample *sample, node_al = *al; while (stack_depth) { + u64 addr = 0; + node = callchain_cursor_current(&callchain_cursor); if (!node) break; @@ -1525,10 +1527,13 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, struct perf_sample *sample, if (print_ip) printf("%c%16" PRIx64, s, node->ip); + if (node->map) + addr = node->map->map_ip(node->map, node->ip); + if (print_sym) { printf(" "); if (print_symoffset) { - node_al.addr = node->ip; + node_al.addr = addr; node_al.map = node->map; symbol__fprintf_symname_offs(node->sym, &node_al, stdout); } else