From: Felix Fietkau Date: Tue, 9 Nov 2021 19:59:15 +0000 (+0100) Subject: include/bpf.mk: check minimum required clang version X-Git-Tag: v22.03.0-rc1~1236 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=694aed607fbc0a0599f1ff951e5af280500339f9;p=openwrt%2Fstaging%2Fhauke.git include/bpf.mk: check minimum required clang version Avoid spurious runtime errors caused by loading eBPF modules built with an old clang version Signed-off-by: Felix Fietkau --- diff --git a/include/bpf.mk b/include/bpf.mk index c68ad74554..967de7a172 100644 --- a/include/bpf.mk +++ b/include/bpf.mk @@ -1,6 +1,8 @@ BPF_DEPENDS := @HAS_BPF_TOOLCHAIN LLVM_VER:= +CLANG_MIN_VER:=12 + ifneq ($(CONFIG_USE_LLVM_HOST),) BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH)) ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) @@ -61,6 +63,14 @@ BPF_CFLAGS := \ -Wno-unused-label \ -O2 -emit-llvm -Xclang -disable-llvm-passes +ifeq ($(DUMP),) + CLANG_VER:=$(shell clang -dM -E - < /dev/null | grep __clang_major__ | cut -d' ' -f3) + CLANG_VER_VALID:=$(shell [ "$(CLANG_VER)" -ge "$(CLANG_MIN_VER)" ] && echo 1 ) + ifeq ($(CLANG_VER_VALID),) + $(error ERROR: LLVM/clang version too old. Minimum required: $(CLANG_MIN_VER), found: $(CLANG_VER)) + endif +endif + define CompileBPF $(CLANG) -g -target $(BPF_ARCH)-linux-gnu $(BPF_CFLAGS) $(2) \ -c $(1) -o $(patsubst %.c,%.bc,$(1))