Message ID | 20201210194157.3218806-2-adelg@google.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next,v2] selftests/bpf: Drop the need for LLVM's llc | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for bpf-next |
netdev/subject_prefix | success | Link |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 41 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
netdev/stable | success | Stable not CCed |
On 12/10/20 11:41 AM, Andrew Delgadillo wrote: > LLC is meant for compiler development and debugging. Consequently, it > exposes many low level options about its backend. To avoid future bugs > introduced by using the raw LLC tool, use clang directly so that all > appropriate options are passed to the back end. > > Additionally, simplify the Makefile by removing the > CLANG_NATIVE_BPF_BUILD_RULE as it is not being use, stop passing > dwarfris attr since elfutils/libdw now supports the bpf backend (which > should work with any recent pahole), and stop passing alu32 since > -mcpu=v3 implies alu32. > > Signed-off-by: Andrew Delgadillo <adelg@google.com> > --- > Changes since v1: > * do not pass +dwarfris > * do not pass +alu32 when using -mcpu=v3 > --- > tools/testing/selftests/bpf/Makefile | 19 +++---------------- > 1 file changed, 3 insertions(+), 16 deletions(-) > > diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile > index 944ae17a39ed..a96f63dfd8dc 100644 > --- a/tools/testing/selftests/bpf/Makefile > +++ b/tools/testing/selftests/bpf/Makefile > @@ -19,7 +19,6 @@ ifneq ($(wildcard $(GENHDR)),) > endif > > CLANG ?= clang > -LLC ?= llc > LLVM_OBJCOPY ?= llvm-objcopy > BPF_GCC ?= $(shell command -v bpf-gcc;) > SAN_CFLAGS ?= > @@ -256,24 +255,13 @@ $(OUTPUT)/flow_dissector_load.o: flow_dissector_load.h > # $3 - CFLAGS > # $4 - LDFLAGS You can remove TRUNNER_BPF_LDFLAGS completely, so we won't have $4 here. > define CLANG_BPF_BUILD_RULE > - $(call msg,CLNG-LLC,$(TRUNNER_BINARY),$2) > - $(Q)($(CLANG) $3 -O2 -target bpf -emit-llvm \ > - -c $1 -o - || echo "BPF obj compilation failed") | \ > - $(LLC) -mattr=dwarfris -march=bpf -mcpu=v3 $4 -filetype=obj -o $2 > + $(call msg,CLNG-BPF,$(TRUNNER_BINARY),$2) > + $(Q)$(CLANG) $3 -O2 -target bpf -c $1 -o $2 -mcpu=v3 $4 and $4 here. > endef > # Similar to CLANG_BPF_BUILD_RULE, but with disabled alu32 > define CLANG_NOALU32_BPF_BUILD_RULE > - $(call msg,CLNG-LLC,$(TRUNNER_BINARY),$2) > - $(Q)($(CLANG) $3 -O2 -target bpf -emit-llvm \ > - -c $1 -o - || echo "BPF obj compilation failed") | \ > - $(LLC) -march=bpf -mcpu=v2 $4 -filetype=obj -o $2 > -endef > -# Similar to CLANG_BPF_BUILD_RULE, but using native Clang and bpf LLC > -define CLANG_NATIVE_BPF_BUILD_RULE > $(call msg,CLNG-BPF,$(TRUNNER_BINARY),$2) > - $(Q)($(CLANG) $3 -O2 -emit-llvm \ > - -c $1 -o - || echo "BPF obj compilation failed") | \ > - $(LLC) -march=bpf -mcpu=v3 $4 -filetype=obj -o $2 > + $(Q)$(CLANG) $3 -O2 -target bpf -c $1 -o $2 -mcpu=v2 $4 and $4 here. > endef > # Build BPF object using GCC > define GCC_BPF_BUILD_RULE > @@ -402,7 +390,6 @@ TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ > $(wildcard progs/btf_dump_test_case_*.c) > TRUNNER_BPF_BUILD_RULE := CLANG_BPF_BUILD_RULE > TRUNNER_BPF_CFLAGS := $(BPF_CFLAGS) $(CLANG_CFLAGS) > -TRUNNER_BPF_LDFLAGS := -mattr=+alu32 > $(eval $(call DEFINE_TEST_RUNNER,test_progs)) > > # Define test_progs-no_alu32 test runner. >
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index 944ae17a39ed..a96f63dfd8dc 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -19,7 +19,6 @@ ifneq ($(wildcard $(GENHDR)),) endif CLANG ?= clang -LLC ?= llc LLVM_OBJCOPY ?= llvm-objcopy BPF_GCC ?= $(shell command -v bpf-gcc;) SAN_CFLAGS ?= @@ -256,24 +255,13 @@ $(OUTPUT)/flow_dissector_load.o: flow_dissector_load.h # $3 - CFLAGS # $4 - LDFLAGS define CLANG_BPF_BUILD_RULE - $(call msg,CLNG-LLC,$(TRUNNER_BINARY),$2) - $(Q)($(CLANG) $3 -O2 -target bpf -emit-llvm \ - -c $1 -o - || echo "BPF obj compilation failed") | \ - $(LLC) -mattr=dwarfris -march=bpf -mcpu=v3 $4 -filetype=obj -o $2 + $(call msg,CLNG-BPF,$(TRUNNER_BINARY),$2) + $(Q)$(CLANG) $3 -O2 -target bpf -c $1 -o $2 -mcpu=v3 $4 endef # Similar to CLANG_BPF_BUILD_RULE, but with disabled alu32 define CLANG_NOALU32_BPF_BUILD_RULE - $(call msg,CLNG-LLC,$(TRUNNER_BINARY),$2) - $(Q)($(CLANG) $3 -O2 -target bpf -emit-llvm \ - -c $1 -o - || echo "BPF obj compilation failed") | \ - $(LLC) -march=bpf -mcpu=v2 $4 -filetype=obj -o $2 -endef -# Similar to CLANG_BPF_BUILD_RULE, but using native Clang and bpf LLC -define CLANG_NATIVE_BPF_BUILD_RULE $(call msg,CLNG-BPF,$(TRUNNER_BINARY),$2) - $(Q)($(CLANG) $3 -O2 -emit-llvm \ - -c $1 -o - || echo "BPF obj compilation failed") | \ - $(LLC) -march=bpf -mcpu=v3 $4 -filetype=obj -o $2 + $(Q)$(CLANG) $3 -O2 -target bpf -c $1 -o $2 -mcpu=v2 $4 endef # Build BPF object using GCC define GCC_BPF_BUILD_RULE @@ -402,7 +390,6 @@ TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko \ $(wildcard progs/btf_dump_test_case_*.c) TRUNNER_BPF_BUILD_RULE := CLANG_BPF_BUILD_RULE TRUNNER_BPF_CFLAGS := $(BPF_CFLAGS) $(CLANG_CFLAGS) -TRUNNER_BPF_LDFLAGS := -mattr=+alu32 $(eval $(call DEFINE_TEST_RUNNER,test_progs)) # Define test_progs-no_alu32 test runner.
LLC is meant for compiler development and debugging. Consequently, it exposes many low level options about its backend. To avoid future bugs introduced by using the raw LLC tool, use clang directly so that all appropriate options are passed to the back end. Additionally, simplify the Makefile by removing the CLANG_NATIVE_BPF_BUILD_RULE as it is not being use, stop passing dwarfris attr since elfutils/libdw now supports the bpf backend (which should work with any recent pahole), and stop passing alu32 since -mcpu=v3 implies alu32. Signed-off-by: Andrew Delgadillo <adelg@google.com> --- Changes since v1: * do not pass +dwarfris * do not pass +alu32 when using -mcpu=v3 --- tools/testing/selftests/bpf/Makefile | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-)