diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-01-26 16:26:13 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-01-26 16:26:13 +0000 |
commit | edf06589cc0ad9474b6c17aa84af90a932eaca13 (patch) | |
tree | 24d7f96936770d3e3ee904982008bfcf174acc7e /target/linux/generic/patches-3.8/220-module_exports.patch | |
parent | 0a3970a70de5376f9a7ddef0c0b68acf9eb8caab (diff) |
kernel: use -ffunction-sections, -fdata-sections and --gc-sections on mips
in combination with kernel symbol export stripping this significantly reduces
the kernel image size
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35320 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/patches-3.8/220-module_exports.patch')
-rw-r--r-- | target/linux/generic/patches-3.8/220-module_exports.patch | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/target/linux/generic/patches-3.8/220-module_exports.patch b/target/linux/generic/patches-3.8/220-module_exports.patch deleted file mode 100644 index fc382c16f..000000000 --- a/target/linux/generic/patches-3.8/220-module_exports.patch +++ /dev/null @@ -1,91 +0,0 @@ ---- a/include/asm-generic/vmlinux.lds.h -+++ b/include/asm-generic/vmlinux.lds.h -@@ -52,6 +52,18 @@ - #define LOAD_OFFSET 0 - #endif - -+#ifndef SYMTAB_KEEP_STR -+#define SYMTAB_KEEP *(SORT(___ksymtab+*)) -+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*)) -+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*) -+#endif -+ -+#ifndef SYMTAB_DISCARD -+#define SYMTAB_DISCARD -+#define SYMTAB_DISCARD_GPL -+#define SYMTAB_DISCARD_STR -+#endif -+ - #ifndef SYMBOL_PREFIX - #define VMLINUX_SYMBOL(sym) sym - #else -@@ -276,14 +288,14 @@ - /* Kernel symbol table: Normal symbols */ \ - __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \ - VMLINUX_SYMBOL(__start___ksymtab) = .; \ -- *(SORT(___ksymtab+*)) \ -+ SYMTAB_KEEP \ - VMLINUX_SYMBOL(__stop___ksymtab) = .; \ - } \ - \ - /* Kernel symbol table: GPL-only symbols */ \ - __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \ - VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \ -- *(SORT(___ksymtab_gpl+*)) \ -+ SYMTAB_KEEP_GPL \ - VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \ - } \ - \ -@@ -345,7 +357,7 @@ - \ - /* Kernel symbol table: strings */ \ - __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ -- *(__ksymtab_strings) \ -+ SYMTAB_KEEP_STR \ - } \ - \ - /* __*init sections */ \ -@@ -679,6 +691,9 @@ - EXIT_TEXT \ - EXIT_DATA \ - EXIT_CALL \ -+ SYMTAB_DISCARD \ -+ SYMTAB_DISCARD_GPL \ -+ SYMTAB_DISCARD_STR \ - *(.discard) \ - *(.discard.*) \ - } ---- a/include/linux/export.h -+++ b/include/linux/export.h -@@ -45,12 +45,19 @@ extern struct module __this_module; - #define __CRC_SYMBOL(sym, sec) - #endif - -+#ifdef MODULE -+#define __EXPORT_SUFFIX(sym) -+#else -+#define __EXPORT_SUFFIX(sym) "+" #sym -+#endif -+ - /* For every exported symbol, place a struct in the __ksymtab section */ - #define __EXPORT_SYMBOL(sym, sec) \ - extern typeof(sym) sym; \ - __CRC_SYMBOL(sym, sec) \ - static const char __kstrtab_##sym[] \ -- __attribute__((section("__ksymtab_strings"), aligned(1))) \ -+ __attribute__((section("__ksymtab_strings" \ -+ __EXPORT_SUFFIX(sym)), aligned(1))) \ - = MODULE_SYMBOL_PREFIX #sym; \ - static const struct kernel_symbol __ksymtab_##sym \ - __used \ ---- a/scripts/Makefile.build -+++ b/scripts/Makefile.build -@@ -348,7 +348,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $( - # Linker scripts preprocessor (.lds.S -> .lds) - # --------------------------------------------------------------------------- - quiet_cmd_cpp_lds_S = LDS $@ -- cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \ -+ cmd_cpp_lds_S = $(CPP) $(EXTRA_LDSFLAGS) $(cpp_flags) -P -C -U$(ARCH) \ - -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $< - - $(obj)/%.lds: $(src)/%.lds.S FORCE |