• Jiri Olsa's avatar
    perf tools: Synthesize bpf_trampoline/dispatcher ksymbol event · 943930e4
    Jiri Olsa authored
    Synthesize bpf images (trampolines/dispatchers) on start, as ksymbol
    events from /proc/kallsyms. Having this perf can recognize samples from
    those images and perf report and top shows them correctly.
    
    The rest of the ksymbol handling is already in place from for the bpf
    programs monitoring, so only the initial state was needed.
    
    perf report output:
    
      # Overhead  Command     Shared Object                  Symbol
    
        12.37%  test_progs  [kernel.vmlinux]                 [k] entry_SYSCALL_64
        11.80%  test_progs  [kernel.vmlinux]                 [k] syscall_return_via_sysret
         9.63%  test_progs  bpf_prog_bcf7977d3b93787c_prog2  [k] bpf_prog_bcf7977d3b93787c_prog2
         6.90%  test_progs  bpf_trampoline_24456             [k] bpf_trampoline_24456
         6.36%  test_progs  [kernel.vmlinux]                 [k] memcpy_erms
    
    Committer notes:
    
    Use scnprintf() instead of strncpy() to overcome this on fedora:32,
    rawhide and OpenMandriva Cooker:
    
        CC       /tmp/build/perf/util/bpf-event.o
      In file included from /usr/include/string.h:495,
                       from /git/linux/tools/lib/bpf/libbpf_common.h:12,
                       from /git/linux/tools/lib/bpf/bpf.h:31,
                       from util/bpf-event.c:4:
      In function 'strncpy',
          inlined from 'process_bpf_image' at util/bpf-event.c:323:2,
          inlined from 'kallsyms_process_symbol' at util/bpf-event.c:358:9:
      /usr/include/bits/string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 256 equals destination size [-Werror=stringop-truncation]
        106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      cc1: all warnings being treated as errors
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Acked-by: default avatarSong Liu <songliubraving@fb.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrii Nakryiko <andriin@fb.com>
    Cc: Björn Töpel <bjorn.topel@intel.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: David S. Miller <davem@redhat.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Jesper Dangaard Brouer <hawk@kernel.org>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20200312195610.346362-14-jolsa@kernel.org/Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    943930e4
bpf-event.c 14.6 KB