summaryrefslogtreecommitdiffstats
path: root/scripts/Makefile.build
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2016-11-09 05:34:05 +0100
committerMichal Marek <mmarek@suse.com>2016-11-09 22:29:53 +0100
commitcc6acc11cad1eb1ae39707a3a6e4a97fafbeeabd (patch)
treec4b7b075f890668a78c7a2bcea0016f10519c71d /scripts/Makefile.build
parentx86/kexec: add -fno-PIE (diff)
downloadlinux-cc6acc11cad1eb1ae39707a3a6e4a97fafbeeabd.tar.xz
linux-cc6acc11cad1eb1ae39707a3a6e4a97fafbeeabd.zip
kbuild: be more careful about matching preprocessed asm ___EXPORT_SYMBOL
The CRC code for asm exports grabs the preprocessed asm, finds the ___EXPORT_SYMBOL and turns those into EXPORT_SYMBOL in a C program that can be preprocessed and parsed to create the CRC signatures from the type. The existing regex matching and replacement is too strict, and doesn't deal well with whitespace among other things. The line " EXPORT_SYMBOL(sym)" in a .S file would not match due to initial whitespace, for example, which resulted in x86's ___preempt_schedule failing to get CRCs. Reported-by: Philip Müller <philm@manjaro.org> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michal Marek <mmarek@suse.com>
Diffstat (limited to 'scripts/Makefile.build')
-rw-r--r--scripts/Makefile.build4
1 files changed, 2 insertions, 2 deletions
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 3e223c264469..7675d11ee65e 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -332,8 +332,8 @@ cmd_gensymtypes_S = \
(echo "\#include <linux/kernel.h>" ; \
echo "\#include <asm/asm-prototypes.h>" ; \
$(CPP) $(a_flags) $< | \
- grep ^___EXPORT_SYMBOL | \
- sed 's/___EXPORT_SYMBOL \([a-zA-Z0-9_]*\),.*/EXPORT_SYMBOL(\1);/' ) | \
+ grep "\<___EXPORT_SYMBOL\>" | \
+ sed 's/.*___EXPORT_SYMBOL[[:space:]]*\([a-zA-Z0-9_]*\)[[:space:]]*,.*/EXPORT_SYMBOL(\1);/' ) | \
$(CPP) -D__GENKSYMS__ $(c_flags) -xc - | \
$(GENKSYMS) $(if $(1), -T $(2)) \
$(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX)) \