• Tobias Klauser's avatar
    bpftool: Use linux/types.h from source tree for profiler build · fe4eb069
    Tobias Klauser authored
    When compiling bpftool on a system where the /usr/include/asm symlink
    doesn't exist (e.g. on an Ubuntu system without gcc-multilib installed),
    the build fails with:
    
        CLANG    skeleton/profiler.bpf.o
      In file included from skeleton/profiler.bpf.c:4:
      In file included from /usr/include/linux/bpf.h:11:
      /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
      #include <asm/types.h>
               ^~~~~~~~~~~~~
      1 error generated.
      make: *** [Makefile:123: skeleton/profiler.bpf.o] Error 1
    
    This indicates that the build is using linux/types.h from system headers
    instead of source tree headers.
    
    To fix this, adjust the clang search path to include the necessary
    headers from tools/testing/selftests/bpf/include/uapi and
    tools/include/uapi. Also use __bitwise__ instead of __bitwise in
    skeleton/profiler.h to avoid clashing with the definition in
    tools/testing/selftests/bpf/include/uapi/linux/types.h.
    Signed-off-by: default avatarTobias Klauser <tklauser@distanz.ch>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: default avatarQuentin Monnet <quentin@isovalent.com>
    Link: https://lore.kernel.org/bpf/20200312130330.32239-1-tklauser@distanz.ch
    fe4eb069
profiler.h 949 Bytes