kbuild: Hoist '--orphan-handling' into Kconfig
authorNathan Chancellor <natechancellor@gmail.com>
Thu, 19 Nov 2020 20:46:56 +0000 (13:46 -0700)
committerMasahiro Yamada <masahiroy@kernel.org>
Tue, 1 Dec 2020 13:45:36 +0000 (22:45 +0900)
commit59612b24f78a0b61fe078ec9dff2e48e9cec52c0
tree27ef4914a69c9bc3cd88fab6d3a6f6c10d5d91d0
parentb8a9092330da2030496ff357272f342eb970d51b
kbuild: Hoist '--orphan-handling' into Kconfig

Currently, '--orphan-handling=warn' is spread out across four different
architectures in their respective Makefiles, which makes it a little
unruly to deal with in case it needs to be disabled for a specific
linker version (in this case, ld.lld 10.0.1).

To make it easier to control this, hoist this warning into Kconfig and
the main Makefile so that disabling it is simpler, as the warning will
only be enabled in a couple places (main Makefile and a couple of
compressed boot folders that blow away LDFLAGS_vmlinx) and making it
conditional is easier due to Kconfig syntax. One small additional
benefit of this is saving a call to ld-option on incremental builds
because we will have already evaluated it for CONFIG_LD_ORPHAN_WARN.

To keep the list of supported architectures the same, introduce
CONFIG_ARCH_WANT_LD_ORPHAN_WARN, which an architecture can select to
gain this automatically after all of the sections are specified and size
asserted. A special thanks to Kees Cook for the help text on this
config.

Link: https://github.com/ClangBuiltLinux/linux/issues/1187
Acked-by: Kees Cook <keescook@chromium.org>
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
13 files changed:
Makefile
arch/Kconfig
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/boot/compressed/Makefile
arch/arm64/Kconfig
arch/arm64/Makefile
arch/powerpc/Kconfig
arch/powerpc/Makefile
arch/x86/Kconfig
arch/x86/Makefile
arch/x86/boot/compressed/Makefile
init/Kconfig