android_kernel_oneplus_msm8998/tools
Jiri Olsa 39ee160c4f perf symbols: Filter out hidden symbols from labels
[ Upstream commit 59a17706915fe5ea6f711e1f92d4fb706bce07fe ]

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: Jiri 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@krava
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-03-23 08:44:27 +01:00
..
arch perf tools: Move syscall number fallbacks from perf-sys.h to tools/arch/x86/include/asm/ 2018-07-19 15:35:57 +02:00
build Kbuild: fix # escaping in .cmd files for future Make 2018-07-19 15:35:57 +02:00
cgroup
firewire
hv Tools: hv: Fix a bug in the key delete code 2018-09-26 08:35:07 +02:00
iio iio: generic_buffer: be helpful about enabling channels 2015-08-16 10:51:26 +01:00
include tools include: Add a __fallthrough statement 2017-07-15 11:57:47 +02:00
laptop/freefall Move freefall program from Documentation/ to tools/ 2015-06-08 16:42:07 -06:00
lguest tools/lguest: Clean up include dir 2015-08-26 06:12:35 +02:00
lib tools/libbpf: handle issues with bpf ELF objects containing .eh_frames 2018-05-30 07:48:57 +02:00
net tools/net: Use include/uapi with __EXPORTED_HEADERS__ 2015-11-15 17:24:33 -05:00
nfsd
perf perf symbols: Filter out hidden symbols from labels 2019-03-23 08:44:27 +01:00
power tools/power turbostat: Read extended processor family from CPUID 2018-09-05 09:18:36 +02:00
scripts Kbuild: fix # escaping in .cmd files for future Make 2018-07-19 15:35:57 +02:00
testing selftests: Move networking/timestamping from Documentation 2018-12-17 21:55:17 +01:00
thermal/tmon tools/thermal: tmon: fix for segfault 2018-05-30 07:49:10 +02:00
time
usb tools: usb: ffs-test: Fix build on big endian systems 2018-09-05 09:18:34 +02:00
virtio tools/virtio: fix byteswap logic 2015-12-07 17:28:10 +02:00
vm tools/vm/page-types.c: fix "defined but not used" warning 2018-10-10 08:52:11 +02:00
Makefile tools: Add a "make all" rule 2015-11-12 18:58:10 -03:00