summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Hogan <james.hogan@imgtec.com>2013-05-01 22:04:17 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 15:51:29 -0700
commit126de6b20bfb82cc19012d5048f11f339ae5a021 (patch)
tree4e352564fd6b8ad82920aff7fd1d87dcaa29c3da
parent73287a43cc79ca06629a88d1a199cd283f42456a (diff)
linkage.h: fix build breakage due to symbol prefix handling
Al's commit e1b5bb6d1236 ("consolidate cond_syscall and SYSCALL_ALIAS declarations") broke the build on blackfin and metag due to the following code: #ifndef SYMBOL_NAME #ifdef CONFIG_SYMBOL_PREFIX #define SYMBOL_NAME(x) CONFIG_SYMBOL_PREFIX ## x #else #define SYMBOL_NAME(x) x #endif #endif #define __SYMBOL_NAME(x) __stringify(SYMBOL_NAME(x)) __stringify literally stringifies CONFIG_SYMBOL_PREFIX ##x, so you get lines like this in kernel/sys_ni.s: .weak CONFIG_SYMBOL_PREFIXsys_quotactl .set CONFIG_SYMBOL_PREFIXsys_quotactl,CONFIG_SYMBOL_PREFIXsys_ni_syscall The patches in Rusty's modules-next tree such as "CONFIG_SYMBOL_PREFIX: cleanup." cleans up the whole mess around symbol prefixes, so this patch just attempts to fix the build in the meantime. The intermediate definition of SYMBOL_NAME above isn't used and is incorrect when CONFIG_SYMBOL_PREFIX is defined as CONFIG_SYMBOL_PREFIX is a quoted string literal, so define __SYMBOL_NAME directly depending on CONFIG_SYMBOL_PREFIX. Signed-off-by: James Hogan <james.hogan@imgtec.com> Mea-culpa-by: Al Viro <viro@zeniv.linux.org.uk> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Mike Frysinger <vapier@gentoo.org> Cc: uclinux-dist-devel@blackfin.uclinux.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--include/linux/linkage.h7
1 files changed, 2 insertions, 5 deletions
diff --git a/include/linux/linkage.h b/include/linux/linkage.h
index 829d66c67fc..de09dec25ec 100644
--- a/include/linux/linkage.h
+++ b/include/linux/linkage.h
@@ -15,14 +15,11 @@
#define asmlinkage CPP_ASMLINKAGE
#endif
-#ifndef SYMBOL_NAME
#ifdef CONFIG_SYMBOL_PREFIX
-#define SYMBOL_NAME(x) CONFIG_SYMBOL_PREFIX ## x
+#define __SYMBOL_NAME(x) CONFIG_SYMBOL_PREFIX __stringify(x)
#else
-#define SYMBOL_NAME(x) x
+#define __SYMBOL_NAME(x) __stringify(x)
#endif
-#endif
-#define __SYMBOL_NAME(x) __stringify(SYMBOL_NAME(x))
#ifndef cond_syscall
#define cond_syscall(x) asm(".weak\t" __SYMBOL_NAME(x) \