Skip to content

Commit 7903a70

Browse files
sandip4nacmel
authored andcommitted
perf script: Show symbol offsets by default
Since the ip shown for a symbol is now always a virtual address, it becomes difficult to correlate this with objdump output and determine the exact instruction address. So, we always show the offset from the start of the symbol. This can be verified on a powerpc64le system running Fedora 27 as follows: # perf probe -a sys_write # perf record -e probe:sys_write -g ~/test Before applying this patch: # perf script test 9710 [013] 95614.332431: probe:sys_write: (c0000000004025b0) c0000000004025b0 sys_write (/lib/modules/4.17.0-rc4+/build/vmlinux) c00000000000b9e0 system_call (/lib/modules/4.17.0-rc4+/build/vmlinux) 7fffb70d8234 __GI___libc_write (/usr/lib64/libc-2.26.so) 7fffb7052c74 _IO_file_write@@GLIBC_2.17 (/usr/lib64/libc-2.26.so) 5afc1818 [unknown] ([unknown]) 7fffb7051a60 new_do_write (/usr/lib64/libc-2.26.so) 7fffb7054638 _IO_do_write@@GLIBC_2.17 (/usr/lib64/libc-2.26.so) 7fffb7054bbc _IO_file_overflow@@GLIBC_2.17 (/usr/lib64/libc-2.26.so) 7fffb7055a24 __overflow (/usr/lib64/libc-2.26.so) 7fffb7044548 _IO_puts (/usr/lib64/libc-2.26.so) 10000440 main (/home/sandipan/test) 7fffb6fe36a0 generic_start_main.isra.0 (/usr/lib64/libc-2.26.so) 7fffb6fe3898 __libc_start_main (/usr/lib64/libc-2.26.so) 0 [unknown] ([unknown]) ... After applying this patch: # perf script test 9710 [013] 95614.332431: probe:sys_write: (c0000000004025b0) c0000000004025b0 sys_write+0x10 (/lib/modules/4.17.0-rc4+/build/vmlinux) c00000000000b9e0 system_call+0x58 (/lib/modules/4.17.0-rc4+/build/vmlinux) 7fffb70d8234 __GI___libc_write+0x24 (/usr/lib64/libc-2.26.so) 7fffb7052c74 _IO_file_write@@GLIBC_2.17+0x44 (/usr/lib64/libc-2.26.so) 5afc1818 [unknown] ([unknown]) 7fffb7051a60 new_do_write+0x90 (/usr/lib64/libc-2.26.so) 7fffb7054638 _IO_do_write@@GLIBC_2.17+0x38 (/usr/lib64/libc-2.26.so) 7fffb7054bbc _IO_file_overflow@@GLIBC_2.17+0x14c (/usr/lib64/libc-2.26.so) 7fffb7055a24 __overflow+0x64 (/usr/lib64/libc-2.26.so) 7fffb7044548 _IO_puts+0x218 (/usr/lib64/libc-2.26.so) 10000440 main+0x20 (/home/sandipan/test) 7fffb6fe36a0 generic_start_main.isra.0+0x140 (/usr/lib64/libc-2.26.so) 7fffb6fe3898 __libc_start_main+0xb8 (/usr/lib64/libc-2.26.so) 0 [unknown] ([unknown]) ... Signed-off-by: Sandipan Das <[email protected]> Tested-by: Arnaldo Carvalho de Melo <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Naveen N. Rao <[email protected]> Cc: Ravi Bangoria <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent 1961018 commit 7903a70

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

