From 172149374ec64b82f39a3d572211bfe92e62b182 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 11 Feb 2013 17:25:23 +0000 Subject: [PATCH] bfd/ * elfxx-mips.c (mips_elf_merge_got_with): Only use arg->global_count if there are TLS relocations. --- bfd/ChangeLog | 5 +++++ bfd/elfxx-mips.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 79c410227a..be33a47542 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2013-02-11 Richard Sandiford + + * elfxx-mips.c (mips_elf_merge_got_with): Only use arg->global_count + if there are TLS relocations. + 2013-02-11 Richard Sandiford * elfxx-mips.c (mips_elf_recreate_got): Remove free. diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 9a92e2dd2c..abf2156dc5 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -4275,10 +4275,10 @@ mips_elf_merge_got_with (struct mips_elf_bfd2got_hash *bfd2got, 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 + /* If we're merging with the primary got, any TLS relocations will + come after the full set of global entries. Otherwise estimate those conservatively as well. */ - if (to == arg->primary) + if (to == arg->primary && from->tls_gotno + to->tls_gotno) estimate += arg->global_count; else estimate += from->global_gotno + to->global_gotno;