• Wang Nan's avatar
    perf symbols: Record text offset in dso to calculate objdump address · a58f7033
    Wang Nan authored
    In this patch, the offset of '.text' section is stored into dso
    and used here to re-calculate address to objdump.
    
    In most of the cases, executable code is in '.text' section, so the
    adjustment made to a symbol in dso__load_sym (using
    sym.st_value -= shdr.sh_addr - shdr.sh_offset) should equal to
    'sym.st_value -= dso->text_offset'. Therefore, adding text_offset back
    get objdump address from symbol address (rip). However, it is not true
    for kernel and kernel module since there could be multiple executable
    sections with different offset. Exclude kernel for this reason.
    
    After this patch, even dso->adjust_symbols is set to true for shared
    objects, map__rip_2objdump() and map__objdump_2mem() would return
    correct result, so perf behavior of annotate won't be changed.
    Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Cody P Schafer <dev@codyps.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kirill Smelkov <kirr@nexedi.com>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1460024671-64774-2-git-send-email-wangnan0@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    a58f7033
map.c 19.3 KB