Re: [PATCH v1 0/2] perf report: Support annotation of code without symbols

From: Jin, Yao
Date: Thu Feb 20 2020 - 07:03:23 EST

On 2/20/2020 7:56 PM, Jiri Olsa wrote:
On Thu, Feb 20, 2020 at 08:59:00AM +0800, Jin Yao wrote:
For perf report on stripped binaries it is currently impossible to do
annotation. The annotation state is all tied to symbols, but there are
either no symbols, or symbols are not covering all the code.

We should support the annotation functionality even without symbols.

The first patch uses al_addr to print because it's easy to dump
the instructions from this address in binary for branch mode.

The second patch supports the annotation on stripped binary.

Jin Yao (2):
perf util: Print al_addr when symbol is not found
perf annotate: Support interactive annotation of code without symbols

looks good, but I'm getting crash when annotating unresolved kernel address:


Thanks for reporting the issue.

I guess you are trying the "0xffffffff81c00ae7", let me try to reproduce this issue.

Jin Yao

Samples: 14 of event 'cycles:u', Event count (approx.): 1822321
Overhead Command Shared Object Symbol
26.86% ls [.] __strcoll_l â
17.03% ls ls [.] 0x0000000000008968 â
13.10% ls [unknown] [k] 0xffffffff81c00ae7 â
13.02% ls [.] _dl_cache_libcmp â
12.84% ls [.] _int_malloc â
11.94% ls [.] __memcpy_chk â
5.21% ls [.] __GI___tunables_init â
Program received signal SIGSEGV, Segmentation fault. â
add_annotate_opt (browser=0xec34a0, act=0x7fffffffabf0, optstr=0x7fffffffab70, ms=0xdbdb60, addr=18446744071591430887) at ui/browsers/hists.c:2500 â
2500 if (ms->map->dso->annotate_warned) â
Missing separate debuginfos, use: dnf debuginfo-install brotli-1.0.7-6.fc31.x86_64 bzip2-libs-1.0.8-1.fc31.x86_64 cyrus-sasl-lib-2.1.27-2.fc31.x86_64 elfutils-debuginfod-client-0.178-7.fc31.x86_64 elfutils-libelf-0.178-7.fc31.x86_64 elfutils-libs-0.178-7.fc31.x86_64 glib2-2.62.5-1.fc31.x86_64 keyutils-libs-1.6-3.fc31.x86_64 krb5-libs-1.17-46.fc31.x86_64 libbabeltrace-1.5.7-2.fc31.x86_64 libcap-2.26-6.fc31.x86_64 libcom_err-1.45.5-1.fc31.x86_64 libcurl-7.66.0-1.fc31.x86_64 libgcc-9.2.1-1.fc31.x86_64 libidn2-2.3.0-1.fc31.x86_64 libnghttp2-1.40.0-1.fc31.x86_64 libpsl-0.21.0-2.fc31.x86_64 libselinux-2.9-5.fc31.x86_64 libssh-0.9.3-1.fc31.x86_64 libunwind-1.3.1-5.fc31.x86_64 libuuid-2.34-4.fc31.x86_64 libxcrypt-4.4.14-1.fc31.x86_64 libzstd-1.4.4-1.fc31.x86_64 openldap-2.4.47-3.fc31.x86_64 openssl-libs-1.1.1d-2.fc31.x86_64 pcre-8.43-3.fc31.x86_64 pcre2-10.34-6.fc31.x86_64 perl-libs-5.30.1-449.fc31.x86_64 popt-1.16-18.fc31.x86_64 python2-libs-2.7.17-1.fc31.x86_64 slang-2.3.2-6.fc31.x86_64 xz-libs-5.2.4-6.fc31.x86_64 zlib-1.2.11-20.fc31.x86_64 â
(gdb) bt â
#0 add_annotate_opt (browser=0xec34a0, act=0x7fffffffabf0, optstr=0x7fffffffab70, ms=0xdbdb60, addr=18446744071591430887) at ui/browsers/hists.c:2500 â
#1 0x000000000061caf9 in perf_evsel__hists_browse (evsel=0xc58860, nr_events=1, helpline=0xef69f0 "Tip: Show current config key-value pairs: perf config --list", left_exits=false, hbt=0x0, min_pcnt=0, â
env=0xc5c7b0, warn_lost_event=true, annotation_opts=0x7fffffffb518) at ui/browsers/hists.c:3265 â
#2 0x000000000061dbc2 in perf_evlist__tui_browse_hists (evlist=0xc55ed0, help=0xef69f0 "Tip: Show current config key-value pairs: perf config --list", hbt=0x0, min_pcnt=0, env=0xc5c7b0, warn_lost_event=true, â
annotation_opts=0x7fffffffb518) at ui/browsers/hists.c:3569 â
#3 0x00000000004511e4 in report__browse_hists (rep=0x7fffffffb380) at builtin-report.c:630 â
#4 0x00000000004521db in __cmd_report (rep=0x7fffffffb380) at builtin-report.c:975 â
#5 0x000000000045444a in cmd_report (argc=0, argv=0x7fffffffd820) at builtin-report.c:1540 â
#6 0x00000000004e384a in run_builtin (p=0xa5b370 <commands+240>, argc=1, argv=0x7fffffffd820) at perf.c:312 â
#7 0x00000000004e3ab7 in handle_internal_command (argc=1, argv=0x7fffffffd820) at perf.c:364 â
#8 0x00000000004e3bfe in run_argv (argcp=0x7fffffffd67c, argv=0x7fffffffd670) at perf.c:408 â
#9 0x00000000004e3fca in main (argc=1, argv=0x7fffffffd820) at perf.c:538 â
(gdb) â