2.6.7: kallsyms --all-symbols shows a shift in the symbol addreses

Keith Owens kaos at ocs.com.au
Mon Jun 21 15:18:20 PDT 2004


On Mon, 21 Jun 2004 09:29:46 -0700, 
"Randy.Dunlap" <rddunlap at osdl.org> wrote:
>On Mon, 21 Jun 2004 18:19:56 +0200 Xavier Bru wrote:
>| There is a problem with the all kallsyms support in 2.6.7 
>| scripts/kallsyms.c.
>| One solution is to exclude from the symbol table the symbols used for 
>| building it (As was provided in KDB patch :-)
>
>Is this the same problem that Keith Owens made a patch for
>against 2.6.7-rc3 on 2004-june-15?
>Subject: [patch 2.6.7-rc3] When two kallsyms passes are not enough
>
>http://marc.theaimsgroup.com/?l=linux-kernel&m=108728234402407&w=2

Yes.  That patch has been refined and sent to Andrew Morton, it should
be in 2.6.8-*.  The critical fix is -

Index: 2.6.7-kallsyms/scripts/kallsyms.c
===================================================================
--- 2.6.7-kallsyms.orig/scripts/kallsyms.c	2004-06-20 20:12:08.000000000 +1000
+++ 2.6.7-kallsyms/scripts/kallsyms.c	2004-06-20 23:38:46.000000000 +1000
@@ -72,7 +72,15 @@ symbol_valid(struct sym_entry *s)
 			return 0;
 	}
 
-	if (strstr(s->sym, "_compiled."))
+	/* Exclude symbols which vary between passes.  Passes 1 and 2 must have
+	 * identical symbol lists.  The kallsyms_* symbols below are only added
+	 * after pass 1, they would be included in pass 2 when --all-symbols is
+	 * specified so exclude them to get a stable symbol list.
+	 */
+	if (strstr(s->sym, "_compiled.") ||
+	    strcmp(s->sym, "kallsyms_addresses") == 0 || 
+	    strcmp(s->sym, "kallsyms_num_syms") == 0 || 
+	    strcmp(s->sym, "kallsyms_names") == 0)
 		return 0;
 
 	return 1;

---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.


More information about the kdb mailing list