* as.c (main): Move parse_args before symbol_begin and frag_init so that the
authorNick Clifton <nickc@redhat.com>
Thu, 14 Apr 2005 09:00:35 +0000 (09:00 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 14 Apr 2005 09:00:35 +0000 (09:00 +0000)
  hash table size can be set before it is used.
* hash.c: Use an unsigned long type for the size of the hash tables.
* hash.h (set_gas_hash_table_size): Update the prototype.

gas/ChangeLog
gas/as.c
gas/hash.c
gas/hash.h

index 58dc0a6..deab89a 100644 (file)
@@ -1,3 +1,11 @@
+2005-04-14  Nick Clifton  <nickc@redhat.com>
+
+       * as.c (main): Move parse_args before symbol_begin and frag_init
+       so that the hash table size can be set before it is used.
+       * hash.c: Use an unsigned long type for the size of the hash
+       tables.
+       * hash.h (set_gas_hash_table_size): Update the prototype.       
+
 2005-04-14  Alan Modra  <amodra@bigpond.net.au>
 
        * Makefile.am (NO_WERROR): Define.  Use instead of -Wno-error.
index da05a71..507124f 100644 (file)
--- a/gas/as.c
+++ b/gas/as.c
@@ -885,7 +885,7 @@ the GNU General Public License.  This program has absolutely no warranty.\n"));
 
        case OPTION_HASH_TABLE_SIZE:
          {
-           bfd_size_type new_size;
+           unsigned long new_size;
 
             new_size = strtoul (optarg, NULL, 0);
             if (new_size)
@@ -1114,10 +1114,12 @@ main (int argc, char ** argv)
 #endif
 
   PROGRESS (1);
+  /* Call parse_args before any of the init/begin functions
+     so that switches like --hash-size can be honored.  */
+  parse_args (&argc, &argv);
   symbol_begin ();
   frag_init ();
   subsegs_begin ();
-  parse_args (&argc, &argv);
   read_begin ();
   input_scrub_begin ();
   expr_begin ();
index 7ff2103..bc534e6 100644 (file)
@@ -73,20 +73,20 @@ struct hash_control {
    switch --reduce-memory-overheads, or set to other values by using
    the --hash-size=<NUMBER> switch.  */
 
-static unsigned int gas_hash_table_size = 65537;
+static unsigned long gas_hash_table_size = 65537;
 
 void
-set_gas_hash_table_size (unsigned int size)
+set_gas_hash_table_size (unsigned long size)
 {
   gas_hash_table_size = size;
 }
 
 /* FIXME: This function should be amalgmated with bfd/hash.c:bfd_hash_set_default_size().  */
-static unsigned int
+static unsigned long
 get_gas_hash_table_size (void)
 {
   /* Extend this prime list if you want more granularity of hash table size.  */
-  static const unsigned int hash_size_primes[] =
+  static const unsigned long hash_size_primes[] =
     {
       1021, 4051, 8599, 16699, 65537
     };
@@ -107,9 +107,9 @@ get_gas_hash_table_size (void)
 struct hash_control *
 hash_new (void)
 {
-  unsigned int size;
+  unsigned long size;
+  unsigned long alloc;
   struct hash_control *ret;
-  unsigned int alloc;
 
   size = get_gas_hash_table_size ();
 
index c759a26..09c52f8 100644 (file)
@@ -26,7 +26,7 @@ struct hash_control;
 
 /* Set the size of the hash table used.  */
 
-void set_gas_hash_table_size (unsigned int);
+void set_gas_hash_table_size (unsigned long);
 
 /* Create a hash table.  This return a control block.  */