aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/minsyms.c8
-rw-r--r--gdb/objfiles.h2
3 files changed, 14 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 922d8e2..5675302 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2001-10-12 Daniel Jacobowitz <drow@mvista.com>
+ * minsyms.c (msymbol_hash): Use better hash function.
+ (msymbol_hash_iw): Likewise. Terminate loop at '(' properly.
+
+ * objfiles.h: Increase MINIMAL_SYMBOL_HASH_SIZE to match modern
+ binaries.
+
+2001-10-12 Daniel Jacobowitz <drow@mvista.com>
+
* printcmd.c (print_frame_args): Move symbol iteration explicitly
inside the func != NULL block.
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 9481747..b20074b 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -96,8 +96,10 @@ msymbol_hash_iw (const char *string)
while (isspace (*string))
++string;
if (*string && *string != '(')
- hash = (31 * hash) + *string;
- ++string;
+ {
+ hash = hash * 67 + *string - 113;
+ ++string;
+ }
}
return hash % MINIMAL_SYMBOL_HASH_SIZE;
}
@@ -109,7 +111,7 @@ msymbol_hash (const char *string)
{
unsigned int hash = 0;
for (; *string; ++string)
- hash = (31 * hash) + *string;
+ hash = hash * 67 + *string - 113;
return hash % MINIMAL_SYMBOL_HASH_SIZE;
}
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index d3f669e..992ae71 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -202,7 +202,7 @@ extern void print_objfile_statistics (void);
extern void print_symbol_bcache_statistics (void);
/* Number of entries in the minimal symbol hash table. */
-#define MINIMAL_SYMBOL_HASH_SIZE 349
+#define MINIMAL_SYMBOL_HASH_SIZE 2039
/* Master structure for keeping track of each file from which
gdb reads symbols. There are several ways these get allocated: 1.