On Fri, 11 Dec 2020 10:46:17 -0800, Sami Tolvanen wrote: > This patch series adds support for building the kernel with Clang's > Link Time Optimization (LTO). In addition to performance, the primary > motivation for LTO is to allow Clang's Control-Flow Integrity (CFI) > to be used in the kernel. Google has shipped millions of Pixel > devices running three major kernel versions with LTO+CFI since 2018. > > Most of the patches are build system changes for handling LLVM > bitcode, which Clang produces with LTO instead of ELF object files, > postponing ELF processing until a later stage, and ensuring initcall > ordering. > > [...] Applied to kspp/lto/v5.11-rc2, thanks! I'll let 0-day grind on this over the weekend and toss it in -next on Monday if there aren't any objections. [01/16] tracing: move function tracer options to Kconfig https://git.kernel.org/kees/c/3b15cdc15956 [02/16] kbuild: add support for Clang LTO https://git.kernel.org/kees/c/833174494976 [03/16] kbuild: lto: fix module versioning https://git.kernel.org/kees/c/6eb20c5338a0 [04/16] kbuild: lto: limit inlining https://git.kernel.org/kees/c/f6db4eff0691 [05/16] kbuild: lto: merge module sections https://git.kernel.org/kees/c/d03e46783689 [06/16] kbuild: lto: add a default list of used symbols https://git.kernel.org/kees/c/81bfbc27b122 [07/16] init: lto: ensure initcall ordering https://git.kernel.org/kees/c/7918ea64195d [08/16] init: lto: fix PREL32 relocations https://git.kernel.org/kees/c/a51d9615ffb5 [09/16] PCI: Fix PREL32 relocations for LTO https://git.kernel.org/kees/c/dc83615370e7 [10/16] modpost: lto: strip .lto from module names https://git.kernel.org/kees/c/5c0312ef3ca0 [11/16] scripts/mod: disable LTO for empty.c https://git.kernel.org/kees/c/3d05432db312 [12/16] efi/libstub: disable LTO https://git.kernel.org/kees/c/b12eba00cb87 [13/16] drivers/misc/lkdtm: disable LTO for rodata.o https://git.kernel.org/kees/c/ed02e86f1752 [14/16] arm64: vdso: disable LTO https://git.kernel.org/kees/c/d73692f0f527 [15/16] arm64: disable recordmcount with DYNAMIC_FTRACE_WITH_REGS https://git.kernel.org/kees/c/09b812ac146f [16/16] arm64: allow LTO to be selected https://git.kernel.org/kees/c/1354b8946c46 -- Kees Cook