clang: workaround for generated constants
authorJeroen Hofstee <jeroen@myspectrum.nl>
Wed, 30 Jul 2014 19:54:54 +0000 (21:54 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Tue, 9 Sep 2014 11:51:54 +0000 (13:51 +0200)
KBuild abuses the asm statement to write to a file and
clang chokes about these invalid asm statements. Hack it
even more by fooling this is actual valid asm code.

cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
cc: Tom Rini <trini@ti.com>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
Kbuild
include/linux/kbuild.h

diff --git a/Kbuild b/Kbuild
index 6e1698c5bf63aba67cf8bb6a02dfd23432f94c57..ef97787bf45945ee22803325a641d13b9c4468d9 100644 (file)
--- a/Kbuild
+++ b/Kbuild
@@ -53,7 +53,8 @@ targets += arch/$(ARCH)/lib/asm-offsets.s
 
 # Default sed regexp - multiline due to syntax constraints
 define sed-y
-       "/^->/{s:->#\(.*\):/* \1 */:; \
+       "s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; \
+       /^->/{s:->#\(.*\):/* \1 */:; \
        s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
        s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
        s:->::; p;}"
index ab7805a3b44330931a4be453f85cc86597590753..8a9f645e429712c25e83e2c8989bed4dda24eada 100644 (file)
@@ -7,14 +7,14 @@
 #define __LINUX_KBUILD_H
 
 #define DEFINE(sym, val) \
-       asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+       asm volatile("\n.ascii \"->" #sym " %0 " #val "\"" : : "i" (val))
 
-#define BLANK() asm volatile("\n->" : : )
+#define BLANK() asm volatile("\n.ascii \"->\"" : : )
 
 #define OFFSET(sym, str, mem) \
        DEFINE(sym, offsetof(struct str, mem))
 
 #define COMMENT(x) \
-       asm volatile("\n->#" x)
+       asm volatile("\n.ascii \"->#" x "\"")
 
 #endif