CONFIG_SYMBOL_PREFIX: cleanup.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 15 Mar 2013 04:34:17 +0000 (15:04 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 15 Mar 2013 04:39:43 +0000 (15:09 +1030)
commitb92021b09df70c1609e3547f3d6128dd560be97f
tree0203752a738c71718f5141b84f5143d1dc8b431d
parent4febd95a8a85dd38b1a71fcf9726e19c7fd20039
CONFIG_SYMBOL_PREFIX: cleanup.

We have CONFIG_SYMBOL_PREFIX, which three archs define to the string
"_".  But Al Viro broke this in "consolidate cond_syscall and
SYSCALL_ALIAS declarations" (in linux-next), and he's not the first to
do so.

Using CONFIG_SYMBOL_PREFIX is awkward, since we usually just want to
prefix it so something.  So various places define helpers which are
defined to nothing if CONFIG_SYMBOL_PREFIX isn't set:

1) include/asm-generic/unistd.h defines __SYMBOL_PREFIX.
2) include/asm-generic/vmlinux.lds.h defines VMLINUX_SYMBOL(sym)
3) include/linux/export.h defines MODULE_SYMBOL_PREFIX.
4) include/linux/kernel.h defines SYMBOL_PREFIX (which differs from #7)
5) kernel/modsign_certificate.S defines ASM_SYMBOL(sym)
6) scripts/modpost.c defines MODULE_SYMBOL_PREFIX
7) scripts/Makefile.lib defines SYMBOL_PREFIX on the commandline if
   CONFIG_SYMBOL_PREFIX is set, so that we have a non-string version
   for pasting.

(arch/h8300/include/asm/linkage.h defines SYMBOL_NAME(), too).

Let's solve this properly:
1) No more generic prefix, just CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX.
2) Make linux/export.h usable from asm.
3) Define VMLINUX_SYMBOL() and VMLINUX_SYMBOL_STR().
4) Make everyone use them.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Reviewed-by: James Hogan <james.hogan@imgtec.com>
Tested-by: James Hogan <james.hogan@imgtec.com> (metag)
16 files changed:
Makefile
arch/Kconfig
arch/blackfin/Kconfig
arch/h8300/Kconfig
arch/metag/Kconfig
drivers/mtd/chips/gen_probe.c
include/asm-generic/unistd.h
include/asm-generic/vmlinux.lds.h
include/linux/export.h
include/linux/kernel.h
include/linux/module.h
kernel/modsign_certificate.S
kernel/module.c
scripts/Makefile.lib
scripts/link-vmlinux.sh
scripts/mod/modpost.c