* [PATCH] bpftool: use linux/types.h from source tree for profiler build
@ 2020-03-12 10:53 Tobias Klauser
2020-03-12 12:48 ` Quentin Monnet
2020-03-12 13:03 ` [PATCH bpf-next v2] " Tobias Klauser
0 siblings, 2 replies; 8+ messages in thread
From: Tobias Klauser @ 2020-03-12 10:53 UTC (permalink / raw)
To: Daniel Borkmann, Alexei Starovoitov
Cc: Song Liu, Yonghong Song, bpf, Alexei Starovoitov
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@iogearbox.net>
Cc: Song Liu <songliubraving@fb.com>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
---
tools/bpf/bpftool/Makefile | 5 ++++-
tools/bpf/bpftool/skeleton/profiler.h | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
index 20a90d8450f8..f294f6c1e795 100644
--- a/tools/bpf/bpftool/Makefile
+++ b/tools/bpf/bpftool/Makefile
@@ -120,7 +120,10 @@ $(OUTPUT)_bpftool: $(_OBJS) $(LIBBPF)
$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(_OBJS) $(LIBS)
skeleton/profiler.bpf.o: skeleton/profiler.bpf.c
- $(QUIET_CLANG)$(CLANG) -I$(srctree)/tools/lib -g -O2 -target bpf -c $< -o $@
+ $(QUIET_CLANG)$(CLANG) \
+ -I$(srctree)/tools/include/uapi/ \
+ -I$(srctree)/tools/testing/selftests/bpf/include/uapi \
+ -I$(srctree)/tools/lib -g -O2 -target bpf -c $< -o $@
profiler.skel.h: $(OUTPUT)_bpftool skeleton/profiler.bpf.o
$(QUIET_GEN)$(OUTPUT)./_bpftool gen skeleton skeleton/profiler.bpf.o > $@
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
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] bpftool: use linux/types.h from source tree for profiler build
2020-03-12 10:53 [PATCH] bpftool: use linux/types.h from source tree for profiler build Tobias Klauser
@ 2020-03-12 12:48 ` Quentin Monnet
2020-03-12 12:54 ` Tobias Klauser
2020-03-12 13:03 ` [PATCH bpf-next v2] " Tobias Klauser
1 sibling, 1 reply; 8+ messages in thread
From: Quentin Monnet @ 2020-03-12 12:48 UTC (permalink / raw)
To: Tobias Klauser, Daniel Borkmann, Alexei Starovoitov
Cc: Song Liu, Yonghong Song, bpf, Alexei Starovoitov
2020-03-12 11:53 UTC+0100 ~ Tobias Klauser <tklauser@distanz.ch>
> 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@iogearbox.net>
> Cc: Song Liu <songliubraving@fb.com>
> Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
> 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
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] bpftool: use linux/types.h from source tree for profiler build
2020-03-12 12:48 ` Quentin Monnet
@ 2020-03-12 12:54 ` Tobias Klauser
0 siblings, 0 replies; 8+ messages in thread
From: Tobias Klauser @ 2020-03-12 12:54 UTC (permalink / raw)
To: Quentin Monnet
Cc: Daniel Borkmann, Alexei Starovoitov, Song Liu, Yonghong Song,
bpf, Alexei Starovoitov
On 2020-03-12 at 13:48:21 +0100, Quentin Monnet <quentin@isovalent.com> wrote:
> 2020-03-12 11:53 UTC+0100 ~ Tobias Klauser <tklauser@distanz.ch>
> > 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@iogearbox.net>
> > Cc: Song Liu <songliubraving@fb.com>
> > Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
> > Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
>
> > 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?
Good point. It seems I actually didn't test this properly. Will change
the typedefs to use the existing __bitwise__.
> Makefile change works well otherwise, thanks (tested on Ubuntu with and
> without gcc-multilib).
Thanks for testing.
- Tobias
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH bpf-next v2] bpftool: use linux/types.h from source tree for profiler build
2020-03-12 10:53 [PATCH] bpftool: use linux/types.h from source tree for profiler build Tobias Klauser
2020-03-12 12:48 ` Quentin Monnet
@ 2020-03-12 13:03 ` Tobias Klauser
2020-03-12 14:15 ` Quentin Monnet
2020-03-12 17:59 ` Andrii Nakryiko
1 sibling, 2 replies; 8+ messages in thread
From: Tobias Klauser @ 2020-03-12 13:03 UTC (permalink / raw)
To: Daniel Borkmann, Alexei Starovoitov
Cc: Song Liu, Yonghong Song, bpf, Alexei Starovoitov, Quentin Monnet
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.
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Song Liu <songliubraving@fb.com>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
---
tools/bpf/bpftool/Makefile | 5 ++++-
tools/bpf/bpftool/skeleton/profiler.h | 17 ++++++++---------
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
index 20a90d8450f8..f294f6c1e795 100644
--- a/tools/bpf/bpftool/Makefile
+++ b/tools/bpf/bpftool/Makefile
@@ -120,7 +120,10 @@ $(OUTPUT)_bpftool: $(_OBJS) $(LIBBPF)
$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(_OBJS) $(LIBS)
skeleton/profiler.bpf.o: skeleton/profiler.bpf.c
- $(QUIET_CLANG)$(CLANG) -I$(srctree)/tools/lib -g -O2 -target bpf -c $< -o $@
+ $(QUIET_CLANG)$(CLANG) \
+ -I$(srctree)/tools/include/uapi/ \
+ -I$(srctree)/tools/testing/selftests/bpf/include/uapi \
+ -I$(srctree)/tools/lib -g -O2 -target bpf -c $< -o $@
profiler.skel.h: $(OUTPUT)_bpftool skeleton/profiler.bpf.o
$(QUIET_GEN)$(OUTPUT)./_bpftool gen skeleton skeleton/profiler.bpf.o > $@
diff --git a/tools/bpf/bpftool/skeleton/profiler.h b/tools/bpf/bpftool/skeleton/profiler.h
index e03b53eae767..1f767e9510f7 100644
--- a/tools/bpf/bpftool/skeleton/profiler.h
+++ b/tools/bpf/bpftool/skeleton/profiler.h
@@ -32,16 +32,15 @@ enum {
#else
#define __bitwise__
#endif
-#define __bitwise __bitwise__
-typedef __u16 __bitwise __le16;
-typedef __u16 __bitwise __be16;
-typedef __u32 __bitwise __le32;
-typedef __u32 __bitwise __be32;
-typedef __u64 __bitwise __le64;
-typedef __u64 __bitwise __be64;
+typedef __u16 __bitwise__ __le16;
+typedef __u16 __bitwise__ __be16;
+typedef __u32 __bitwise__ __le32;
+typedef __u32 __bitwise__ __be32;
+typedef __u64 __bitwise__ __le64;
+typedef __u64 __bitwise__ __be64;
-typedef __u16 __bitwise __sum16;
-typedef __u32 __bitwise __wsum;
+typedef __u16 __bitwise__ __sum16;
+typedef __u32 __bitwise__ __wsum;
#endif /* __PROFILER_H */
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v2] bpftool: use linux/types.h from source tree for profiler build
2020-03-12 13:03 ` [PATCH bpf-next v2] " Tobias Klauser
@ 2020-03-12 14:15 ` Quentin Monnet
2020-03-12 15:38 ` Daniel Borkmann
2020-03-12 17:59 ` Andrii Nakryiko
1 sibling, 1 reply; 8+ messages in thread
From: Quentin Monnet @ 2020-03-12 14:15 UTC (permalink / raw)
To: Tobias Klauser, Daniel Borkmann, Alexei Starovoitov
Cc: Song Liu, Yonghong Song, bpf, Alexei Starovoitov
2020-03-12 14:03 UTC+0100 ~ Tobias Klauser <tklauser@distanz.ch>
> 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.
>
> Cc: Daniel Borkmann <daniel@iogearbox.net>
> Cc: Song Liu <songliubraving@fb.com>
> Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
> Cc: Quentin Monnet <quentin@isovalent.com>
> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Looks good, thanks!
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v2] bpftool: use linux/types.h from source tree for profiler build
2020-03-12 14:15 ` Quentin Monnet
@ 2020-03-12 15:38 ` Daniel Borkmann
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Borkmann @ 2020-03-12 15:38 UTC (permalink / raw)
To: Quentin Monnet, Tobias Klauser, Alexei Starovoitov
Cc: Song Liu, Yonghong Song, bpf, Alexei Starovoitov
On 3/12/20 3:15 PM, Quentin Monnet wrote:
> 2020-03-12 14:03 UTC+0100 ~ Tobias Klauser <tklauser@distanz.ch>
>> 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.
>>
>> Cc: Daniel Borkmann <daniel@iogearbox.net>
>> Cc: Song Liu <songliubraving@fb.com>
>> Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
>> Cc: Quentin Monnet <quentin@isovalent.com>
>> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
>
> Looks good, thanks!
> Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Applied, thanks (compiles fine over here as well now)!
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v2] bpftool: use linux/types.h from source tree for profiler build
2020-03-12 13:03 ` [PATCH bpf-next v2] " Tobias Klauser
2020-03-12 14:15 ` Quentin Monnet
@ 2020-03-12 17:59 ` Andrii Nakryiko
2020-03-12 18:38 ` Daniel Borkmann
1 sibling, 1 reply; 8+ messages in thread
From: Andrii Nakryiko @ 2020-03-12 17:59 UTC (permalink / raw)
To: Tobias Klauser
Cc: Daniel Borkmann, Alexei Starovoitov, Song Liu, Yonghong Song,
bpf, Alexei Starovoitov, Quentin Monnet
On Thu, Mar 12, 2020 at 6:04 AM Tobias Klauser <tklauser@distanz.ch> wrote:
>
> 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.
>
> Cc: Daniel Borkmann <daniel@iogearbox.net>
> Cc: Song Liu <songliubraving@fb.com>
> Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
> Cc: Quentin Monnet <quentin@isovalent.com>
> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
> ---
> tools/bpf/bpftool/Makefile | 5 ++++-
> tools/bpf/bpftool/skeleton/profiler.h | 17 ++++++++---------
> 2 files changed, 12 insertions(+), 10 deletions(-)
>
> diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
> index 20a90d8450f8..f294f6c1e795 100644
> --- a/tools/bpf/bpftool/Makefile
> +++ b/tools/bpf/bpftool/Makefile
> @@ -120,7 +120,10 @@ $(OUTPUT)_bpftool: $(_OBJS) $(LIBBPF)
> $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(_OBJS) $(LIBS)
>
> skeleton/profiler.bpf.o: skeleton/profiler.bpf.c
> - $(QUIET_CLANG)$(CLANG) -I$(srctree)/tools/lib -g -O2 -target bpf -c $< -o $@
> + $(QUIET_CLANG)$(CLANG) \
> + -I$(srctree)/tools/include/uapi/ \
> + -I$(srctree)/tools/testing/selftests/bpf/include/uapi \
Seems like I'm spoiling all the fun today :) But why are we ok with
bpftool build depending on selftests? This just makes it even harder
to have a stand-alone bpftool build eventually (similar to libbpf's
Github).
> + -I$(srctree)/tools/lib -g -O2 -target bpf -c $< -o $@
>
> profiler.skel.h: $(OUTPUT)_bpftool skeleton/profiler.bpf.o
> $(QUIET_GEN)$(OUTPUT)./_bpftool gen skeleton skeleton/profiler.bpf.o > $@
> diff --git a/tools/bpf/bpftool/skeleton/profiler.h b/tools/bpf/bpftool/skeleton/profiler.h
> index e03b53eae767..1f767e9510f7 100644
> --- a/tools/bpf/bpftool/skeleton/profiler.h
> +++ b/tools/bpf/bpftool/skeleton/profiler.h
> @@ -32,16 +32,15 @@ enum {
> #else
> #define __bitwise__
> #endif
> -#define __bitwise __bitwise__
>
> -typedef __u16 __bitwise __le16;
> -typedef __u16 __bitwise __be16;
> -typedef __u32 __bitwise __le32;
> -typedef __u32 __bitwise __be32;
> -typedef __u64 __bitwise __le64;
> -typedef __u64 __bitwise __be64;
> +typedef __u16 __bitwise__ __le16;
> +typedef __u16 __bitwise__ __be16;
> +typedef __u32 __bitwise__ __le32;
> +typedef __u32 __bitwise__ __be32;
> +typedef __u64 __bitwise__ __le64;
> +typedef __u64 __bitwise__ __be64;
>
> -typedef __u16 __bitwise __sum16;
> -typedef __u32 __bitwise __wsum;
> +typedef __u16 __bitwise__ __sum16;
> +typedef __u32 __bitwise__ __wsum;
>
> #endif /* __PROFILER_H */
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v2] bpftool: use linux/types.h from source tree for profiler build
2020-03-12 17:59 ` Andrii Nakryiko
@ 2020-03-12 18:38 ` Daniel Borkmann
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Borkmann @ 2020-03-12 18:38 UTC (permalink / raw)
To: Andrii Nakryiko, Tobias Klauser
Cc: Alexei Starovoitov, Song Liu, Yonghong Song, bpf,
Alexei Starovoitov, Quentin Monnet
On 3/12/20 6:59 PM, Andrii Nakryiko wrote:
> On Thu, Mar 12, 2020 at 6:04 AM Tobias Klauser <tklauser@distanz.ch> wrote:
>>
>> 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.
>>
>> Cc: Daniel Borkmann <daniel@iogearbox.net>
>> Cc: Song Liu <songliubraving@fb.com>
>> Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
>> Cc: Quentin Monnet <quentin@isovalent.com>
>> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
>> ---
>> tools/bpf/bpftool/Makefile | 5 ++++-
>> tools/bpf/bpftool/skeleton/profiler.h | 17 ++++++++---------
>> 2 files changed, 12 insertions(+), 10 deletions(-)
>>
>> diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
>> index 20a90d8450f8..f294f6c1e795 100644
>> --- a/tools/bpf/bpftool/Makefile
>> +++ b/tools/bpf/bpftool/Makefile
>> @@ -120,7 +120,10 @@ $(OUTPUT)_bpftool: $(_OBJS) $(LIBBPF)
>> $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(_OBJS) $(LIBS)
>>
>> skeleton/profiler.bpf.o: skeleton/profiler.bpf.c
>> - $(QUIET_CLANG)$(CLANG) -I$(srctree)/tools/lib -g -O2 -target bpf -c $< -o $@
>> + $(QUIET_CLANG)$(CLANG) \
>> + -I$(srctree)/tools/include/uapi/ \
>> + -I$(srctree)/tools/testing/selftests/bpf/include/uapi \
>
> Seems like I'm spoiling all the fun today :) But why are we ok with
> bpftool build depending on selftests? This just makes it even harder
> to have a stand-alone bpftool build eventually (similar to libbpf's
> Github).
I suspect the Github copy of bpftool would have its own include infra like
in case of libbpf [0]?
Agree in any case that it's not an optimal situation with this dependency;
I suspect we might need the tools/testing/selftests/bpf/include/uapi/ under
tools/include/uapi/ in a proper way.
[0] https://github.com/libbpf/libbpf/tree/master/include
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-03-12 18:39 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-12 10:53 [PATCH] bpftool: use linux/types.h from source tree for profiler build Tobias Klauser
2020-03-12 12:48 ` Quentin Monnet
2020-03-12 12:54 ` Tobias Klauser
2020-03-12 13:03 ` [PATCH bpf-next v2] " Tobias Klauser
2020-03-12 14:15 ` Quentin Monnet
2020-03-12 15:38 ` Daniel Borkmann
2020-03-12 17:59 ` Andrii Nakryiko
2020-03-12 18:38 ` Daniel Borkmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).