+/* The default number of entries to use when creating a hash table.
+ Note this value can be reduced to 4051 by using the command line
+ switch --reduce-memory-overheads, or set to other values by using
+ the --hash-size=<NUMBER> switch. */
+
+static unsigned long gas_hash_table_size = 65537;
+
+void
+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 long
+get_gas_hash_table_size (void)
+{
+ /* Extend this prime list if you want more granularity of hash table size. */
+ static const unsigned long hash_size_primes[] =
+ {
+ 1021, 4051, 8599, 16699, 65537
+ };
+ unsigned int index;
+
+ /* Work out the best prime number near the hash_size.
+ FIXME: This could be a more sophisticated algorithm,
+ but is it really worth implementing it ? */
+ for (index = 0; index < ARRAY_SIZE (hash_size_primes) - 1; ++index)
+ if (gas_hash_table_size <= hash_size_primes[index])
+ break;
+
+ return hash_size_primes[index];
+}
+