To correctly find inlined frames, we have to use the file offset instead of the virtual memory address. This was already fixed for displaying srcline information while displaying in commit 2a9d5050dc84fa20 ("perf script: Show correct offsets for DWARF-based unwinding"). We just need to use the same corrected address also when trying to find inline frames.
This is another follow-up to commit 19610184693c ("perf script: Show virtual addresses instead of offsets"). Signed-off-by: Milian Wolff <milian.wo...@kdab.com> Cc: Sandipan Das <sandi...@linux.ibm.com> Cc: Arnaldo Carvalho de Melo <a...@kernel.org> --- tools/perf/util/machine.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 0cb4f8bf3ca7..73a651f10a0f 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -2317,9 +2317,6 @@ static int unwind_entry(struct unwind_entry *entry, void *arg) if (symbol_conf.hide_unresolved && entry->sym == NULL) return 0; - if (append_inlines(cursor, entry->map, entry->sym, entry->ip) == 0) - return 0; - /* * Convert entry->ip from a virtual address to an offset in * its corresponding binary. @@ -2327,6 +2324,9 @@ static int unwind_entry(struct unwind_entry *entry, void *arg) if (entry->map) addr = map__map_ip(entry->map, entry->ip); + if (append_inlines(cursor, entry->map, entry->sym, addr) == 0) + return 0; + srcline = callchain_srcline(entry->map, entry->sym, addr); return callchain_cursor_append(cursor, entry->ip, entry->map, entry->sym, -- 2.19.0