libbpf: Fix global variable relocation
authorAndrii Nakryiko <andriin@fb.com>
Wed, 27 Nov 2019 20:06:50 +0000 (12:06 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 28 Nov 2019 00:34:21 +0000 (16:34 -0800)
commit53f8dd434b6fe666b1c4e0be80a8727e8fa9839f
treebe37020c2c607328241889de5890eb1ed460a2d7
parentb568405856906ee4d9ba6284fd36f2928653a623
libbpf: Fix global variable relocation

Similarly to a0d7da26ce86 ("libbpf: Fix call relocation offset calculation
bug"), relocations against global variables need to take into account
referenced symbol's st_value, which holds offset into a corresponding data
section (and, subsequently, offset into internal backing map). For static
variables this offset is always zero and data offset is completely described
by respective instruction's imm field.

Convert a bunch of selftests to global variables. Previously they were relying
on `static volatile` trick to ensure Clang doesn't inline static variables,
which with global variables is not necessary anymore.

Fixes: 393cdfbee809 ("libbpf: Support initialized global variables")
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20191127200651.1381348-1-andriin@fb.com
tools/lib/bpf/libbpf.c
tools/testing/selftests/bpf/progs/fentry_test.c
tools/testing/selftests/bpf/progs/fexit_bpf2bpf.c
tools/testing/selftests/bpf/progs/fexit_test.c
tools/testing/selftests/bpf/progs/test_mmap.c