[Crash-utility] [PATCH v5 3/6] Extend symname_hash_search with hash table select

Tao Liu ltao at redhat.com
Mon Oct 11 14:13:18 UTC 2021


Previously symname_hash_search can only search symbols from kernel's
symname_hash. This patch add hash table pointer as parameter for
symname_hash_search. Thus symname_hash_search can be used both for
symname_hash and mod_symname_hash searching.

Signed-off-by: Tao Liu <ltao at redhat.com>
---
 symbols.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/symbols.c b/symbols.c
index 92c066a..9373291 100644
--- a/symbols.c
+++ b/symbols.c
@@ -65,7 +65,7 @@ static void symval_hash_init(void);
 static struct syment *symval_hash_search(ulong);
 static void symname_hash_init(void);
 static void symname_hash_install(struct syment *);
-static struct syment *symname_hash_search(char *);
+static struct syment *symname_hash_search(struct syment *[], char *);
 static void gnu_qsort(bfd *, void *, long, unsigned int, asymbol *, asymbol *);
 static int check_gnu_debuglink(bfd *);
 static int separate_debug_file_exists(const char *, unsigned long, int *);
@@ -1242,11 +1242,11 @@ mod_symtable_hash_remove_range(struct syment *from, struct syment *to)
  *  Static kernel symbol value search
  */
 static struct syment *
-symname_hash_search(char *name)
+symname_hash_search(struct syment *table[], char *name)
 {
 	struct syment *sp;
 
-        sp = st->symname_hash[SYMNAME_HASH_INDEX(name)];
+	sp = table[SYMNAME_HASH_INDEX(name)];
 
 	while (sp) {
 		if (STREQ(sp->name, name)) 
@@ -4579,7 +4579,7 @@ symbol_search(char *s)
 {
 	struct syment *sp_hashed, *sp;
 
-	sp_hashed = symname_hash_search(s);
+	sp_hashed = symname_hash_search(st->symname_hash, s);
 
         for (sp = sp_hashed ? sp_hashed : st->symtable; sp < st->symend; sp++) {
                 if (STREQ(s, sp->name)) 
@@ -5493,7 +5493,7 @@ symbol_exists(char *symbol)
         struct syment *sp, *sp_end;
 	struct load_module *lm;
 
-	if ((sp = symname_hash_search(symbol)))
+	if ((sp = symname_hash_search(st->symname_hash, symbol)))
 		return TRUE;
 
         for (i = 0; i < st->mods_installed; i++) {
@@ -5572,7 +5572,7 @@ kernel_symbol_exists(char *symbol)
 {
 	struct syment *sp;
 
-        if ((sp = symname_hash_search(symbol)))
+	if ((sp = symname_hash_search(st->symname_hash, symbol)))
                 return TRUE;
 	else
         	return FALSE;
@@ -5584,7 +5584,7 @@ kernel_symbol_exists(char *symbol)
 struct syment *
 kernel_symbol_search(char *symbol)
 {
-	return symname_hash_search(symbol);
+	return symname_hash_search(st->symname_hash, symbol);
 }
 
 /*
-- 
2.29.2




More information about the Crash-utility mailing list