aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/hash.c53
2 files changed, 37 insertions, 22 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index fd48cc3..034e9e7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2011-06-03 Bertram Felgenhauer <bertram.felgenhauer@gmail.com>
+
+ PR ld/12682
+ * hash.c (higher_primer_number): Add more, small, prime numbers.
+ (bfd_hash_set_default_size): Likewise.
+
2011-06-02 Nick Clifton <nickc@redhat.com>
* coff-mcore.c: Fix spelling typo.
diff --git a/bfd/hash.c b/bfd/hash.c
index 7147b71..1de2c2a 100644
--- a/bfd/hash.c
+++ b/bfd/hash.c
@@ -310,28 +310,37 @@ higher_prime_number (unsigned long n)
{
/* These are primes that are near, but slightly smaller than, a
power of two. */
- static const unsigned long primes[] = {
- (unsigned long) 127,
- (unsigned long) 2039,
- (unsigned long) 32749,
- (unsigned long) 65521,
- (unsigned long) 131071,
- (unsigned long) 262139,
- (unsigned long) 524287,
- (unsigned long) 1048573,
- (unsigned long) 2097143,
- (unsigned long) 4194301,
- (unsigned long) 8388593,
- (unsigned long) 16777213,
- (unsigned long) 33554393,
- (unsigned long) 67108859,
- (unsigned long) 134217689,
- (unsigned long) 268435399,
- (unsigned long) 536870909,
- (unsigned long) 1073741789,
- (unsigned long) 2147483647,
+ static const unsigned long primes[] =
+ {
+ (unsigned long) 31,
+ (unsigned long) 61,
+ (unsigned long) 127,
+ (unsigned long) 251,
+ (unsigned long) 509,
+ (unsigned long) 1021,
+ (unsigned long) 2039,
+ (unsigned long) 4093,
+ (unsigned long) 8191,
+ (unsigned long) 16381,
+ (unsigned long) 32749,
+ (unsigned long) 65521,
+ (unsigned long) 131071,
+ (unsigned long) 262139,
+ (unsigned long) 524287,
+ (unsigned long) 1048573,
+ (unsigned long) 2097143,
+ (unsigned long) 4194301,
+ (unsigned long) 8388593,
+ (unsigned long) 16777213,
+ (unsigned long) 33554393,
+ (unsigned long) 67108859,
+ (unsigned long) 134217689,
+ (unsigned long) 268435399,
+ (unsigned long) 536870909,
+ (unsigned long) 1073741789,
+ (unsigned long) 2147483647,
/* 4294967291L */
- ((unsigned long) 2147483647) + ((unsigned long) 2147483644),
+ ((unsigned long) 2147483647) + ((unsigned long) 2147483644),
};
const unsigned long *low = &primes[0];
@@ -657,7 +666,7 @@ bfd_hash_set_default_size (unsigned long hash_size)
/* Extend this prime list if you want more granularity of hash table size. */
static const unsigned long hash_size_primes[] =
{
- 251, 509, 1021, 2039, 4051, 8599, 16699, 32749, 65537
+ 31, 61, 127, 251, 509, 1021, 2039, 4091, 8191, 16381, 32749, 65537
};
unsigned int _index;