summaryrefslogtreecommitdiff
path: root/gdb/minsyms.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2001-10-12 19:07:07 +0000
committerDaniel Jacobowitz <dan@debian.org>2001-10-12 19:07:07 +0000
commit7086476cc8e04d755ce608b464142199a8f59523 (patch)
tree8c6522d7b37455dce2888bbd5c8d9e0bb8da717a /gdb/minsyms.c
parente04dd3b2c4416acb819f7d632b49486e010a9562 (diff)
downloadgdb-7086476cc8e04d755ce608b464142199a8f59523.tar.gz
* 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.
Diffstat (limited to 'gdb/minsyms.c')
-rw-r--r--gdb/minsyms.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 94817474318..b20074b273d 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;
}