Re: [PATCH v9 00/16] Add support for Clang LTO

From: Kees Cook
Date: Fri Jan 08 2021 - 19:29:50 EST


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