--- zzzz-none-000/linux-2.6.32.61/include/asm-generic/vmlinux.lds.h 2013-06-10 09:43:48.000000000 +0000 +++ ar10-7272-687/linux-2.6.32.61/include/asm-generic/vmlinux.lds.h 2011-07-20 07:23:51.000000000 +0000 @@ -52,6 +52,27 @@ #define LOAD_OFFSET 0 #endif +#ifndef SYMTAB_KEEP_STR +#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_DISCARD +#else +#define SYMTAB_DISCARD *(__ksymtab.*) +#endif + +#ifndef SYMTAB_KEEP_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 @@ -254,35 +275,35 @@ /* Kernel symbol table: Normal symbols */ \ __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start___ksymtab) = .; \ - *(__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) = .; \ - *(__ksymtab_gpl) \ + SYMTAB_KEEP_GPL \ VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \ } \ \ /* Kernel symbol table: Normal unused symbols */ \ __ksymtab_unused : AT(ADDR(__ksymtab_unused) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start___ksymtab_unused) = .; \ - *(__ksymtab_unused) \ + *(__ksymtab_unused.*) \ VMLINUX_SYMBOL(__stop___ksymtab_unused) = .; \ } \ \ /* Kernel symbol table: GPL-only unused symbols */ \ __ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start___ksymtab_unused_gpl) = .; \ - *(__ksymtab_unused_gpl) \ + *(__ksymtab_unused_gpl.*) \ VMLINUX_SYMBOL(__stop___ksymtab_unused_gpl) = .; \ } \ \ /* Kernel symbol table: GPL-future-only symbols */ \ __ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start___ksymtab_gpl_future) = .; \ - *(__ksymtab_gpl_future) \ + *(__ksymtab_gpl_future.*) \ VMLINUX_SYMBOL(__stop___ksymtab_gpl_future) = .; \ } \ \ @@ -323,7 +344,7 @@ \ /* Kernel symbol table: strings */ \ __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ - *(__ksymtab_strings) \ + SYMTAB_KEEP_STR \ } \ \ /* __*init sections */ \ @@ -638,6 +659,9 @@ EXIT_TEXT \ EXIT_DATA \ EXIT_CALL \ + SYMTAB_DISCARD \ + SYMTAB_DISCARD_GPL \ + SYMTAB_DISCARD_STR \ *(.discard) \ }