summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-08-09 01:55:13 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-08-09 01:55:13 +0000
commit28a7e46a0ebee92a428a5ce77c436b35056ff536 (patch)
treede6aa940a9d36238443b980f43b88bc8f398cd00 /target
parent1867f66fb1932211ad9abf5917ce45a47042e494 (diff)
fix the kernel symbol export patch for arm/powerpc
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17186 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/generic-2.6/patches-2.6.30/028-module_exports.patch97
1 files changed, 88 insertions, 9 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.30/028-module_exports.patch b/target/linux/generic-2.6/patches-2.6.30/028-module_exports.patch
index ec037b30e7..f42fca1d31 100644
--- a/target/linux/generic-2.6/patches-2.6.30/028-module_exports.patch
+++ b/target/linux/generic-2.6/patches-2.6.30/028-module_exports.patch
@@ -1,25 +1,34 @@
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
-@@ -4,6 +4,18 @@
+@@ -4,6 +4,27 @@
#define LOAD_OFFSET 0
#endif
+#ifndef SYMTAB_KEEP_STR
-+#define SYMTAB_KEEP_STR *(__ksymtab_strings.*)
++#define SYMTAB_KEEP_STR *(__ksymtab_strings*)
++#define SYMTAB_DISCARD_STR
++#else
++#define SYMTAB_DISCARD_STR *(__ksymtab_strings*)
+#endif
+
+#ifndef SYMTAB_KEEP
-+#define SYMTAB_KEEP *(__ksymtab.*)
++#define SYMTAB_KEEP *(__ksymtab*)
++#define SYMTAB_DISCARD
++#else
++#define SYMTAB_DISCARD *(__ksymtab*)
+#endif
+
+#ifndef SYMTAB_KEEP_GPL
-+#define SYMTAB_KEEP_GPL *(__ksymtab_gpl.*)
++#define SYMTAB_KEEP_GPL *(__ksymtab_gpl*)
++#define SYMTAB_DISCARD_GPL
++#else
++#define SYMTAB_DISCARD_GPL *(__ksymtab_gpl*)
+#endif
+
#ifndef VMLINUX_SYMBOL
#define VMLINUX_SYMBOL(_sym_) _sym_
#endif
-@@ -176,35 +188,35 @@
+@@ -176,35 +197,35 @@
/* Kernel symbol table: Normal symbols */ \
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab) = .; \
@@ -40,7 +49,7 @@
__ksymtab_unused : AT(ADDR(__ksymtab_unused) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab_unused) = .; \
- *(__ksymtab_unused) \
-+ *(__ksymtab_unused.*) \
++ *(__ksymtab_unused*) \
VMLINUX_SYMBOL(__stop___ksymtab_unused) = .; \
} \
\
@@ -48,7 +57,7 @@
__ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab_unused_gpl) = .; \
- *(__ksymtab_unused_gpl) \
-+ *(__ksymtab_unused_gpl.*) \
++ *(__ksymtab_unused_gpl*) \
VMLINUX_SYMBOL(__stop___ksymtab_unused_gpl) = .; \
} \
\
@@ -56,11 +65,11 @@
__ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab_gpl_future) = .; \
- *(__ksymtab_gpl_future) \
-+ *(__ksymtab_gpl_future.*) \
++ *(__ksymtab_gpl_future*) \
VMLINUX_SYMBOL(__stop___ksymtab_gpl_future) = .; \
} \
\
-@@ -245,7 +257,13 @@
+@@ -245,7 +266,13 @@
\
/* Kernel symbol table: strings */ \
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
@@ -115,3 +124,73 @@
# The asm symlink changes when $(ARCH) changes.
# Detect this and ask user to run make mrproper
+--- a/arch/arm/kernel/vmlinux.lds.S
++++ b/arch/arm/kernel/vmlinux.lds.S
+@@ -78,18 +78,6 @@ SECTIONS
+ #endif
+ }
+
+- /DISCARD/ : { /* Exit code and data */
+- EXIT_TEXT
+- EXIT_DATA
+- *(.exitcall.exit)
+- *(.ARM.exidx.exit.text)
+- *(.ARM.extab.exit.text)
+-#ifndef CONFIG_MMU
+- *(.fixup)
+- *(__ex_table)
+-#endif
+- }
+-
+ .text : { /* Real text segment */
+ _text = .; /* Text and read-only data */
+ __exception_text_start = .;
+@@ -194,6 +182,20 @@ SECTIONS
+ *(COMMON)
+ _end = .;
+ }
++
++ /DISCARD/ : { /* Exit code and data */
++ EXIT_TEXT
++ EXIT_DATA
++ *(.discard)
++ *(.exitcall.exit)
++ *(.ARM.exidx.exit.text)
++ *(.ARM.extab.exit.text)
++#ifndef CONFIG_MMU
++ *(.fixup)
++ *(__ex_table)
++#endif
++ }
++
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+--- a/arch/powerpc/kernel/vmlinux.lds.S
++++ b/arch/powerpc/kernel/vmlinux.lds.S
+@@ -37,12 +37,6 @@ jiffies = jiffies_64 + 4;
+ #endif
+ SECTIONS
+ {
+- /* Sections to be discarded. */
+- /DISCARD/ : {
+- *(.exitcall.exit)
+- EXIT_DATA
+- }
+-
+ . = KERNELBASE;
+
+ /*
+@@ -295,6 +289,12 @@ SECTIONS
+ __bss_stop = .;
+ }
+
++ /* Sections to be discarded. */
++ /DISCARD/ : {
++ *(.exitcall.exit)
++ EXIT_DATA
++ }
++
+ . = ALIGN(PAGE_SIZE);
+ _end = . ;
+ PROVIDE32 (end = .);