diff mbox

kbuild: be more careful about matching preprocessed asm ___EXPORT_SYMBOL

Message ID 20161109043405.16344-1-npiggin@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Nicholas Piggin Nov. 9, 2016, 4:34 a.m. UTC
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>
---
 scripts/Makefile.build | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Michal Marek Nov. 9, 2016, 9:37 p.m. UTC | #1
Dne 9.11.2016 v 05:34 Nicholas Piggin napsal(a):
> 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>

Applied to kbuild.git#rc-fixes.

Michal

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 3e223c2..7675d11 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))             \