On Wed, Jun 08, 2022 at 05:49:41PM +0100, Quentin Monnet wrote: > 2022-06-08 14:29 UTC+0000 ~ Shahab Vahedi <Shahab.Vahedi@xxxxxxxxxxxx> > > 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@xxxxxxxxxxxx> > > --- > > 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@xxxxxxxxxxxxx> Thanks, it makes sense to me as well Reviewed-by: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx>