[PATCH v2 0/4] Improve kernel LLD support

From: ndesaulniers
Date: Mon Feb 11 2019 - 14:30:56 EST


This patch cleans up a few places in the Makefile to make way for
landing LLD support in the kernel. There are still a few arch specific
fixes that need to get upstreamed, but this core set of patches should
be arch independent.

Some very rough numbers: LLD is improving the overall build time of
Google Pixel kernels by about 9%. The build is mostly dominated by
compilation, but LLD is able to shave off quite a bit of time.

One of the included patches helps get LLD linked kernels to competitive
binary size, but there still some bugs in LLD causing it not to discard
certain sections. Once that's fixed, I estimate an LLD linked kernel to
be just barely smaller than a BFD linked kernel (less than 1%).

Folks looking to test should use LLD built from source, as I recently
fixed a bug in LLD that prevented LLD linked kernel modules from being
loadable.

$ make LD=ld.lld

Nick Desaulniers (4):
init/Kconfig: add config support for detecting linker
Makefile: clang: choose GCC_TOOLCHAIN_DIR not on LD
Makefile: lld: tell clang to use lld
Makefile: lld: set -O2 linker flag when linking with LLD

Changes since v1:
* collect reviewed-by, sugguested-by, tested-by tags.
* move where -fuse-ld=lld is added to CFLAGS.

Makefile | 9 ++++++++-
init/Kconfig | 9 +++++++++
2 files changed, 17 insertions(+), 1 deletion(-)

--
2.20.1.791.gb4d0f1c61a-goog