x86/purgatory: undefined symbol __stack_chk_fail
From: Andreas Smas
Date: Tue Sep 03 2019 - 11:50:38 EST
Hi,
For me, kernels built including this commit
b059f801a937 (x86/purgatory: Use CFLAGS_REMOVE rather than reset KBUILD_CFLAGS)
results in kexec() failing to load the kernel:
kexec: Undefined symbol: __stack_chk_fail
kexec-bzImage64: Loading purgatory failed
Can be seen:
$ readelf -a arch/x86/purgatory/purgatory.ro | grep UND
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
51: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND __stack_chk_fail
Using: gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
Adding -ffreestanding or -fno-stack-protector to ccflags-y in
arch/x86/purgatory/Makefile
fixes the problem. Not sure which would be preferred.