linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool
@ 2022-07-07 14:08 Pu Lehui
  2022-07-07 19:12 ` Song Liu
  2022-07-08 22:42 ` Andrii Nakryiko
  0 siblings, 2 replies; 7+ messages in thread
From: Pu Lehui @ 2022-07-07 14:08 UTC (permalink / raw)
  To: bpf, netdev, linux-kernel
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
	Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend,
	KP Singh, Pu Lehui

Currently, when cross compiling bpf samples, the host side
cannot use arch-specific bpftool to generate vmlinux.h or
skeleton. We need to compile the bpftool with the host
compiler.

Signed-off-by: Pu Lehui <pulehui@huawei.com>
---
 samples/bpf/Makefile | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
index 5002a5b9a7da..fe54a8c8f312 100644
--- a/samples/bpf/Makefile
+++ b/samples/bpf/Makefile
@@ -1,4 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
+-include tools/scripts/Makefile.include
 
 BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
 TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
@@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
 BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool
 BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool
 BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool
-$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
+$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
 	    $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \
-		OUTPUT=$(BPFTOOL_OUTPUT)/ \
-		LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \
-		LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/
+		ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \
+		OUTPUT=$(BPFTOOL_OUTPUT)/
 
 $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
 	$(call msg,MKDIR,$@)
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool
  2022-07-07 14:08 [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool Pu Lehui
@ 2022-07-07 19:12 ` Song Liu
  2022-07-08  2:46   ` Pu Lehui
  2022-07-08 22:42 ` Andrii Nakryiko
  1 sibling, 1 reply; 7+ messages in thread
From: Song Liu @ 2022-07-07 19:12 UTC (permalink / raw)
  To: Pu Lehui
  Cc: bpf, Networking, lkml, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin Lau, Yonghong Song, John Fastabend,
	KP Singh



> On Jul 7, 2022, at 7:08 AM, Pu Lehui <pulehui@huawei.com> wrote:
> 
> Currently, when cross compiling bpf samples, the host side
> cannot use arch-specific bpftool to generate vmlinux.h or
> skeleton. We need to compile the bpftool with the host
> compiler.
> 
> Signed-off-by: Pu Lehui <pulehui@huawei.com>
> ---
> samples/bpf/Makefile | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
> index 5002a5b9a7da..fe54a8c8f312 100644
> --- a/samples/bpf/Makefile
> +++ b/samples/bpf/Makefile
> @@ -1,4 +1,5 @@
> # SPDX-License-Identifier: GPL-2.0
> +-include tools/scripts/Makefile.include

Why do we need the -include here? 

Thanks,
Song

> 
> BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
> TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
> @@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
> BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool
> BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool
> BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool
> -$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
> +$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
> 	    $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \
> -		OUTPUT=$(BPFTOOL_OUTPUT)/ \
> -		LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \
> -		LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/
> +		ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \
> +		OUTPUT=$(BPFTOOL_OUTPUT)/
> 
> $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
> 	$(call msg,MKDIR,$@)
> -- 
> 2.25.1
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool
  2022-07-07 19:12 ` Song Liu
@ 2022-07-08  2:46   ` Pu Lehui
  2022-07-08  3:12     ` Pu Lehui
  0 siblings, 1 reply; 7+ messages in thread
From: Pu Lehui @ 2022-07-08  2:46 UTC (permalink / raw)
  To: Song Liu
  Cc: bpf, Networking, lkml, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin Lau, Yonghong Song, John Fastabend,
	KP Singh



On 2022/7/8 3:12, Song Liu wrote:
> 
> 
>> On Jul 7, 2022, at 7:08 AM, Pu Lehui <pulehui@huawei.com> wrote:
>>
>> Currently, when cross compiling bpf samples, the host side
>> cannot use arch-specific bpftool to generate vmlinux.h or
>> skeleton. We need to compile the bpftool with the host
>> compiler.
>>
>> Signed-off-by: Pu Lehui <pulehui@huawei.com>
>> ---
>> samples/bpf/Makefile | 8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
>> index 5002a5b9a7da..fe54a8c8f312 100644
>> --- a/samples/bpf/Makefile
>> +++ b/samples/bpf/Makefile
>> @@ -1,4 +1,5 @@
>> # SPDX-License-Identifier: GPL-2.0
>> +-include tools/scripts/Makefile.include
> 
> Why do we need the -include here?
> 

HOSTLD is defined in tools/scripts/Makefile.include, we need to add it.

And for -include, mainly to resolve some conflicts:
1. If workdir is kernel_src, then 'include 
tools/scripts/Makefile.include' is fine when 'make M=samples/bpf'.
2. Since the trick in samples/bpf/Makefile:

# Trick to allow make to be run from this directory
all:
	$(MAKE) -C ../../ M=$(CURDIR) BPF_SAMPLES_PATH=$(CURDIR)

If workdir is samples/bpf, the compile process will first load the 
Makefile in samples/bpf, then change workdir to kernel_src and load the 
kernel_src's Makefile. So if we just add 'include 
tools/scripts/Makefile.include', then the first load will occur error 
for not found the file, so we add -include to skip the first load.

> Thanks,
> Song
> 
>>
>> BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
>> TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
>> @@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
>> BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool
>> BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool
>> BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool
>> -$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>> +$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>> 	    $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \
>> -		OUTPUT=$(BPFTOOL_OUTPUT)/ \
>> -		LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \
>> -		LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/
>> +		ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \
>> +		OUTPUT=$(BPFTOOL_OUTPUT)/
>>
>> $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
>> 	$(call msg,MKDIR,$@)
>> -- 
>> 2.25.1
>>
> 
> .
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool
  2022-07-08  2:46   ` Pu Lehui
@ 2022-07-08  3:12     ` Pu Lehui
  2022-07-08  4:53       ` Song Liu
  0 siblings, 1 reply; 7+ messages in thread
From: Pu Lehui @ 2022-07-08  3:12 UTC (permalink / raw)
  To: Song Liu
  Cc: bpf, Networking, lkml, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin Lau, Yonghong Song, John Fastabend,
	KP Singh



On 2022/7/8 10:46, Pu Lehui wrote:
> 
> 
> On 2022/7/8 3:12, Song Liu wrote:
>>
>>
>>> On Jul 7, 2022, at 7:08 AM, Pu Lehui <pulehui@huawei.com> wrote:
>>>
>>> Currently, when cross compiling bpf samples, the host side
>>> cannot use arch-specific bpftool to generate vmlinux.h or
>>> skeleton. We need to compile the bpftool with the host
>>> compiler.
>>>
>>> Signed-off-by: Pu Lehui <pulehui@huawei.com>
>>> ---
>>> samples/bpf/Makefile | 8 ++++----
>>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
>>> index 5002a5b9a7da..fe54a8c8f312 100644
>>> --- a/samples/bpf/Makefile
>>> +++ b/samples/bpf/Makefile
>>> @@ -1,4 +1,5 @@
>>> # SPDX-License-Identifier: GPL-2.0
>>> +-include tools/scripts/Makefile.include
>>
>> Why do we need the -include here?
>>
> 
> HOSTLD is defined in tools/scripts/Makefile.include, we need to add it.
> 
> And for -include, mainly to resolve some conflicts:
> 1. If workdir is kernel_src, then 'include 
> tools/scripts/Makefile.include' is fine when 'make M=samples/bpf'.
> 2. Since the trick in samples/bpf/Makefile:
> 
> # Trick to allow make to be run from this directory
> all:
>      $(MAKE) -C ../../ M=$(CURDIR) BPF_SAMPLES_PATH=$(CURDIR)
> 
> If workdir is samples/bpf, the compile process will first load the 
> Makefile in samples/bpf, then change workdir to kernel_src and load the 
> kernel_src's Makefile. So if we just add 'include 
> tools/scripts/Makefile.include', then the first load will occur error 
> for not found the file, so we add -include to skip the first load.

sorry, correct the reply, so we add -include to skip the 
'tools/scripts/Makefile.include' file on the fisrt load.

> 
>> Thanks,
>> Song
>>
>>>
>>> BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
>>> TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
>>> @@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] 
>>> $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
>>> BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool
>>> BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool
>>> BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool
>>> -$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] 
>>> $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>>> +$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) 
>>> | $(BPFTOOL_OUTPUT)
>>>         $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \
>>> -        OUTPUT=$(BPFTOOL_OUTPUT)/ \
>>> -        LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \
>>> -        LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/
>>> +        ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \
>>> +        OUTPUT=$(BPFTOOL_OUTPUT)/
>>>
>>> $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
>>>     $(call msg,MKDIR,$@)
>>> -- 
>>> 2.25.1
>>>
>>
>> .
>>
> .

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool
  2022-07-08  3:12     ` Pu Lehui
@ 2022-07-08  4:53       ` Song Liu
  0 siblings, 0 replies; 7+ messages in thread
From: Song Liu @ 2022-07-08  4:53 UTC (permalink / raw)
  To: Pu Lehui
  Cc: bpf, Networking, lkml, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin Lau, Yonghong Song, John Fastabend,
	KP Singh



> On Jul 7, 2022, at 8:12 PM, Pu Lehui <pulehui@huawei.com> wrote:
> 
> 
> 
> On 2022/7/8 10:46, Pu Lehui wrote:
>> On 2022/7/8 3:12, Song Liu wrote:
>>> 
>>> 
>>>> On Jul 7, 2022, at 7:08 AM, Pu Lehui <pulehui@huawei.com> wrote:
>>>> 
>>>> Currently, when cross compiling bpf samples, the host side
>>>> cannot use arch-specific bpftool to generate vmlinux.h or
>>>> skeleton. We need to compile the bpftool with the host
>>>> compiler.
>>>> 
>>>> Signed-off-by: Pu Lehui <pulehui@huawei.com>
>>>> ---
>>>> samples/bpf/Makefile | 8 ++++----
>>>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>>> 
>>>> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
>>>> index 5002a5b9a7da..fe54a8c8f312 100644
>>>> --- a/samples/bpf/Makefile
>>>> +++ b/samples/bpf/Makefile
>>>> @@ -1,4 +1,5 @@
>>>> # SPDX-License-Identifier: GPL-2.0
>>>> +-include tools/scripts/Makefile.include
>>> 
>>> Why do we need the -include here?
>>> 
>> HOSTLD is defined in tools/scripts/Makefile.include, we need to add it.
>> And for -include, mainly to resolve some conflicts:
>> 1. If workdir is kernel_src, then 'include tools/scripts/Makefile.include' is fine when 'make M=samples/bpf'.
>> 2. Since the trick in samples/bpf/Makefile:
>> # Trick to allow make to be run from this directory
>> all:
>> $(MAKE) -C ../../ M=$(CURDIR) BPF_SAMPLES_PATH=$(CURDIR)
>> If workdir is samples/bpf, the compile process will first load the Makefile in samples/bpf, then change workdir to kernel_src and load the kernel_src's Makefile. So if we just add 'include tools/scripts/Makefile.include', then the first load will occur error for not found the file, so we add -include to skip the first load.
> 
> sorry, correct the reply, so we add -include to skip the 'tools/scripts/Makefile.include' file on the fisrt load.


Thanks for the explanation. 

Acked-by: Song Liu <song@kernel.org>

> 
>>> Thanks,
>>> Song
>>> 
>>>> 
>>>> BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
>>>> TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
>>>> @@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
>>>> BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool
>>>> BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool
>>>> BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool
>>>> -$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>>>> +$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>>>> $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \
>>>> -  OUTPUT=$(BPFTOOL_OUTPUT)/ \
>>>> -  LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \
>>>> -  LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/
>>>> +  ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \
>>>> +  OUTPUT=$(BPFTOOL_OUTPUT)/
>>>> 
>>>> $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
>>>> $(call msg,MKDIR,$@)
>>>> -- 
>>>> 2.25.1
>>>> 
>>> 
>>> .
>>> 
>> .


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool
  2022-07-07 14:08 [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool Pu Lehui
  2022-07-07 19:12 ` Song Liu
@ 2022-07-08 22:42 ` Andrii Nakryiko
  2022-07-09  7:31   ` Pu Lehui
  1 sibling, 1 reply; 7+ messages in thread
From: Andrii Nakryiko @ 2022-07-08 22:42 UTC (permalink / raw)
  To: Pu Lehui, Quentin Monnet
  Cc: bpf, Networking, open list, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh

On Thu, Jul 7, 2022 at 6:37 AM Pu Lehui <pulehui@huawei.com> wrote:
>
> Currently, when cross compiling bpf samples, the host side
> cannot use arch-specific bpftool to generate vmlinux.h or
> skeleton. We need to compile the bpftool with the host
> compiler.
>
> Signed-off-by: Pu Lehui <pulehui@huawei.com>
> ---

samples/bpf use bpftool for vmlinux.h, skeleton, and static linking
only. All that is supported by lightweight "bootstrap" bpftool
version, so we can build just that. It will be faster, and bootstrap
version should be always host-native even during cross compilation.
See [0] for what I did in libbpf-bootstrap.

Also please cc Quention for bpftool-related changes. Thanks!

   [0] https://github.com/libbpf/libbpf-bootstrap/commit/fc28424eb3f0e39cfb5959296b070389b9a8bd8f

>  samples/bpf/Makefile | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
> index 5002a5b9a7da..fe54a8c8f312 100644
> --- a/samples/bpf/Makefile
> +++ b/samples/bpf/Makefile
> @@ -1,4 +1,5 @@
>  # SPDX-License-Identifier: GPL-2.0
> +-include tools/scripts/Makefile.include
>
>  BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
>  TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
> @@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
>  BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool
>  BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool
>  BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool
> -$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
> +$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>             $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \
> -               OUTPUT=$(BPFTOOL_OUTPUT)/ \
> -               LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \
> -               LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/
> +               ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \
> +               OUTPUT=$(BPFTOOL_OUTPUT)/
>
>  $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
>         $(call msg,MKDIR,$@)
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool
  2022-07-08 22:42 ` Andrii Nakryiko
@ 2022-07-09  7:31   ` Pu Lehui
  0 siblings, 0 replies; 7+ messages in thread
From: Pu Lehui @ 2022-07-09  7:31 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: bpf, Networking, open list, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Quentin Monnet, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh



On 2022/7/9 6:42, Andrii Nakryiko wrote:
> On Thu, Jul 7, 2022 at 6:37 AM Pu Lehui <pulehui@huawei.com> wrote:
>>
>> Currently, when cross compiling bpf samples, the host side
>> cannot use arch-specific bpftool to generate vmlinux.h or
>> skeleton. We need to compile the bpftool with the host
>> compiler.
>>
>> Signed-off-by: Pu Lehui <pulehui@huawei.com>
>> ---
> 
> samples/bpf use bpftool for vmlinux.h, skeleton, and static linking
> only. All that is supported by lightweight "bootstrap" bpftool
> version, so we can build just that. It will be faster, and bootstrap
> version should be always host-native even during cross compilation.
> See [0] for what I did in libbpf-bootstrap.
> 
> Also please cc Quention for bpftool-related changes. Thanks!
> 
>     [0] https://github.com/libbpf/libbpf-bootstrap/commit/fc28424eb3f0e39cfb5959296b070389b9a8bd8f
> 

so brilliant,we can take it to other places where rely on bpftool.
thanks.

>>   samples/bpf/Makefile | 8 ++++----
>>   1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
>> index 5002a5b9a7da..fe54a8c8f312 100644
>> --- a/samples/bpf/Makefile
>> +++ b/samples/bpf/Makefile
>> @@ -1,4 +1,5 @@
>>   # SPDX-License-Identifier: GPL-2.0
>> +-include tools/scripts/Makefile.include
>>
>>   BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
>>   TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools
>> @@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
>>   BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool
>>   BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool
>>   BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool
>> -$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>> +$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT)
>>              $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \
>> -               OUTPUT=$(BPFTOOL_OUTPUT)/ \
>> -               LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \
>> -               LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/
>> +               ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \
>> +               OUTPUT=$(BPFTOOL_OUTPUT)/
>>
>>   $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
>>          $(call msg,MKDIR,$@)
>> --
>> 2.25.1
>>
> .
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-07-09  7:31 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-07 14:08 [PATCH bpf-next] samples: bpf: Fix cross-compiling error about bpftool Pu Lehui
2022-07-07 19:12 ` Song Liu
2022-07-08  2:46   ` Pu Lehui
2022-07-08  3:12     ` Pu Lehui
2022-07-08  4:53       ` Song Liu
2022-07-08 22:42 ` Andrii Nakryiko
2022-07-09  7:31   ` Pu Lehui

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).