• Song Liu's avatar
    perf symbols: Introduce DSO_BINARY_TYPE__BPF_PROG_INFO · 9b86d04d
    Song Liu authored
    Introduce a new dso type DSO_BINARY_TYPE__BPF_PROG_INFO for BPF programs. In
    symbol__disassemble(), DSO_BINARY_TYPE__BPF_PROG_INFO dso will call into a new
    function symbol__disassemble_bpf() in an upcoming patch, where annotation line
    information is filled based bpf_prog_info and btf saved in given perf_env.
    
    Committer notes:
    
    Removed the unnamed union with 'bpf_prog' and 'cache' in 'struct dso',
    to fix this bug when exiting 'perf top':
    
      # perf top
      perf: Segmentation fault
      -------- backtrace --------
      perf[0x5a785a]
      /lib64/libc.so.6(+0x385bf)[0x7fd68443c5bf]
      perf(rb_first+0x2b)[0x4d6eeb]
      perf(dso__delete+0xb7)[0x4dffb7]
      perf[0x4f9e37]
      perf(perf_session__delete+0x64)[0x504df4]
      perf(cmd_top+0x1957)[0x454467]
      perf[0x4aad18]
      perf(main+0x61c)[0x42ec7c]
      /lib64/libc.so.6(__libc_start_main+0xf2)[0x7fd684428412]
      perf(_start+0x2d)[0x42eead]
      #
      # addr2line -fe ~/bin/perf 0x4dffb7
      dso_cache__free
      /home/acme/git/perf/tools/perf/util/dso.c:713
    
    That is trying to access the dso->data.cache, and that is not used with
    BPF programs, so we end up accessing what is in bpf_prog.first_member,
    b00m.
    Signed-off-by: default avatarSong Liu <songliubraving@fb.com>
    Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stanislav Fomichev <sdf@google.com>
    Cc: kernel-team@fb.com
    Link: http://lkml.kernel.org/r/20190312053051.2690567-13-songliubraving@fb.com
    [ split from a larger patch ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    9b86d04d
symbol.c 50.6 KB