ClangBuiltLinux / linux

Linux kernel source tree
Other
241 stars 14 forks source link

selftests don't respect LLVM=1 for setting LD=lld #1967

Open nickdesaulniers opened 9 months ago

nickdesaulniers commented 9 months ago

Notice no -fuse-ld= flag below.

$ make LLVM=1 -j128 -C tools/testing/selftests TARGETS=kvm run_tests
...
clang --target=x86_64-linux-gnu -fintegrated-as  -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 -Wno-gnu-variable-sized-type-not-at-end -MD -MP -fno-builtin-memcmp -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-strnlen -fno-stack-protector -fno-PIE -I/android0/kernel-all/tools/testing/selftests/../../../tools/include -I/android0/kernel-all/tools/testing/selftests/../../../tools/arch/x86/include -I/android0/kernel-all/tools/testing/selftests/../../../usr/include/ -Iinclude -I/android0/kernel-all/tools/testing/selftests/kvm/x86_64 -Iinclude/x86_64 -I ../rseq -I..  -isystem /android0/kernel-all/usr/include   -pthread  -no-pie   /android0/kernel-all/tools/testing/selftests/kvm/x86_64/set_sregs_test.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/assert.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/elf.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/guest_modes.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/io.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/kvm_util.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/memstress.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/guest_sprintf.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/rbtree.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/sparsebit.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/test_util.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/ucall_common.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/userfaultfd_util.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/apic.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/hyperv.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/memstress.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/processor.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/svm.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/ucall.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/vmx.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/x86_64/handlers.o  /android0/kernel-all/tools/testing/selftests/kvm/lib/string_override.o -ldl -o /android0/kernel-all/tools/testing/selftests/kvm/x86_64/set_sregs_test
...
nathanchance commented 9 months ago

May be as simple as

diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk
index 118e0964bda9..323a3f377f13 100644
--- a/tools/testing/selftests/lib.mk
+++ b/tools/testing/selftests/lib.mk
@@ -30,7 +30,7 @@ else
 CLANG_FLAGS     += --target=$(notdir $(CROSS_COMPILE:%-=%))
 endif # CROSS_COMPILE

-CC := $(LLVM_PREFIX)clang$(LLVM_SUFFIX) $(CLANG_FLAGS) -fintegrated-as
+CC := $(LLVM_PREFIX)clang$(LLVM_SUFFIX) $(CLANG_FLAGS) -fintegrated-as -fuse-ld=lld
 else
 CC := $(CROSS_COMPILE)gcc
 endif # LLVM

but I did not test. That may end up causing warnings if $(CC) is invoked with just -c but I am not seeing a central place for LDFLAGS to place -fuse-ld=lld in...