• Adrian Hunter's avatar
    perf symbols: Add symbol for .plt header · 698a0d1a
    Adrian Hunter authored
    perf expands the _init symbol over .plt because there are no PLT symbols
    at that point, but then dso__synthesize_plt_symbols() creates them.
    
    Fix by truncating the previous symbol and inserting a symbol for .plt
    header.
    
    Example:
    
     Before:
    
       $ perf test --dso `which uname` -v Symbols
        74: Symbols                                                         :
       --- start ---
       test child forked, pid 191028
       Problems creating module maps, continuing anyway...
       Testing /usr/bin/uname
       Overlapping symbols:
        2000-25f0 g _init
        2040-2050 g free@plt
       test child finished with -1
       ---- end ----
       Symbols: FAILED!
       $ perf test --dso `which uname` -vv Symbols 2>/tmp/cmp1.txt
    
     After:
    
       $ perf test --dso `which uname` -v Symbols
        74: Symbols                                                         :
       --- start ---
       test child forked, pid 194291
       Testing /usr/bin/uname
       test child finished with 0
       ---- end ----
       Symbols: Ok
       $ perf test --dso `which uname` -vv Symbols 2>/tmp/cmp2.txt
       $ diff /tmp/cmp1.txt /tmp/cmp2.txt
       4,5c4
       < test child forked, pid 191031
       < Problems creating module maps, continuing anyway...
       ---
       > test child forked, pid 194296
       9c8,9
       <  2000-25f0 g _init
       ---
       >  2000-2030 g _init
       >  2030-2040 g .plt
       100,103c100
       < Overlapping symbols:
       <  2000-25f0 g _init
       <  2040-2050 g free@plt
       < test child finished with -1
       ---
       > test child finished with 0
       105c102
       < Symbols: FAILED!
       ---
       > Symbols: Ok
       $
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20230120123456.12449-8-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    698a0d1a
symbol-elf.c 58.3 KB