libbpf: Fix sym->st_value print on 32-bit arches
authorAlexei Starovoitov <ast@kernel.org>
Thu, 28 Nov 2019 01:46:56 +0000 (17:46 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 28 Nov 2019 01:46:56 +0000 (17:46 -0800)
The st_value field is a 64-bit value and causing this error on 32-bit arches:

In file included from libbpf.c:52:
libbpf.c: In function 'bpf_program__record_reloc':
libbpf_internal.h:59:22: error: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'Elf64_Addr' {aka 'const long long unsigned int'} [-Werror=format=]

Fix it with (__u64) cast.

Fixes: 1f8e2bcb2cd5 ("libbpf: Refactor relocation handling")
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/lib/bpf/libbpf.c

index bae692831e14d8276097147389340fdb79459e4f..3f09772192f16b6b50f61534afe387a684fba738 100644 (file)
@@ -1817,7 +1817,7 @@ static int bpf_program__record_reloc(struct bpf_program *prog,
                        return -LIBBPF_ERRNO__RELOC;
                }
                if (sym->st_value % 8) {
-                       pr_warn("bad call relo offset: %lu\n", sym->st_value);
+                       pr_warn("bad call relo offset: %llu\n", (__u64)sym->st_value);
                        return -LIBBPF_ERRNO__RELOC;
                }
                reloc_desc->type = RELO_CALL;