aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2013-02-11 17:29:35 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2013-02-11 17:29:35 +0000
commit1fd20d7055267ce7d56a8adcdd1fbf80847300f3 (patch)
tree79d104b913272e4edf5c90e7c86b4ed2eb0edd0a
parent7d94b3191af0c590142ee723b5822f7ceb1ebf2d (diff)
downloadgdb-1fd20d7055267ce7d56a8adcdd1fbf80847300f3.zip
gdb-1fd20d7055267ce7d56a8adcdd1fbf80847300f3.tar.gz
gdb-1fd20d7055267ce7d56a8adcdd1fbf80847300f3.tar.bz2
bfd/
* elfxx-mips.c (mips_elf_count_global_tls_entries) (mips_elf_count_global_tls_relocs): Don't count indirect or warning symbols. (mips_elf_multi_got, mips_elf_lay_out_got): Assert that the right number of TLS entries were allocated. ld/testsuite/ * ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.got: Remove unused GOT entries.
-rw-r--r--bfd/ChangeLog8
-rw-r--r--bfd/elfxx-mips.c11
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got3
-rw-r--r--ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got3
5 files changed, 26 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6347d83..67707ed 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,13 @@
2013-02-11 Richard Sandiford <rdsandiford@googlemail.com>
+ * elfxx-mips.c (mips_elf_count_global_tls_entries)
+ (mips_elf_count_global_tls_relocs): Don't count indirect or
+ warning symbols.
+ (mips_elf_multi_got, mips_elf_lay_out_got): Assert that the right
+ number of TLS entries were allocated.
+
+2013-02-11 Richard Sandiford <rdsandiford@googlemail.com>
+
* elfxx-mips.c (mips_elf_sort_hash_table_f): Remove asserts.
2013-02-11 Richard Sandiford <rdsandiford@googlemail.com>
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index f3259f4..3073f52 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -2982,6 +2982,10 @@ mips_elf_count_global_tls_entries (void *arg1, void *arg2)
= (struct mips_elf_link_hash_entry *) arg1;
struct mips_elf_count_tls_arg *arg = arg2;
+ if (hm->root.root.type == bfd_link_hash_indirect
+ || hm->root.root.type == bfd_link_hash_warning)
+ return 1;
+
if (hm->tls_type & GOT_TLS_GD)
arg->needed += 2;
if (hm->tls_type & GOT_TLS_IE)
@@ -3000,6 +3004,10 @@ mips_elf_count_global_tls_relocs (void *arg1, void *arg2)
= (struct mips_elf_link_hash_entry *) arg1;
struct mips_elf_count_tls_arg *arg = arg2;
+ if (hm->root.root.type == bfd_link_hash_indirect
+ || hm->root.root.type == bfd_link_hash_warning)
+ return 1;
+
arg->needed += mips_tls_got_relocs (arg->info, hm->tls_type, &hm->root);
return 1;
@@ -4688,6 +4696,7 @@ mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info,
all non-TLS entries. */
g->tls_assigned_gotno = g->local_gotno + g->global_gotno;
htab_traverse (g->got_entries, mips_elf_initialize_tls_index, g);
+ BFD_ASSERT (g->tls_assigned_gotno == assign);
/* Move onto the next GOT. It will be a secondary GOT if nonull. */
g = gn;
@@ -8956,6 +8965,8 @@ mips_elf_lay_out_got (bfd *output_bfd, struct bfd_link_info *info)
/* Set up TLS entries. */
g->tls_assigned_gotno = g->global_gotno + g->local_gotno;
htab_traverse (g->got_entries, mips_elf_initialize_tls_index, g);
+ BFD_ASSERT (g->tls_assigned_gotno
+ == g->global_gotno + g->local_gotno + g->tls_gotno);
/* Allocate room for the TLS relocations. */
arg.info = info;
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index c031a5e..b1bc8f3 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-11 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.got: Remove
+ unused GOT entries.
+
2013-02-07 H.J. Lu <hongjiu.lu@intel.com>
PR ld/15107
diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
index a0fbb8c..f43f312 100644
--- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
@@ -15,5 +15,4 @@ OFFSET TYPE VALUE
Contents of section .got:
10000020 00000000 80000000 004004ac 00000000 .*
10000030 00000000 00000000 00000000 00000000 .*
- 10000040 00000001 00000000 00000000 00000000 .*
- 10000050 00000000 00000000 .*
+ 10000040 00000001 00000000 00000000 .*
diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
index aaf6771..7da535c 100644
--- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
@@ -15,5 +15,4 @@ OFFSET TYPE VALUE
Contents of section .got:
10000020 00000000 80000000 0040055c 00000000 .*
10000030 00000000 00000000 00000000 00000000 .*
- 10000040 00000001 00000000 00000000 00000000 .*
- 10000050 00000000 00000000 .*
+ 10000040 00000001 00000000 00000000 .*