lkml.org 
[lkml]   [2019]   [May]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 035/167] libbpf: fix samples/bpf build failure due to undefined UINT32_MAX
    Date
    From: "Daniel T. Lee" <danieltimlee@gmail.com>

    [ 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 b8ea5843c39ee..e9423d6af9332 100644
    --- a/tools/lib/bpf/bpf.h
    +++ b/tools/lib/bpf/bpf.h
    @@ -23,6 +23,7 @@

    #include <linux/bpf.h>
    #include <stddef.h>
    +#include <stdint.h>

    int bpf_create_map_node(enum bpf_map_type map_type, int key_size,
    int value_size, int max_entries, __u32 map_flags,
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-05-22 21:40    [W:4.177 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site