All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denis Vlasenko <vda@ilport.com.ua>
To: pmarques@grupopie.com, kai.germaschewski@gmx.de, kai@germaschewski.name
Cc: linux-kernel <linux-kernel@vger.kernel.org>, akpm@osdl.org
Subject: [PATCH] do not save thousands of useless symbols in KALLSYMS kernels
Date: Thu, 11 Aug 2005 14:03:39 +0300	[thread overview]
Message-ID: <200508111403.39708.vda@ilport.com.ua> (raw)

[-- Attachment #1: Type: text/plain, Size: 620 bytes --]

Sample of my kernel's mostly useless symbols
(starting_with:# of symbols):

__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

Excluding them from in-kernel symbol table saves ~300kb:

   text    data     bss     dec     hex filename
4337710 1054414  259296 5651420  563bdc vmlinux.carrier1 - w/o KALLSYMS
4342068 1296046  259296 5897410  59fcc2 vmlinux - with KALLSYMS+patch
4341948 1607634  259296 6208878  5ebd6e vmlinux.carrier - with KALLSYMS
        ^^^^^^^
--
vda

[-- Attachment #2: kallsyms.c.diff --]
[-- Type: text/x-diff, Size: 1685 bytes --]

--- 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

             reply	other threads:[~2005-08-11 11:04 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-11 11:03 Denis Vlasenko [this message]
2005-08-11 11:16 ` [PATCH] do not save thousands of useless symbols in KALLSYMS kernels Paulo Marques
2005-08-11 11:38   ` Denis Vlasenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200508111403.39708.vda@ilport.com.ua \
    --to=vda@ilport.com.ua \
    --cc=akpm@osdl.org \
    --cc=kai.germaschewski@gmx.de \
    --cc=kai@germaschewski.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmarques@grupopie.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.