Re: [PATCH] bpftool: use linux/types.h from source tree for profiler build

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2020-03-12 11:53 UTC+0100 ~ Tobias Klauser <tklauser@xxxxxxxxxx>
> 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 undef __bitwise in skeleton/profiler.h avoid
> clashing with the empty definition in
> tools/testing/selftests/bpf/include/uapi/linux/types.h.
> 
> Cc: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
> Cc: Song Liu <songliubraving@xxxxxx>
> Cc: Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx>
> Signed-off-by: Tobias Klauser <tklauser@xxxxxxxxxx>

> diff --git a/tools/bpf/bpftool/skeleton/profiler.h b/tools/bpf/bpftool/skeleton/profiler.h
> index e03b53eae767..95358c0df5ef 100644
> --- a/tools/bpf/bpftool/skeleton/profiler.h
> +++ b/tools/bpf/bpftool/skeleton/profiler.h
> @@ -27,6 +27,7 @@ enum {
>  	true = 1,
>  };
>  
> +#undef __bitwise
>  #ifdef __CHECKER__
>  #define __bitwise__ __attribute__((bitwise))
>  #else
> 

Even with the #undef above, I get warnings on __bitwise being redefined
in tools/testing/selftests/bpf/include/uapi/linux/types.h. Can we maybe
just find another name (or number of underscores) for the macro in
skeleton/profiler.h?

Makefile change works well otherwise, thanks (tested on Ubuntu with and
without gcc-multilib).

Quentin



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux