History

asmlinkage, module: Make ksymtab and kcrctab symbols and __this_module __visible

Make the ksymtab symbols for EXPORT_SYMBOL visible. This prevents the LTO compiler from adding a .NUMBER prefix, which avoids various problems in later export processing.

Andi Kleen committed 13 years ago

Commit e0f244c1 parent eb3057d2 files · +3 −3Browse files

Unified · Split

2 files
  1. include/linux/export.h +2 −2
  2. scripts/mod/modpost.c +1 −1
include/linux/export.h+2−2
@@ -43,7 +43,7 @@ extern struct module __this_module; · 42 unmodified lines
43/* Mark the CRC weak since genksyms apparently decides not to43/* Mark the CRC weak since genksyms apparently decides not to
44 * generate a checksums for some symbols */44 * generate a checksums for some symbols */
45#define __CRC_SYMBOL(sym, sec) \45#define __CRC_SYMBOL(sym, sec) \
46 extern void *__crc_##sym __attribute__((weak)); \46 extern __visible void *__crc_##sym __attribute__((weak)); \
47 static const unsigned long __kcrctab_##sym \47 static const unsigned long __kcrctab_##sym \
48 __used \48 __used \
49 __attribute__((section("___kcrctab" sec "+" #sym), unused)) \49 __attribute__((section("___kcrctab" sec "+" #sym), unused)) \
@@ -59,7 +59,7 @@ extern struct module __this_module; · 9 unmodified lines
59 static const char __kstrtab_##sym[] \59 static const char __kstrtab_##sym[] \
60 __attribute__((section("__ksymtab_strings"), aligned(1))) \60 __attribute__((section("__ksymtab_strings"), aligned(1))) \
61 = VMLINUX_SYMBOL_STR(sym); \61 = VMLINUX_SYMBOL_STR(sym); \
62 static const struct kernel_symbol __ksymtab_##sym \62 __visible const struct kernel_symbol __ksymtab_##sym \
63 __used \63 __used \
64 __attribute__((section("___ksymtab" sec "+" #sym), unused)) \64 __attribute__((section("___ksymtab" sec "+" #sym), unused)) \
65 = { (unsigned long)&sym, __kstrtab_##sym }65 = { (unsigned long)&sym, __kstrtab_##sym }
scripts/mod/modpost.c+1−1
@@ -1861,7 +1861,7 @@ static void add_header(struct buffer *b, struct module *mod) · 1860 unmodified lines
1861 buf_printf(b, "\n");1861 buf_printf(b, "\n");
1862 buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");1862 buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");
1863 buf_printf(b, "\n");1863 buf_printf(b, "\n");
1864 buf_printf(b, "struct module __this_module\n");1864 buf_printf(b, "__visible struct module __this_module\n");
1865 buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");1865 buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
1866 buf_printf(b, "\t.name = KBUILD_MODNAME,\n");1866 buf_printf(b, "\t.name = KBUILD_MODNAME,\n");
1867 if (mod->has_init)1867 if (mod->has_init)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t