From 017e328032577cf8419fe535657e39c5fbc4e0c4 Mon Sep 17 00:00:00 2001 From: Joey Schulze Date: Thu, 31 May 2007 14:52:20 +0000 Subject: [PATCH] Only read kernel symbols from /proc/kallsyms if no System.map has been read --- ksym.c | 2 +- ksym_mod.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ksym.c b/ksym.c index 1bb6bce..32fb6e9 100644 --- a/ksym.c +++ b/ksym.c @@ -132,7 +132,7 @@ #define VERBOSE_DEBUGGING 0 -static int num_syms = 0; +int num_syms = 0; static int i_am_paranoid = 0; static char vstring[12]; static struct sym_table *sym_array = (struct sym_table *) 0; diff --git a/ksym_mod.c b/ksym_mod.c index fef5251..fc21e3a 100644 --- a/ksym_mod.c +++ b/ksym_mod.c @@ -92,6 +92,10 @@ * Mon May 28 16:46:59 CEST 2007: Martin Schulze * Since Linux 2.6 query_module is depricated and no implemented * anymore. Thus, overhauled symbol import via /proc/kallsyms + * + * Thu May 31 12:12:23 CEST 2007: Martin Schulze + * Only read kernel symbols from /proc/kallsyms if no System.map + * has been read as it may contain more symbols. */ @@ -137,6 +141,8 @@ static int AddSymbol(const char *); struct Module *AddModule(const char *); static int symsort(const void *, const void *); +/* Imported from ksym.c */ +extern int num_syms; /************************************************************************** * Function: InitMsyms @@ -188,6 +194,9 @@ extern int InitMsyms() while ( fgets(buf, sizeof(buf), ksyms) != NULL ) { + if (num_syms > 0 && index(buf, '[') == NULL) + continue; + p = index(buf, ' '); if ( p == NULL )