]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf callchain: Fix srcline printing with inlines
authorIan Rogers <irogers@google.com>
Sun, 11 Jan 2026 04:13:36 +0000 (20:13 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 13 Jan 2026 19:21:33 +0000 (16:21 -0300)
sample__fprintf_callchain() was using map__fprintf_srcline() which won't
report inline line numbers.

Fix by using the srcline from the callchain and falling back to the map
variant.

Fixes: 25da4fab5f66e659 ("perf evsel: Move fprintf methods to separate source file")
Reviewed-by: James Clark <james.clark@linaro.org>
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
Cc: Tony Jones <tonyj@suse.de>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/evsel_fprintf.c

index 10f1a03c28601e36756ef15bbff2f26c48adbbb2..5521d00bff2c0f21edd89f1ad9dc14d8bfb327ed 100644 (file)
@@ -185,8 +185,12 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
                        if (print_dso && (!sym || !sym->inlined))
                                printed += map__fprintf_dsoname_dsoff(map, print_dsoff, addr, fp);
 
-                       if (print_srcline)
-                               printed += map__fprintf_srcline(map, addr, "\n  ", fp);
+                       if (print_srcline) {
+                               if (node->srcline)
+                                       printed += fprintf(fp, "\n  %s", node->srcline);
+                               else
+                                       printed += map__fprintf_srcline(map, addr, "\n  ", fp);
+                       }
 
                        if (sym && sym->inlined)
                                printed += fprintf(fp, " (inlined)");