[PATCH v5 0/2] Support kexec/kdump for clang built kernel

From: Nick Desaulniers
Date: Wed Aug 07 2019 - 18:16:17 EST


1. Reuse the implementation of memcpy and memset instead of relying on
__builtin_memcpy and __builtin_memset as it causes infinite recursion
in Clang (at any opt level) or GCC at -O2.
2. Don't reset KBUILD_CFLAGS, rather filter CONFIG_FUNCTION_TRACER,
CONFIG_STACKPROTECTOR, CONFIG_STACKPROTECTOR_STRONG, and
CONFIG_RETPOLINE flags via `CFLAGS_REMOVE_<file>.o'.

A good test of this series (besides boot testing a kexec kernel):
* There should be no undefined symbols in arch/x86/purgatory/purgatory.ro:
$ nm arch/x86/purgatory/purgatory.ro
particularly `warn`, `bcmp`, `__stack_chk_fail`, `memcpy` or `memset`.
* `-pg`, `-fstack-protector`, `-fstack-protector-strong`, and
$(RETPOLINE_CFLAGS) should not be added to the command line for the C
source files under arch/x86/purgatory/ when compiling with
CONFIG_FUNCTION_TRACER=y, CONFIG_STACKPROTECTOR=y,
CONFIG_STACKPROTECTOR_STRONG=y, and CONFIG_RETPOLINE=y.

V5 of: https://lkml.org/lkml/2019/7/25/1276

Nick Desaulniers (2):
x86/purgatory: do not use __builtin_memcpy and __builtin_memset
x86/purgatory: use CFLAGS_REMOVE rather than reset KBUILD_CFLAGS

arch/x86/boot/string.c | 7 +++++++
arch/x86/purgatory/Makefile | 29 ++++++++++++++++++++++++-----
arch/x86/purgatory/purgatory.c | 6 ++++++
arch/x86/purgatory/string.c | 23 -----------------------
4 files changed, 37 insertions(+), 28 deletions(-)
delete mode 100644 arch/x86/purgatory/string.c

--
2.22.0.709.g102302147b-goog