There's the series from Andi Kleen that enables LTO for Linux on x86:
https://lwn.net/Articles/512548/
https://github.com/andikleen/linux-misc/tree/lto-411-1
It has solved many problems you also try to solve, and some patches
are looking very similar.
At now we have different patchsets for gcc and clang, and it would be
better to have them together. One thing I'm worried is that you introduce
CONFIG_CLANG_LTO and use it for all cases, including that where more
generic CONFIG_LTO should be used.
Yes would be good to merge the two. I've been looking at updating
my old one.
I don't cover any ARM code, but lots of generic code. My patches
also worked on MIPS at least.
There's also older patches to enable single-pass-linking for kallsyms,
which is extremly useful for LTO build performance.
-Andi