Message ID | 20211213224914.1501303-1-paul@crapouillou.net (mailing list archive) |
---|---|
Headers | show |
Series | MIPS: Add support for LTO | expand |
On Mon, Dec 13, 2021 at 10:49:11PM +0000, Paul Cercueil wrote: > Hi, > > With this set of patches, it becomes possible to build a LTO'd kernel > with LLVM/Clang on MIPS. > > This was tested on a Ingenic JZ4770 based system. It requires the > linking step of the vmlinuz.bin to be done with binutils' LD instead of > LLVM's ld.lld [1], but the vmlinuz ELF itself can be completely built > with LLVM. The patches seem fine to me but it might be nice to have this fixed up before the series is merged so that everything just works when this configuration is selected. I have added some thoughts on the GitHub issue. > Strangely, the LTO'd kernel is bigger in size (3.6 MiB vs. 3.1 MiB > without LTO), which might be completely normal and I just have wrong > expectations. > > Cheers, > -Paul > > [1]: https://github.com/ClangBuiltLinux/linux/issues/1333 > > Paul Cercueil (3): > MIPS: boot/compressed: Disable abicalls > MIPS: boot/compressed: Build without LTO > MIPS: Add support for LTO > > arch/mips/Kconfig | 1 + > arch/mips/boot/compressed/Makefile | 7 +++++-- > 2 files changed, 6 insertions(+), 2 deletions(-) > > -- > 2.33.0 > >
On Mon, Dec 13, 2021 at 2:49 PM Paul Cercueil <paul@crapouillou.net> wrote: > > Hi, > > With this set of patches, it becomes possible to build a LTO'd kernel > with LLVM/Clang on MIPS. Paul, Overall, nice work pursuing this and working through all the related issues; thanks for the series! We should clarify whether this is LTO_CLANG_THIN or LTO_CLANG_FULL. Getting support for either would be nice, but for each architecture has had its own distinct challenges. > > This was tested on a Ingenic JZ4770 based system. It requires the > linking step of the vmlinuz.bin to be done with binutils' LD instead of > LLVM's ld.lld [1], but the vmlinuz ELF itself can be completely built > with LLVM. eh, this patch set sounds incomplete then; Can we wait to resolve https://github.com/ClangBuiltLinux/linux/issues/1333 BEFORE this series? Hacking up arch/mips/boot/compressed/Makefile to force a different linker is not something we should encourage. > > Strangely, the LTO'd kernel is bigger in size (3.6 MiB vs. 3.1 MiB > without LTO), which might be completely normal and I just have wrong > expectations. Are you building with CC_OPTIMIZE_FOR_SIZE or CC_OPTIMIZE_FOR_SIZE? LTO != LD_DEAD_CODE_DATA_ELIMINATION > > Cheers, > -Paul > > [1]: https://github.com/ClangBuiltLinux/linux/issues/1333 > > Paul Cercueil (3): > MIPS: boot/compressed: Disable abicalls > MIPS: boot/compressed: Build without LTO > MIPS: Add support for LTO > > arch/mips/Kconfig | 1 + > arch/mips/boot/compressed/Makefile | 7 +++++-- > 2 files changed, 6 insertions(+), 2 deletions(-) > > -- > 2.33.0 >