From: Nick Clifton Date: Thu, 12 Aug 2010 16:23:32 +0000 (+0000) Subject: PR ld/11843 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0883b6e07e59e64e9f5d83662baf125dcf94a412;p=binutils-gdb.git PR ld/11843 * elflink.c (compute_bucket_count): Avoid futile long searches for the best bucket size. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 528fa3cf76c..1144f0f0249 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2010-08-12 Todd Veldhuizen + + PR ld/11843 + * elflink.c (compute_bucket_count): Avoid futile long searches for + the best bucket size. + 2010-08-09 Richard Henderson PR ld/11891 diff --git a/bfd/elflink.c b/bfd/elflink.c index e0fbc830011..074229f7ccb 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -5374,6 +5374,7 @@ compute_bucket_count (struct bfd_link_info *info ATTRIBUTE_UNUSED, const struct elf_backend_data *bed = get_elf_backend_data (dynobj); unsigned long int *counts; bfd_size_type amt; + unsigned int no_improvement_count = 0; /* Possible optimization parameters: if we have NSYMS symbols we say that the hashing table must at least have NSYMS/4 and at most @@ -5458,7 +5459,12 @@ compute_bucket_count (struct bfd_link_info *info ATTRIBUTE_UNUSED, { best_chlen = max; best_size = i; + no_improvement_count = 0; } + /* PR 11843: Avoid futile long searches for the best bucket size + when there are a large number of symbols. */ + else if (++no_improvement_count == 100) + break; } free (counts);