tools/perf/builtin-script.c

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ static struct {
153153
.fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID |
154154
PERF_OUTPUT_CPU | PERF_OUTPUT_TIME |
155155
PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP |
156-
PERF_OUTPUT_SYM | PERF_OUTPUT_DSO |
157-
PERF_OUTPUT_PERIOD,
156+
PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET |
157+
PERF_OUTPUT_DSO | PERF_OUTPUT_PERIOD,
158158

159159
.invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT,
160160
},
@@ -165,8 +165,9 @@ static struct {
165165
.fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID |
166166
PERF_OUTPUT_CPU | PERF_OUTPUT_TIME |
167167
PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP |
168-
PERF_OUTPUT_SYM | PERF_OUTPUT_DSO |
169-
PERF_OUTPUT_PERIOD | PERF_OUTPUT_BPF_OUTPUT,
168+
PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET |
169+
PERF_OUTPUT_DSO | PERF_OUTPUT_PERIOD |
170+
PERF_OUTPUT_BPF_OUTPUT,
170171

171172
.invalid_fields = PERF_OUTPUT_TRACE,
172173
},
@@ -185,10 +186,10 @@ static struct {
185186
.fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID |
186187
PERF_OUTPUT_CPU | PERF_OUTPUT_TIME |
187188
PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP |
188-
PERF_OUTPUT_SYM | PERF_OUTPUT_DSO |
189-
PERF_OUTPUT_PERIOD | PERF_OUTPUT_ADDR |
190-
PERF_OUTPUT_DATA_SRC | PERF_OUTPUT_WEIGHT |
191-
PERF_OUTPUT_PHYS_ADDR,
189+
PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET |
190+
PERF_OUTPUT_DSO | PERF_OUTPUT_PERIOD |
191+
PERF_OUTPUT_ADDR | PERF_OUTPUT_DATA_SRC |
192+
PERF_OUTPUT_WEIGHT | PERF_OUTPUT_PHYS_ADDR,
192193

193194
.invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT,
194195
},
@@ -199,8 +200,8 @@ static struct {
199200
.fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID |
200201
PERF_OUTPUT_CPU | PERF_OUTPUT_TIME |
201202
PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP |
202-
PERF_OUTPUT_SYM | PERF_OUTPUT_DSO |
203-
PERF_OUTPUT_PERIOD,
203+
PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET |
204+
PERF_OUTPUT_DSO | PERF_OUTPUT_PERIOD,
204205

205206
.invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT,
206207
},
@@ -211,8 +212,8 @@ static struct {
211212
.fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID |
212213
PERF_OUTPUT_CPU | PERF_OUTPUT_TIME |
213214
PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP |
214-
PERF_OUTPUT_SYM | PERF_OUTPUT_DSO |
215-
PERF_OUTPUT_SYNTH,
215+
PERF_OUTPUT_SYM | PERF_OUTPUT_SYMOFFSET |
216+
PERF_OUTPUT_DSO | PERF_OUTPUT_SYNTH,
216217

217218
.invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT,
218219
},
@@ -544,6 +545,7 @@ static int perf_session__check_output_opt(struct perf_session *session)
544545
if (attr->sample_type & PERF_SAMPLE_CALLCHAIN) {
545546
output[j].fields |= PERF_OUTPUT_IP;
546547
output[j].fields |= PERF_OUTPUT_SYM;
548+
output[j].fields |= PERF_OUTPUT_SYMOFFSET;
547549
output[j].fields |= PERF_OUTPUT_DSO;
548550
set_print_ip_opts(attr);
549551
goto out;

tools/perf/tests/shell/record+probe_libc_inet_pton.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@ nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
1616
trace_libc_inet_pton_backtrace() {
1717
idx=0
1818
expected[0]="ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)"
19-
expected[1]=".*inet_pton[[:space:]]\($libc|inlined\)$"
19+
expected[1]=".*inet_pton\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$"
2020
case "$(uname -m)" in
2121
s390x)
2222
eventattr='call-graph=dwarf,max-stack=4'
23-
expected[2]="gaih_inet.*[[:space:]]\($libc|inlined\)$"
24-
expected[3]="(__GI_)?getaddrinfo[[:space:]]\($libc|inlined\)$"
25-
expected[4]="main[[:space:]]\(.*/bin/ping.*\)$"
23+
expected[2]="gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$"
24+
expected[3]="(__GI_)?getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$"
25+
expected[4]="main\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$"
2626
;;
2727
*)
2828
eventattr='max-stack=3'
29-
expected[2]="getaddrinfo[[:space:]]\($libc\)$"
30-
expected[3]=".*\(.*/bin/ping.*\)$"
29+
expected[2]="getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$"
30+
expected[3]=".*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$"
3131
;;
3232
esac
3333

0 commit comments

Comments
 (0)