• Arnaldo Carvalho de Melo's avatar
    perf_counter tools: Adjust symbols in ET_EXEC files too · 30d7a77d
    Arnaldo Carvalho de Melo authored
    Ingo Molnar wrote:
    
    > i just bisected a 'perf report' bug that would cause us to not
    > resolve all user-space symbols in a 'git gc' run to:
    >
    > f5812a7a is first bad commit
    > commit f5812a7a
    > Author: Arnaldo Carvalho de Melo <acme@redhat.com>
    > Date:   Tue Jun 30 11:43:17 2009 -0300
    >
    >     perf_counter tools: Adjust only prelinked symbol's addresses
    
    Rename ->prelinked to ->adjust_symbols and making what was done
    only for prelinked libraries also to ET_EXEC binaries, such as
    /usr/bin/git:
    
    [acme@doppio pahole]$ readelf -h /usr/bin/git | grep Type
      Type:                              EXEC (Executable file)
    [acme@doppio pahole]$
    
    And after installing the 'git-debuginfo' package, I get correct results:
    
    [acme@doppio linux-2.6-tip]$ perf report --sort comm,dso,symbol -d /usr/bin/git | head -20
    
     #
     # (1139614 samples)
     #
     # Overhead           Command  Shared Object              Symbol
     # ........  ................  .........................  ......
     #
        34.98%               git  /usr/bin/git               [.] send_sideband
        33.39%               git  /usr/bin/git               [.] enter_repo
         6.81%               git  /usr/bin/git               [.] diff_opt_parse
         4.95%               git  /usr/bin/git               [.] is_repository_shallow
         3.24%               git  /usr/bin/git               [.] odb_mkstemp
         1.39%               git  /usr/bin/git               [.] output
         1.34%               git  /usr/bin/git               [.] xmmap
         1.25%               git  /usr/bin/git               [.] receive_pack_config
         1.16%               git  /usr/bin/git               [.] git_pathdup
         0.90%               git  /usr/bin/git               [.] read_object_with_reference
         0.86%               git  /usr/bin/git               [.] show_patch_diff
         0.85%               git  /usr/bin/git               0x00000000095e2e
         0.69%               git  /usr/bin/git               [.] display
    [acme@doppio linux-2.6-tip]$
    
    I'll check what are the last cases where we can't resolve symbols, like
    this 0x00000000095e2e later.
    
    And I guess this will fix the problems Mike were seeing too:
    
     [acme@doppio linux-2.6-tip]$ readelf -h ../build/perf/vmlinux | grep Type
       Type:                              EXEC (Executable file)
     [acme@doppio linux-2.6-tip]$
    
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <new-submission>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    30d7a77d
symbol.c 16.8 KB