On Tue, Dec 1, 2020 at 1:37 PM Sami Tolvanen <samitolvanen@xxxxxxxxxx> 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. > > Note that arm64 support depends on Will's memory ordering patches > [1]. I will post x86_64 patches separately after we have fixed the > remaining objtool warnings [2][3]. > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git/log/?h=for-next/lto > [2] https://lore.kernel.org/lkml/20201120040424.a3wctajzft4ufoiw@treble/ > [3] https://git.kernel.org/pub/scm/linux/kernel/git/jpoimboe/linux.git/log/?h=objtool-vmlinux > > You can also pull this series from > > https://github.com/samitolvanen/linux.git lto-v8 > > --- > Changes in v8: > > - Cleaned up the LTO Kconfig options based on suggestions from > Nick and Kees. Thanks Sami, for the series: Tested-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> (build and boot tested under emulation with https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git/log/?h=for-next/lto additionally rebased on top). As with v7, if the series changes drastically for v9, please consider dropping my tested by tag for the individual patches that change and I will help re-test them. -- Thanks, ~Nick Desaulniers