aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/module.h
diff options
context:
space:
mode:
authorAlessio Igor Bogani <abogani@kernel.org>2011-04-14 08:59:39 -0400
committerRusty Russell <rusty@rustcorp.com.au>2011-05-19 03:25:27 -0400
commitf02e8a6596b7dc9b2171f7ff5654039ef0950cdc (patch)
tree7e306a718415a53aea737c434f33eb36f3e53abc /include/linux/module.h
parentde4d8d53465483168d6a627d409ee2d09d8e3308 (diff)
module: Sort exported symbols
This patch places every exported symbol in its own section (i.e. "___ksymtab+printk"). Thus the linker will use its SORT() directive to sort and finally merge all symbol in the right and final section (i.e. "__ksymtab"). The symbol prefixed archs use an underscore as prefix for symbols. To avoid collision we use a different character to create the temporary section names. This work was supported by a hardware donation from the CE Linux Forum. Signed-off-by: Alessio Igor Bogani <abogani@kernel.org> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (folded in '+' fixup) Tested-by: Dirk Behme <dirk.behme@googlemail.com>
Diffstat (limited to 'include/linux/module.h')
-rw-r--r--include/linux/module.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/module.h b/include/linux/module.h
index 49f4ad0ddec2..d9ca2d5dc6d0 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -224,7 +224,7 @@ struct module_use {
224 extern void *__crc_##sym __attribute__((weak)); \ 224 extern void *__crc_##sym __attribute__((weak)); \
225 static const unsigned long __kcrctab_##sym \ 225 static const unsigned long __kcrctab_##sym \
226 __used \ 226 __used \
227 __attribute__((section("__kcrctab" sec), unused)) \ 227 __attribute__((section("___kcrctab" sec "+" #sym), unused)) \
228 = (unsigned long) &__crc_##sym; 228 = (unsigned long) &__crc_##sym;
229#else 229#else
230#define __CRC_SYMBOL(sym, sec) 230#define __CRC_SYMBOL(sym, sec)
@@ -239,7 +239,7 @@ struct module_use {
239 = MODULE_SYMBOL_PREFIX #sym; \ 239 = MODULE_SYMBOL_PREFIX #sym; \
240 static const struct kernel_symbol __ksymtab_##sym \ 240 static const struct kernel_symbol __ksymtab_##sym \
241 __used \ 241 __used \
242 __attribute__((section("__ksymtab" sec), unused)) \ 242 __attribute__((section("___ksymtab" sec "+" #sym), unused)) \
243 = { (unsigned long)&sym, __kstrtab_##sym } 243 = { (unsigned long)&sym, __kstrtab_##sym }
244 244
245#define EXPORT_SYMBOL(sym) \ 245#define EXPORT_SYMBOL(sym) \