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 <nbd@nbd.name>
This commit is contained in:
		| @@ -1,6 +1,8 @@ | |||||||
| BPF_DEPENDS := @HAS_BPF_TOOLCHAIN | BPF_DEPENDS := @HAS_BPF_TOOLCHAIN | ||||||
| LLVM_VER:= | LLVM_VER:= | ||||||
|  |  | ||||||
|  | CLANG_MIN_VER:=12 | ||||||
|  |  | ||||||
| ifneq ($(CONFIG_USE_LLVM_HOST),) | ifneq ($(CONFIG_USE_LLVM_HOST),) | ||||||
|   BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH)) |   BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH)) | ||||||
|   ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) |   ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) | ||||||
| @@ -61,6 +63,14 @@ BPF_CFLAGS := \ | |||||||
| 	-Wno-unused-label \ | 	-Wno-unused-label \ | ||||||
| 	-O2 -emit-llvm -Xclang -disable-llvm-passes | 	-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 | define CompileBPF | ||||||
| 	$(CLANG) -g -target $(BPF_ARCH)-linux-gnu $(BPF_CFLAGS) $(2) \ | 	$(CLANG) -g -target $(BPF_ARCH)-linux-gnu $(BPF_CFLAGS) $(2) \ | ||||||
| 		-c $(1) -o $(patsubst %.c,%.bc,$(1)) | 		-c $(1) -o $(patsubst %.c,%.bc,$(1)) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau