From ef8e6bef51d705782c00a44072f458a538ee4c5e Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 14 Apr 2005 09:00:35 +0000 Subject: * 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. --- gas/ChangeLog | 8 ++++++++ gas/as.c | 6 ++++-- gas/hash.c | 12 ++++++------ gas/hash.h | 2 +- 4 files changed, 19 insertions(+), 9 deletions(-) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index 58dc0a6995..deab89a1e5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2005-04-14 Nick Clifton + + * 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 * Makefile.am (NO_WERROR): Define. Use instead of -Wno-error. diff --git a/gas/as.c b/gas/as.c index da05a714c8..507124f7c9 100644 --- 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 (); diff --git a/gas/hash.c b/gas/hash.c index 7ff2103d67..bc534e67ad 100644 --- a/gas/hash.c +++ b/gas/hash.c @@ -73,20 +73,20 @@ struct hash_control { switch --reduce-memory-overheads, or set to other values by using the --hash-size= 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 (); diff --git a/gas/hash.h b/gas/hash.h index c759a26dca..09c52f8edb 100644 --- a/gas/hash.h +++ b/gas/hash.h @@ -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. */ -- cgit v1.2.1