| From 849c1d3f7b23d98f5a6aa55f607a3cdee43d203d Mon Sep 17 00:00:00 2001 |
| From: "Daniel T. Lee" <danieltimlee@gmail.com> |
| Date: Wed, 24 Apr 2019 05:24:56 +0900 |
| Subject: libbpf: fix samples/bpf build failure due to undefined UINT32_MAX |
| |
| [ Upstream commit 32e621e55496a0009f44fe4914cd4a23cade4984 ] |
| |
| Currently, building bpf samples will cause the following error. |
| |
| ./tools/lib/bpf/bpf.h:132:27: error: 'UINT32_MAX' undeclared here (not in a function) .. |
| #define BPF_LOG_BUF_SIZE (UINT32_MAX >> 8) /* verifier maximum in kernels <= 5.1 */ |
| ^ |
| ./samples/bpf/bpf_load.h:31:25: note: in expansion of macro 'BPF_LOG_BUF_SIZE' |
| extern char bpf_log_buf[BPF_LOG_BUF_SIZE]; |
| ^~~~~~~~~~~~~~~~ |
| |
| Due to commit 4519efa6f8ea ("libbpf: fix BPF_LOG_BUF_SIZE off-by-one error") |
| hard-coded size of BPF_LOG_BUF_SIZE has been replaced with UINT32_MAX which is |
| defined in <stdint.h> header. |
| |
| Even with this change, bpf selftests are running fine since these are built |
| with clang and it includes header(-idirafter) from clang/6.0.0/include. |
| (it has <stdint.h>) |
| |
| clang -I. -I./include/uapi -I../../../include/uapi -idirafter /usr/local/include -idirafter /usr/include \ |
| -idirafter /usr/lib/llvm-6.0/lib/clang/6.0.0/include -idirafter /usr/include/x86_64-linux-gnu \ |
| -Wno-compare-distinct-pointer-types -O2 -target bpf -emit-llvm -c progs/test_sysctl_prog.c -o - | \ |
| llc -march=bpf -mcpu=generic -filetype=obj -o /linux/tools/testing/selftests/bpf/test_sysctl_prog.o |
| |
| But bpf samples are compiled with GCC, and it only searches and includes |
| headers declared at the target file. As '#include <stdint.h>' hasn't been |
| declared in tools/lib/bpf/bpf.h, it causes build failure of bpf samples. |
| |
| gcc -Wp,-MD,./samples/bpf/.sockex3_user.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes \ |
| -O2 -fomit-frame-pointer -std=gnu89 -I./usr/include -I./tools/lib/ -I./tools/testing/selftests/bpf/ \ |
| -I./tools/ lib/ -I./tools/include -I./tools/perf -c -o ./samples/bpf/sockex3_user.o ./samples/bpf/sockex3_user.c; |
| |
| This commit add declaration of '#include <stdint.h>' to tools/lib/bpf/bpf.h |
| to fix this problem. |
| |
| Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com> |
| Acked-by: Yonghong Song <yhs@fb.com> |
| Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/lib/bpf/bpf.h | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h |
| index 6ffdd79bea89d..6dc1f418034fb 100644 |
| --- a/tools/lib/bpf/bpf.h |
| +++ b/tools/lib/bpf/bpf.h |
| @@ -26,6 +26,7 @@ |
| #include <linux/bpf.h> |
| #include <stdbool.h> |
| #include <stddef.h> |
| +#include <stdint.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| -- |
| 2.20.1 |
| |