diff options
author | Andrii Nakryiko <andriin@fb.com> | 2019-11-27 12:06:50 -0800 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2019-11-27 16:34:21 -0800 |
commit | 53f8dd434b6fe666b1c4e0be80a8727e8fa9839f (patch) | |
tree | be37020c2c607328241889de5890eb1ed460a2d7 /tools/testing/selftests/bpf/progs/test_mmap.c | |
parent | b568405856906ee4d9ba6284fd36f2928653a623 (diff) | |
download | linux-53f8dd434b6fe666b1c4e0be80a8727e8fa9839f.tar.gz linux-53f8dd434b6fe666b1c4e0be80a8727e8fa9839f.tar.bz2 linux-53f8dd434b6fe666b1c4e0be80a8727e8fa9839f.zip |
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
Diffstat (limited to 'tools/testing/selftests/bpf/progs/test_mmap.c')
-rw-r--r-- | tools/testing/selftests/bpf/progs/test_mmap.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/testing/selftests/bpf/progs/test_mmap.c b/tools/testing/selftests/bpf/progs/test_mmap.c index 0d2ec9fbcf61..e808791b7047 100644 --- a/tools/testing/selftests/bpf/progs/test_mmap.c +++ b/tools/testing/selftests/bpf/progs/test_mmap.c @@ -15,8 +15,8 @@ struct { __type(value, __u64); } data_map SEC(".maps"); -static volatile __u64 in_val; -static volatile __u64 out_val; +__u64 in_val = 0; +__u64 out_val = 0; SEC("raw_tracepoint/sys_enter") int test_mmap(void *ctx) |