Blob Blame History Raw
[patch] Code cleanup: New SYMBOL_HASH_NEXT
http://sourceware.org/ml/gdb-patches/2011-04/msg00022.html
http://sourceware.org/ml/gdb-cvs/2011-04/msg00043.html

### src/gdb/ChangeLog	2011/04/06 03:24:22	1.12908
### src/gdb/ChangeLog	2011/04/06 19:50:03	1.12909
## -1,3 +1,12 @@
+2011-04-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Code cleanup.
+	* dictionary.c (dict_hash): Use SYMBOL_HASH_NEXT.
+	* dwarf2read.c (mapped_index_string_hash): Refer to SYMBOL_HASH_NEXT
+	in the function comment, a new note on values compatibility.
+	* minsyms.c (msymbol_hash_iw, msymbol_hash): Use SYMBOL_HASH_NEXT.
+	* symtab.h (SYMBOL_HASH_NEXT): New.
+
 2011-04-06  Thiago Jung Bauermann  <bauerman@br.ibm.com>
 
 	* ppc-linux-nat.c (check_condition): Add len output parameter.
--- src/gdb/dictionary.c	2011/01/07 19:36:15	1.21
+++ src/gdb/dictionary.c	2011/04/06 19:50:04	1.22
@@ -826,7 +826,7 @@
 	    }
 	  /* FALL THROUGH */
 	default:
-	  hash = hash * 67 + *string - 113;
+	  hash = SYMBOL_HASH_NEXT (hash, *string);
 	  string += 1;
 	  break;
 	}
--- src/gdb/dwarf2read.c	2011/04/04 14:10:12	1.520
+++ src/gdb/dwarf2read.c	2011/04/06 19:50:04	1.521
@@ -1962,11 +1962,11 @@
   do_cleanups (cleanup);
 }
 
-/* The hash function for strings in the mapped index.  This is the
-   same as the hashtab.c hash function, but we keep a separate copy to
-   maintain control over the implementation.  This is necessary
-   because the hash function is tied to the format of the mapped index
-   file.  */
+/* The hash function for strings in the mapped index.  This is the same as
+   SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
+   implementation.  This is necessary because the hash function is tied to the
+   format of the mapped index file.  The hash values do not have to match with
+   SYMBOL_HASH_NEXT.  */
 
 static hashval_t
 mapped_index_string_hash (const void *p)
--- src/gdb/minsyms.c	2011/03/28 20:29:51	1.81
+++ src/gdb/minsyms.c	2011/04/06 19:50:05	1.82
@@ -91,7 +91,7 @@
 	++string;
       if (*string && *string != '(')
 	{
-	  hash = hash * 67 + *string - 113;
+	  hash = SYMBOL_HASH_NEXT (hash, *string);
 	  ++string;
 	}
     }
@@ -106,7 +106,7 @@
   unsigned int hash = 0;
 
   for (; *string; ++string)
-    hash = hash * 67 + *string - 113;
+    hash = SYMBOL_HASH_NEXT (hash, *string);
   return hash;
 }
 
--- src/gdb/symtab.h	2011/04/04 15:19:59	1.177
+++ src/gdb/symtab.h	2011/04/06 19:50:05	1.178
@@ -1004,6 +1004,12 @@
 
 extern unsigned int msymbol_hash (const char *);
 
+/* Compute the next hash value from previous HASH and the character C.  This
+   is only a GDB in-memory computed value with no external files compatibility
+   requirements.  */
+
+#define SYMBOL_HASH_NEXT(hash, c) ((hash) * 67 + (c) - 113)
+
 extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
 
 extern void