mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
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:
parent
8a6b1a8d29
commit
694aed607f
@ -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))
|
||||||
|
Loading…
Reference in New Issue
Block a user