linux/tools/perf/tests
Wang Nan 7b6982ce4b perf test: Add libbpf relocation checker
There's a bug in LLVM that it can generate unneeded relocation
information. See [1] and [2]. Libbpf should check the target section of
a relocation symbol.

This patch adds a testcase which references a global variable (BPF
doesn't support global variables). Before fixing libbpf, the new test
case can be loaded into kernel, the global variable acts like the first
map. It is incorrect.

Result:

  # ~/perf test BPF
  37: Test BPF filter                                          :
  37.1: Test basic BPF filtering                               : Ok
  37.2: Test BPF prologue generation                           : Ok
  37.3: Test BPF relocation checker                            : FAILED!

  # ~/perf test -v BPF
  ...
  libbpf: loading object '[bpf_relocation_test]' from buffer
  libbpf: section .strtab, size 126, link 0, flags 0, type=3
  libbpf: section .text, size 0, link 0, flags 6, type=1
  libbpf: section .data, size 0, link 0, flags 3, type=1
  libbpf: section .bss, size 0, link 0, flags 3, type=8
  libbpf: section func=sys_write, size 104, link 0, flags 6, type=1
  libbpf: found program func=sys_write
  libbpf: section .relfunc=sys_write, size 16, link 10, flags 0, type=9
  libbpf: section maps, size 16, link 0, flags 3, type=1
  libbpf: maps in [bpf_relocation_test]: 16 bytes
  libbpf: section license, size 4, link 0, flags 3, type=1
  libbpf: license of [bpf_relocation_test] is GPL
  libbpf: section version, size 4, link 0, flags 3, type=1
  libbpf: kernel version of [bpf_relocation_test] is 40400
  libbpf: section .symtab, size 144, link 1, flags 0, type=2
  libbpf: map 0 is "my_table"
  libbpf: collecting relocating info for: 'func=sys_write'
  libbpf: relocation: insn_idx=7
  Success unexpectedly: libbpf error when dealing with relocation
  test child finished with -1
  ---- end ----
  Test BPF filter subtest 2: FAILED!

[1] https://llvm.org/bugs/show_bug.cgi?id=26243
[2] https://patchwork.ozlabs.org/patch/571385/

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Li Zefan <lizefan@huawei.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will.deacon@arm.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1453715801-7732-2-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2016-01-26 12:10:55 -03:00
..
attr perf tests: Fix attr tests 2015-04-08 10:49:53 -03:00
.gitignore perf test: Add libbpf relocation checker 2016-01-26 12:10:55 -03:00
attr.c perf subcmd: Create subcmd library 2015-12-17 14:27:14 -03:00
attr.py perf tools: Remove EOL whitespaces 2015-01-21 13:24:31 -03:00
bp_signal_overflow.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
bp_signal.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
bpf-script-example.c perf test: Enhance the LLVM test: update basic BPF test program 2015-11-06 17:49:24 -03:00
bpf-script-test-kbuild.c perf test: Enhance the LLVM tests: add kbuild test 2015-11-06 17:49:50 -03:00
bpf-script-test-prologue.c perf test: Test the BPF prologue adding infrastructure 2015-11-18 17:51:04 -03:00
bpf-script-test-relocation.c perf test: Add libbpf relocation checker 2016-01-26 12:10:55 -03:00
bpf.c perf test: Add libbpf relocation checker 2016-01-26 12:10:55 -03:00
Build perf test: Add libbpf relocation checker 2016-01-26 12:10:55 -03:00
builtin-test.c perf tools: Add event_update event unit type 2015-12-17 15:11:10 -03:00
code-reading.c perf test: Fix cpus and thread maps reference in error path 2015-12-07 18:12:55 -03:00
cpumap.c perf cpu_map: Add cpu_map__new_event function 2015-12-17 14:38:18 -03:00
dso-data.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
dwarf-unwind.c perf test: Use machine__new_host in dwarf unwind test 2015-12-07 18:12:54 -03:00
event_update.c perf tools: Add event_update event cpus type 2015-12-17 15:13:38 -03:00
evsel-roundtrip-name.c perf test: Prevent using bpf-output event in round trip name test 2015-12-07 18:12:56 -03:00
evsel-tp-sched.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
fdarray.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
hists_common.c perf test: Fix false TEST_OK result for 'perf test hist' 2016-01-11 19:22:22 -03:00
hists_common.h perf tests: Define and use symbolic names for fake symbols 2014-06-01 14:35:11 +02:00
hists_cumulate.c perf test: Reset err after using it hold errcode in hist testcases 2016-01-11 19:22:22 -03:00
hists_filter.c perf test: Reset err after using it hold errcode in hist testcases 2016-01-11 19:22:22 -03:00
hists_link.c perf test: Reset err after using it hold errcode in hist testcases 2016-01-11 19:22:22 -03:00
hists_output.c perf test: Reset err after using it hold errcode in hist testcases 2016-01-11 19:22:22 -03:00
keep-tracking.c perf evlist: Remove perf_evlist__(enable|disable)_event functions 2016-01-08 14:15:43 -03:00
kmod-path.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
llvm.c perf test: Add libbpf relocation checker 2016-01-26 12:10:55 -03:00
llvm.h perf test: Add libbpf relocation checker 2016-01-26 12:10:55 -03:00
make perf build: Pass O option to kernel makefile in build-test 2016-01-15 16:32:00 -03:00
mmap-basic.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
mmap-thread-lookup.c perf test: Use machine__new_host in mmap thread lookup test 2015-12-07 18:12:54 -03:00
openat-syscall-all-cpus.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
openat-syscall-tp-fields.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
openat-syscall.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
parse-events.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
parse-no-sample-id-all.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
perf-record.c perf test: No need for setting attr.sample_freq on the RECORD test 2016-01-07 13:20:22 -03:00
perf-targz-src-pkg perf tools: Add test for building detached source tarballs 2014-01-13 10:06:26 -03:00
pmu.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
python-use.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
sample-parsing.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
stat.c perf tools: Add stat round event synthesize function 2015-12-17 14:55:44 -03:00
sw-clock.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
switch-tracking.c perf evlist: Remove perf_evlist__(enable|disable)_event functions 2016-01-08 14:15:43 -03:00
task-exit.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
tests.h perf tools: Add event_update event unit type 2015-12-17 15:11:10 -03:00
thread-map.c perf thread_map: Add thread_map__new_event function 2015-12-17 14:38:16 -03:00
thread-mg-share.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
topology.c perf tests: Pass the subtest index to each test routine 2015-11-19 13:19:15 -03:00
vmlinux-kallsyms.c perf test: Fixup aliases checking in the 'vmlinux matches kallsyms' test 2016-01-26 11:52:52 -03:00