+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.
= (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)
= (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;
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;
/* 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;
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 .*
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 .*