* elfxx-mips.c (mips_elf_initialize_tls_index): When processing a
	type (3) single-GOT entry, read tls_type from the hash table entry
	rather than the GOT entry.
This commit is contained in:
Richard Sandiford 2007-05-31 20:22:56 +00:00
parent f57d151a99
commit cbf2cba4be
2 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2007-05-31 Richard Sandiford <rsandifo@nildram.co.uk>
* elfxx-mips.c (mips_elf_initialize_tls_index): When processing a
type (3) single-GOT entry, read tls_type from the hash table entry
rather than the GOT entry.
2007-06-01 Alan Modra <amodra@bigpond.net.au>
* simple.c (bfd_simple_get_relocated_section_contents): Init

View File

@ -3186,6 +3186,7 @@ mips_elf_initialize_tls_index (void **entryp, void *p)
struct mips_got_entry *entry = (struct mips_got_entry *)*entryp;
struct mips_got_info *g = p;
bfd_vma next_index;
unsigned char tls_type;
/* We're only interested in TLS symbols. */
if (entry->tls_type == 0)
@ -3201,6 +3202,7 @@ mips_elf_initialize_tls_index (void **entryp, void *p)
return 1;
entry->d.h->tls_type |= GOT_TLS_OFFSET_DONE;
entry->d.h->tls_got_offset = next_index;
tls_type = entry->d.h->tls_type;
}
else
{
@ -3217,12 +3219,13 @@ mips_elf_initialize_tls_index (void **entryp, void *p)
g->tls_ldm_offset = next_index;
}
entry->gotidx = next_index;
tls_type = entry->tls_type;
}
/* Account for the entries we've just allocated. */
if (entry->tls_type & (GOT_TLS_GD | GOT_TLS_LDM))
if (tls_type & (GOT_TLS_GD | GOT_TLS_LDM))
g->tls_assigned_gotno += 2;
if (entry->tls_type & GOT_TLS_IE)
if (tls_type & GOT_TLS_IE)
g->tls_assigned_gotno += 1;
return 1;