diff --git a/package/bpftool/0001-bpftool-Fix-bootstrapping-during-a-cross-compilation.patch b/package/bpftool/0001-bpftool-Fix-bootstrapping-during-a-cross-compilation.patch new file mode 100644 index 0000000000..fc192681e3 --- /dev/null +++ b/package/bpftool/0001-bpftool-Fix-bootstrapping-during-a-cross-compilation.patch @@ -0,0 +1,96 @@ +From 189f777ea4829bede0bf92f572c22fe1f2c37522 Mon Sep 17 00:00:00 2001 +From: Shahab Vahedi +Date: Wed, 8 Jun 2022 14:29:28 +0000 +Subject: [PATCH] bpftool: Fix bootstrapping during a cross compilation + +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 +Signed-off-by: Daniel Borkmann +Reviewed-by: Quentin Monnet +Cc: Jean-Philippe Brucker +Link: https://lore.kernel.org/bpf/8d297f0c-cfd0-ef6f-3970-6dddb3d9a87a@synopsys.com +Upstream: https://github.com/libbpf/bpftool/commit/189f777ea4829bede0bf92f572c22fe1f2c37522 + +This is an adapted version, else it won't be possible to cross compile +bpftool if "clang-bpf-co-re" feature is enabled. +--- + src/Makefile | 2 +- + src/Makefile.include | 2 ++ + 2 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index b657502..b8b0808 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -51,7 +51,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) OBJDIR=$(patsubst %/,%,$(LIBBPF_BOOTSTRAP_OUTPUT)) \ + PREFIX=$(LIBBPF_BOOTSTRAP_DESTDIR:/=) \ +- 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, $@) +--- a/src/Makefile.include ++++ b/src/Makefile.include +@@ -12,11 +12,13 @@ + ifneq ($(LLVM),) + $(if $(findstring default,$(origin CC)),$(eval CC := clang$(LLVM_VERSION))) + $(if $(findstring default,$(origin LD)),$(eval LD := ld.lld$(LLVM_VERSION))) ++ HOSTAR ?= llvm-ar + HOSTCC ?= clang + HOSTLD ?= ld.lld + else + $(if $(findstring default,$(origin CC)),$(eval CC = $(CROSS_COMPILE)$(CC))) + $(if $(findstring default,$(origin LD)),$(eval LD = $(CROSS_COMPILE)$(LD))) ++ HOSTAR ?= ar + HOSTCC ?= gcc + HOSTLD ?= ld + endif +-- +2.35.3 +