* minsyms.c (msymbol_hash): Use better hash function.
authorDaniel Jacobowitz <drow@false.org>
Fri, 12 Oct 2001 19:07:07 +0000 (19:07 +0000)
committerDaniel Jacobowitz <drow@false.org>
Fri, 12 Oct 2001 19:07:07 +0000 (19:07 +0000)
        (msymbol_hash_iw): Likewise.  Terminate loop at '(' properly.

        * objfiles.h: Increase MINIMAL_SYMBOL_HASH_SIZE to match modern
        binaries.

gdb/ChangeLog
gdb/minsyms.c
gdb/objfiles.h

index 922d8e2279570e847e817a2f498b585019654c03..5675302621e3a06a124ffcba055331b005240f5b 100644 (file)
@@ -1,3 +1,11 @@
+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
index 94817474318624be4245081d0bd6bff27ed0734e..b20074b273dc343d0e6b22a428c404c191e05760 100644 (file)
@@ -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;
 }
 
index d3f669e9601b8e44174db117bf6937d80eca3e99..992ae71e47f2fdeaa1d17bfca0b75f4b2b68c9bc 100644 (file)
@@ -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.