From: Richard Sandiford Date: Sun, 10 Apr 2011 11:10:30 +0000 (+0000) Subject: bfd/ X-Git-Tag: sid-snapshot-20110501~214 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e2ece73c64432d4c43522de5d1a633ca12cc9155;p=platform%2Fupstream%2Fbinutils.git bfd/ PR ld/12637 * elfxx-mips.c (mips_elf_merge_got_with): Use arg->global_count as the number of global entries when merging with the primary GOT. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 596612e..eaea8f2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2011-04-10 Richard Sandiford + + PR ld/12637 + * elfxx-mips.c (mips_elf_merge_got_with): Use arg->global_count + as the number of global entries when merging with the primary GOT. + 2011-04-09 H.J. Lu * elf32-i386.c: Update copyright year. diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index d5e99bb..b804eea 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -4080,14 +4080,18 @@ mips_elf_merge_got_with (struct mips_elf_bfd2got_hash *bfd2got, if (estimate >= from->page_gotno + to->page_gotno) estimate = from->page_gotno + to->page_gotno; - /* And conservatively estimate how many local, global and TLS entries + /* And conservatively estimate how many local and TLS entries would be needed. */ - estimate += (from->local_gotno - + from->global_gotno - + from->tls_gotno - + to->local_gotno - + to->global_gotno - + to->tls_gotno); + estimate += from->local_gotno + to->local_gotno; + estimate += from->tls_gotno + to->tls_gotno; + + /* If we're merging with the primary got, we will always have + the full set of global entries. Otherwise estimate those + conservatively as well. */ + if (to == arg->primary) + estimate += arg->global_count; + else + estimate += from->global_gotno + to->global_gotno; /* Bail out if the combined GOT might be too big. */ if (estimate > arg->max_count)