• A
    perf annotate: Use ops->target.name when available for unresolved call targets · 4c9cb2c2
    Arnaldo Carvalho de Melo 提交于
    There is a bug where when using 'perf annotate timerqueue_add' the
    target for its only routine called with the 'callq' instruction,
    'rb_insert_color', doesn't get resolved from its address when parsing
    that 'callq' instruction.
    
    That symbol resolution works when using 'perf report --tui' and then
    doing annotation for 'timerqueue_add' from there, the vmlinux
    dso->symbols rb_tree somehow gets in a state that we can't find that
    address, that is a bug that has to be further investigated.
    
    But since the objdump output has the function name, i.e. the raw objdump
    disassembled line looks like:
    
    So, before:
    
      # perf annotate timerqueue_add
    
                  │      mov    %rbx,%rdi
                  │      mov    %rbx,(%rdx)
                  │    → callq  *ffffffff8184dc80
                  │      mov    0x8(%rbp),%rdx
                  │      test   %rdx,%rdx
                  │    ↓ je     67
    
      # perf report
    
                  │      mov    %rbx,%rdi
                  │      mov    %rbx,(%rdx)
                  │    → callq  rb_insert_color
                  │      mov    0x8(%rbp),%rdx
                  │      test   %rdx,%rdx
                  │    ↓ je     67
    
    And after both look the same:
    
      # perf annotate timerqueue_add
    
                  │      mov    %rbx,%rdi
                  │      mov    %rbx,(%rdx)
                  │    → callq  rb_insert_color
                  │      mov    0x8(%rbp),%rdx
                  │      test   %rdx,%rdx
                  │    ↓ je     67
    
    From 'perf report' one can annotate and navigate to that 'rb_insert_color'
    function, but not directly from 'perf annotate timerqueue_add', that
    remains to be investigated and fixed.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-nkktz6355rhqtq7o8atr8f8r@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    4c9cb2c2
annotate.c 47.0 KB