• Jiri Olsa's avatar
    perf symbols: Filter out hidden symbols from labels · c575eb31
    Jiri Olsa authored
    BugLink: https://bugs.launchpad.net/bugs/1822271
    
    [ Upstream commit 59a17706 ]
    
    When perf is built with the annobin plugin (RHEL8 build) extra symbols
    are added to its binary:
    
      # nm perf | grep annobin | head -10
      0000000000241100 t .annobin_annotate.c
      0000000000326490 t .annobin_annotate.c
      0000000000249255 t .annobin_annotate.c_end
      00000000003283a8 t .annobin_annotate.c_end
      00000000001bce18 t .annobin_annotate.c_end.hot
      00000000001bce18 t .annobin_annotate.c_end.hot
      00000000001bc3e2 t .annobin_annotate.c_end.unlikely
      00000000001bc400 t .annobin_annotate.c_end.unlikely
      00000000001bce18 t .annobin_annotate.c.hot
      00000000001bce18 t .annobin_annotate.c.hot
      ...
    
    Those symbols have no use for report or annotation and should be
    skipped.  Moreover they interfere with the DWARF unwind test on the PPC
    arch, where they are mixed with checked symbols and then the test fails:
    
      # perf test dwarf -v
      59: Test dwarf unwind                                     :
      --- start ---
      test child forked, pid 8515
      unwind: .annobin_dwarf_unwind.c:ip = 0x10dba40dc (0x2740dc)
      ...
      got: .annobin_dwarf_unwind.c 0x10dba40dc, expecting test__arch_unwind_sample
      unwind: failed with 'no error'
    
    The annobin symbols are defined as NOTYPE/LOCAL/HIDDEN:
    
      # readelf -s ./perf | grep annobin | head -1
        40: 00000000001bce4f     0 NOTYPE  LOCAL  HIDDEN    13 .annobin_init.c
    
    They can still pass the check for the label symbol. Adding check for
    HIDDEN and INTERNAL (as suggested by Nick below) visibility and filter
    out such symbols.
    
    >   Just to be awkward, if you are going to ignore STV_HIDDEN
    >   symbols then you should probably also ignore STV_INTERNAL ones
    >   as well...  Annobin does not generate them, but you never know,
    >   one day some other tool might create some.
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Nick Clifton <nickc@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20190128133526.GD15461@kravaSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>
    Acked-by: default avatarJuerg Haefliger <juerg.haefliger@canonical.com>
    Signed-off-by: default avatarKleber Sacilotto de Souza <kleber.souza@canonical.com>
    c575eb31
symbol-elf.c 40.2 KB