Commit 0e20f431 authored by Changbin Du's avatar Changbin Du Committed by Arnaldo Carvalho de Melo

perf script: Print raw ip instead of binary offset for callchain

Before this, the raw ip is printed for non-callchain and dso offset for
callchain. This inconsistent output for address may confuse people. And
mostly what we expect is the raw ip.

'dso offset' is printed in callchain:

  $ perf script
  ...
  ls 1341034 2739463.008343:    2162417 cycles:
          ffffffff99d657a7 [unknown] ([unknown])
          ffffffff99e00b67 [unknown] ([unknown])
                     235d3 memset+0x53 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)  # dso offset
                      a61b _dl_map_object+0x1bb (/usr/lib/x86_64-linux-gnu/ld-2.31.so)

raw ip is printed for non-callchain:

  $ perf script  -G
  	...
          ls 1341034 2739463.008876:    2053304 cycles:  ffffffffc1596923 [unknown] ([unknown])
          ls 1341034 2739463.009381:    19170492 cycles:      14def8e149e6 __strcoll_l+0xd96 (/usr/lib/x86_64-linux-gnu/libc-2.31.so) # raw ip

Let's have consistent output for it. Later I'll add a new field 'dsoff' to
print dso offset.
Signed-off-by: default avatarChangbin Du <changbin.du@huawei.com>
Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Hui Wang <hw.huiwang@huawei.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20230418031825.1262579-2-changbin.du@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 1511e469
......@@ -153,13 +153,8 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
if (map)
addr = map__map_ip(map, node->ip);
if (print_ip) {
/* Show binary offset for userspace addr */
if (map && !map__dso(map)->kernel)
printed += fprintf(fp, "%c%16" PRIx64, s, addr);
else
printed += fprintf(fp, "%c%16" PRIx64, s, node->ip);
}
if (print_ip)
printed += fprintf(fp, "%c%16" PRIx64, s, node->ip);
if (print_sym) {
printed += fprintf(fp, " ");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment