summaryrefslogtreecommitdiffstats
path: root/scripts/module-common.lds
diff options
context:
space:
mode:
authorAlessio Igor Bogani <abogani@kernel.org>2011-04-14 14:59:39 +0200
committerRusty Russell <rusty@rustcorp.com.au>2011-05-19 16:55:27 +0930
commitf02e8a6596b7dc9b2171f7ff5654039ef0950cdc (patch)
tree7e306a718415a53aea737c434f33eb36f3e53abc /scripts/module-common.lds
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 'scripts/module-common.lds')
-rw-r--r--scripts/module-common.lds11
1 files changed, 11 insertions, 0 deletions
diff --git a/scripts/module-common.lds b/scripts/module-common.lds
index 47a1f9ae0ed..0865b3e752b 100644
--- a/scripts/module-common.lds
+++ b/scripts/module-common.lds
@@ -5,4 +5,15 @@
*/
SECTIONS {
/DISCARD/ : { *(.discard) }
+
+ __ksymtab : { *(SORT(___ksymtab+*)) }
+ __ksymtab_gpl : { *(SORT(___ksymtab_gpl+*)) }
+ __ksymtab_unused : { *(SORT(___ksymtab_unused+*)) }
+ __ksymtab_unused_gpl : { *(SORT(___ksymtab_unused_gpl+*)) }
+ __ksymtab_gpl_future : { *(SORT(___ksymtab_gpl_future+*)) }
+ __kcrctab : { *(SORT(___kcrctab+*)) }
+ __kcrctab_gpl : { *(SORT(___kcrctab_gpl+*)) }
+ __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) }
+ __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) }
+ __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) }
}