summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2003-01-15 16:29:29 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2003-01-15 16:29:29 -0800
commita358e2a5b439eabc81d369833072ea3d77173162 (patch)
tree0339d3e51107efc1fd77878d27a69727586f227c /include/linux
parentc9b1ca0d29ab35ca924c36b479011e4a9aaec051 (diff)
parent89f97c42857deb5a9229180e3d72cb823cab12bc (diff)
Merge http://linux-isdn.bkbits.net/linux-2.5.make
into home.transmeta.com:/home/torvalds/v2.5/linux
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/module.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/include/linux/module.h b/include/linux/module.h
index f38e535eacd9..507fa6c563ef 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -36,7 +36,7 @@
struct kernel_symbol
{
unsigned long value;
- char name[MODULE_NAME_LEN];
+ const char *name;
};
/* These are either module local, or the kernel's dummy ones. */
@@ -140,17 +140,23 @@ void *__symbol_get_gpl(const char *symbol);
#define symbol_get(x) ((typeof(&x))(__symbol_get(MODULE_SYMBOL_PREFIX #x)))
/* For every exported symbol, place a struct in the __ksymtab section */
-#define EXPORT_SYMBOL(sym) \
- const struct kernel_symbol __ksymtab_##sym \
- __attribute__((section("__ksymtab"))) \
- = { (unsigned long)&sym, MODULE_SYMBOL_PREFIX #sym }
+#define EXPORT_SYMBOL(sym) \
+ static const char __kstrtab_##sym[] \
+ __attribute__((section("__ksymtab_strings"))) \
+ = MODULE_SYMBOL_PREFIX #sym; \
+ static const struct kernel_symbol __ksymtab_##sym \
+ __attribute__((section("__ksymtab"))) \
+ = { (unsigned long)&sym, __kstrtab_##sym }
#define EXPORT_SYMBOL_NOVERS(sym) EXPORT_SYMBOL(sym)
-#define EXPORT_SYMBOL_GPL(sym) \
- const struct kernel_symbol __ksymtab_##sym \
- __attribute__((section("__gpl_ksymtab"))) \
- = { (unsigned long)&sym, #sym }
+#define EXPORT_SYMBOL_GPL(sym) \
+ static const char __kstrtab_##sym[] \
+ __attribute__((section("__ksymtab_strings"))) \
+ = MODULE_SYMBOL_PREFIX #sym; \
+ static const struct kernel_symbol __ksymtab_##sym \
+ __attribute__((section("__gpl_ksymtab"))) \
+ = { (unsigned long)&sym, __kstrtab_##sym }
struct module_ref
{