--- linux-2.6.12.org/scripts/kallsyms.c.org Sun Jun 19 16:11:06 2005 +++ linux-2.6.12.org/scripts/kallsyms.c Wed Aug 10 23:52:06 2005 @@ -36,7 +36,7 @@ /* we use only a subset of the complete symbol table to gather the token count, * to speed up compression, at the expense of a little compression ratio */ -#define WORKING_SET 1024 +#define WORKING_SET (1024*4) /* first find the best token only on the list of tokens that would profit more * than GOOD_BAD_THRESHOLD. Only if this list is empty go to the "bad" list. @@ -102,11 +102,34 @@ usage(void) * This ignores the intensely annoying "mapping symbols" found * in ARM ELF files: $a, $t and $d. */ +/* +__func__: 624 +__vendorstr_: 1760 +__pci_fixup_PCI_: 116 +__ksymtab_: 2597 +__kstrtab_: 2597 +__kcrctab_: 2597 +__initcall_: 236 +__devicestr_: 4686 +__devices_: 1760 +Total: 16973 +Lines in System.map: 39735 +*/ static inline int is_arm_mapping_symbol(const char *str) { - return str[0] == '$' && strchr("atd", str[1]) - && (str[2] == '\0' || str[2] == '.'); + return (str[0] == '$' && strchr("atd", str[1]) + && (str[2] == '\0' || str[2] == '.') + ) + || (0 == strncmp(str, "__ksymtab_", sizeof("__ksymtab_")-1)) + || (0 == strncmp(str, "__kstrtab_", sizeof("__kstrtab_")-1)) + || (0 == strncmp(str, "__kcrctab_", sizeof("__kcrctab_")-1)) + || (0 == strncmp(str, "__devices_", sizeof("__devices_")-1)) + || (0 == strncmp(str, "__devicestr_", sizeof("__devicestr_")-1)) + || (0 == strncmp(str, "__vendorstr_", sizeof("__vendorstr_")-1)) + || (0 == strncmp(str, "__pci_fixup_PCI_", sizeof("__pci_fixup_PCI_")-1)) + || (0 == strncmp(str, "__func__", sizeof("__func__")-1)) + ; } static int