@@ -1,8 +1,8 @@
#ifndef _KBUILD_H_
#define _KBUILD_H_
#define DEFINE(sym, val) \
- asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+ asm volatile("\n.ascii \"->" #sym " %0 " #val "\"" : : "i" (val))
#define OFFSET(sym, str, mem) DEFINE(sym, offsetof(struct str, mem))
-#define COMMENT(x) asm volatile("\n->#" x)
-#define BLANK() asm volatile("\n->" : : )
+#define COMMENT(x) asm volatile("\n.ascii \"->#" x "\"")
+#define BLANK() asm volatile("\n.ascii \"->\"" : : )
#endif
@@ -8,10 +8,11 @@
#
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;}"
+ s:->::; p;}'
endef
define make_asm_offsets
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. This is an adaption of the Linux kernel commit cf0c3e68aa81f992b0 which in turn is based on a patch for the U-Boot: http://patchwork.ozlabs.org/patch/375026/ Signed-off-by: Thomas Huth <thuth@redhat.com> --- lib/kbuild.h | 6 +++--- scripts/asm-offsets.mak | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-)