The default BFD hash table size is too small for ELF section merge.
This patch speeds up sec_merge_hash_lookup by 50% in average.


H.J.
---
2005-04-30  H.J. Lu  <[EMAIL PROTECTED]>

        * hash.c (hash_size_primes): Add 65537.

        * merge.c (sec_merge_init): Call bfd_hash_set_default_size to
        set hash table size to 16699.

--- bfd/hash.c.hash     2005-03-22 17:25:46.000000000 -0800
+++ bfd/hash.c  2005-04-30 12:25:59.000000000 -0700
@@ -492,7 +492,7 @@ bfd_hash_set_default_size (bfd_size_type
   /* Extend this prime list if you want more granularity of hash table size.  
*/
   static const bfd_size_type hash_size_primes[] =
     {
-      1021, 4051, 8599, 16699
+      1021, 4051, 8599, 16699, 65537
     };
   size_t index;
 
--- bfd/merge.c.hash    2005-04-14 10:51:43.000000000 -0700
+++ bfd/merge.c 2005-04-30 12:31:22.000000000 -0700
@@ -241,6 +241,8 @@ sec_merge_init (unsigned int entsize, bf
   if (table == NULL)
     return NULL;
 
+  bfd_hash_set_default_size (16699);
+
   if (! bfd_hash_table_init (&table->table, sec_merge_hash_newfunc))
     {
       free (table);

Reply via email to