clang thin-lto not working for aarch64 for v6.13

From: Yonghong Song
Date: Sun Jan 26 2025 - 22:48:25 EST


Hi, Masahiro,

We are trying 6.13 kernel and found that for aarch64 thinlto not working. For example, for kernel/bpf/syscall.o, the compilation flags from .syscall.o.cmd are savedcmd_kernel/bpf/syscall.o := clang -Wp,-MMD,kernel/bpf/.syscall.o.d ... -D__KBUILD_MODNAME=kmod_syscall -c -o kernel/bpf/syscall.o kernel/bpf/syscall.c ; ld.lld -EL -maarch64elf -z norelro -mllvm -import-instr-limit=5 -z noexecstack -r -o kernel/bpf/.tmp_syscall.o kernel/bpf/syscall.o; mv kernel/bpf/.tmp_syscall.o kernel/bpf/syscall.o I did some bisecting and found the issue is due to ``` commit bede169618c68379e1be7ace14e8ac85b964a9ec Author: Masahiro Yamada <masahiroy@xxxxxxxxxx> Date: Thu Nov 14 08:45:22 2024 +0900 kbuild: enable objtool for *.mod.o and additional kernel objects ``` In the above, for thinlto, we should not do ld.lld as compiler needs IR to do cross-file inlining. Searching the internet, I found that the issue has been reported e.g. in https://patchwork.kernel.org/project/linux-kbuild/patch/20241113234526.402738-3-masahiroy@xxxxxxxxxx/ and you mentioned you will fix it. Do you have a fix somewhere? With this fix, deploying 6.13 in our production will cause performance regression and that is not what we want. Thanks! Yonghong