Message ID | 8d297f0c-cfd0-ef6f-3970-6dddb3d9a87a@synopsys.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 0b817059a8830b8bc3d50bb2402dea923cd89b01 |
Delegated to: | BPF |
Headers | show |
Series | bpftool: Fix bootstrapping during a cross compilation | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
bpf/vmtest-bpf-next-VM_Test-2 | success | Logs for Kernel LATEST on ubuntu-latest with llvm-15 |
bpf/vmtest-bpf-next-PR | fail | PR summary |
bpf/vmtest-bpf-next-VM_Test-3 | success | Logs for Kernel LATEST on z15 with gcc |
bpf/vmtest-bpf-next-VM_Test-1 | pending | Logs for Kernel LATEST on ubuntu-latest with gcc |
2022-06-08 14:29 UTC+0000 ~ Shahab Vahedi <Shahab.Vahedi@synopsys.com> > This change adjusts the Makefile to use "HOSTAR" as the archive tool > to keep the sanity of the build process for the bootstrap part in > check. For the rationale, please continue reading. > > When cross compiling bpftool with buildroot, it leads to an invocation > like: > > $ AR="/path/to/buildroot/host/bin/arc-linux-gcc-ar" \ > CC="/path/to/buildroot/host/bin/arc-linux-gcc" \ > ... > make > > Which in return fails while building the bootstrap section: > > ----------------------------------8<---------------------------------- > > make: Entering directory '/src/bpftool-v6.7.0/src' > ... libbfd: [ on ] > ... disassembler-four-args: [ on ] > ... zlib: [ on ] > ... libcap: [ OFF ] > ... clang-bpf-co-re: [ on ] <-- triggers bootstrap > > . > . > . > > LINK /src/bpftool-v6.7.0/src/bootstrap/bpftool > /usr/bin/ld: /src/bpftool-v6.7.0/src/bootstrap/libbpf/libbpf.a: > error adding symbols: archive has no index; run ranlib > to add one > collect2: error: ld returned 1 exit status > make: *** [Makefile:211: /src/bpftool-v6.7.0/src/bootstrap/bpftool] > Error 1 > make: *** Waiting for unfinished jobs.... > AR /src/bpftool-v6.7.0/src/libbpf/libbpf.a > make[1]: Leaving directory '/src/bpftool-v6.7.0/libbpf/src' > make: Leaving directory '/src/bpftool-v6.7.0/src' > > ---------------------------------->8---------------------------------- > > This occurs because setting "AR" confuses the build process for the > bootstrap section and it calls "arc-linux-gcc-ar" to create and index > "libbpf.a" instead of the host "ar". > > Signed-off-by: Shahab Vahedi <shahab@synopsys.com> > --- > tools/bpf/bpftool/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile > index c6d2c77d0252..c19e0e4c41bd 100644 > --- a/tools/bpf/bpftool/Makefile > +++ b/tools/bpf/bpftool/Makefile > @@ -53,7 +53,7 @@ $(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_ > $(LIBBPF_BOOTSTRAP): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_BOOTSTRAP_OUTPUT) > $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_BOOTSTRAP_OUTPUT) \ > DESTDIR=$(LIBBPF_BOOTSTRAP_DESTDIR:/=) prefix= \ > - ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) $@ install_headers > + ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) AR=$(HOSTAR) $@ install_headers > > $(LIBBPF_BOOTSTRAP_INTERNAL_HDRS): $(LIBBPF_BOOTSTRAP_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_BOOTSTRAP_HDRS_DIR) > $(call QUIET_INSTALL, $@) +Cc Jean-Philippe Looks good to me, thank you! Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Hello: This patch was applied to bpf/bpf-next.git (master) by Daniel Borkmann <daniel@iogearbox.net>: On Wed, 8 Jun 2022 14:29:28 +0000 you wrote: > This change adjusts the Makefile to use "HOSTAR" as the archive tool > to keep the sanity of the build process for the bootstrap part in > check. For the rationale, please continue reading. > > When cross compiling bpftool with buildroot, it leads to an invocation > like: > > [...] Here is the summary with links: - bpftool: Fix bootstrapping during a cross compilation https://git.kernel.org/bpf/bpf-next/c/0b817059a883 You are awesome, thank you!
On Wed, Jun 08, 2022 at 05:49:41PM +0100, Quentin Monnet wrote: > 2022-06-08 14:29 UTC+0000 ~ Shahab Vahedi <Shahab.Vahedi@synopsys.com> > > This change adjusts the Makefile to use "HOSTAR" as the archive tool > > to keep the sanity of the build process for the bootstrap part in > > check. For the rationale, please continue reading. > > > > When cross compiling bpftool with buildroot, it leads to an invocation > > like: > > > > $ AR="/path/to/buildroot/host/bin/arc-linux-gcc-ar" \ > > CC="/path/to/buildroot/host/bin/arc-linux-gcc" \ > > ... > > make > > > > Which in return fails while building the bootstrap section: > > > > ----------------------------------8<---------------------------------- > > > > make: Entering directory '/src/bpftool-v6.7.0/src' > > ... libbfd: [ on ] > > ... disassembler-four-args: [ on ] > > ... zlib: [ on ] > > ... libcap: [ OFF ] > > ... clang-bpf-co-re: [ on ] <-- triggers bootstrap > > > > . > > . > > . > > > > LINK /src/bpftool-v6.7.0/src/bootstrap/bpftool > > /usr/bin/ld: /src/bpftool-v6.7.0/src/bootstrap/libbpf/libbpf.a: > > error adding symbols: archive has no index; run ranlib > > to add one > > collect2: error: ld returned 1 exit status > > make: *** [Makefile:211: /src/bpftool-v6.7.0/src/bootstrap/bpftool] > > Error 1 > > make: *** Waiting for unfinished jobs.... > > AR /src/bpftool-v6.7.0/src/libbpf/libbpf.a > > make[1]: Leaving directory '/src/bpftool-v6.7.0/libbpf/src' > > make: Leaving directory '/src/bpftool-v6.7.0/src' > > > > ---------------------------------->8---------------------------------- > > > > This occurs because setting "AR" confuses the build process for the > > bootstrap section and it calls "arc-linux-gcc-ar" to create and index > > "libbpf.a" instead of the host "ar". > > > > Signed-off-by: Shahab Vahedi <shahab@synopsys.com> > > --- > > tools/bpf/bpftool/Makefile | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile > > index c6d2c77d0252..c19e0e4c41bd 100644 > > --- a/tools/bpf/bpftool/Makefile > > +++ b/tools/bpf/bpftool/Makefile > > @@ -53,7 +53,7 @@ $(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_ > > $(LIBBPF_BOOTSTRAP): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_BOOTSTRAP_OUTPUT) > > $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_BOOTSTRAP_OUTPUT) \ > > DESTDIR=$(LIBBPF_BOOTSTRAP_DESTDIR:/=) prefix= \ > > - ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) $@ install_headers > > + ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) AR=$(HOSTAR) $@ install_headers > > > > $(LIBBPF_BOOTSTRAP_INTERNAL_HDRS): $(LIBBPF_BOOTSTRAP_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_BOOTSTRAP_HDRS_DIR) > > $(call QUIET_INSTALL, $@) > > +Cc Jean-Philippe > > Looks good to me, thank you! > Reviewed-by: Quentin Monnet <quentin@isovalent.com> Thanks, it makes sense to me as well Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile index c6d2c77d0252..c19e0e4c41bd 100644 --- a/tools/bpf/bpftool/Makefile +++ b/tools/bpf/bpftool/Makefile @@ -53,7 +53,7 @@ $(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_ $(LIBBPF_BOOTSTRAP): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_BOOTSTRAP_OUTPUT) $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_BOOTSTRAP_OUTPUT) \ DESTDIR=$(LIBBPF_BOOTSTRAP_DESTDIR:/=) prefix= \ - ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) $@ install_headers + ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) AR=$(HOSTAR) $@ install_headers $(LIBBPF_BOOTSTRAP_INTERNAL_HDRS): $(LIBBPF_BOOTSTRAP_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_BOOTSTRAP_HDRS_DIR) $(call QUIET_INSTALL, $@)
This change adjusts the Makefile to use "HOSTAR" as the archive tool to keep the sanity of the build process for the bootstrap part in check. For the rationale, please continue reading. When cross compiling bpftool with buildroot, it leads to an invocation like: $ AR="/path/to/buildroot/host/bin/arc-linux-gcc-ar" \ CC="/path/to/buildroot/host/bin/arc-linux-gcc" \ ... make Which in return fails while building the bootstrap section: ----------------------------------8<---------------------------------- make: Entering directory '/src/bpftool-v6.7.0/src' ... libbfd: [ on ] ... disassembler-four-args: [ on ] ... zlib: [ on ] ... libcap: [ OFF ] ... clang-bpf-co-re: [ on ] <-- triggers bootstrap . . . LINK /src/bpftool-v6.7.0/src/bootstrap/bpftool /usr/bin/ld: /src/bpftool-v6.7.0/src/bootstrap/libbpf/libbpf.a: error adding symbols: archive has no index; run ranlib to add one collect2: error: ld returned 1 exit status make: *** [Makefile:211: /src/bpftool-v6.7.0/src/bootstrap/bpftool] Error 1 make: *** Waiting for unfinished jobs.... AR /src/bpftool-v6.7.0/src/libbpf/libbpf.a make[1]: Leaving directory '/src/bpftool-v6.7.0/libbpf/src' make: Leaving directory '/src/bpftool-v6.7.0/src' ---------------------------------->8---------------------------------- This occurs because setting "AR" confuses the build process for the bootstrap section and it calls "arc-linux-gcc-ar" to create and index "libbpf.a" instead of the host "ar". Signed-off-by: Shahab Vahedi <shahab@synopsys.com> --- tools/bpf/bpftool/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)