mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-18 21:34:13 +08:00
bfd/
* 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:
@ -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>
|
2007-06-01 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* simple.c (bfd_simple_get_relocated_section_contents): Init
|
* simple.c (bfd_simple_get_relocated_section_contents): Init
|
||||||
|
@ -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_entry *entry = (struct mips_got_entry *)*entryp;
|
||||||
struct mips_got_info *g = p;
|
struct mips_got_info *g = p;
|
||||||
bfd_vma next_index;
|
bfd_vma next_index;
|
||||||
|
unsigned char tls_type;
|
||||||
|
|
||||||
/* We're only interested in TLS symbols. */
|
/* We're only interested in TLS symbols. */
|
||||||
if (entry->tls_type == 0)
|
if (entry->tls_type == 0)
|
||||||
@ -3201,6 +3202,7 @@ mips_elf_initialize_tls_index (void **entryp, void *p)
|
|||||||
return 1;
|
return 1;
|
||||||
entry->d.h->tls_type |= GOT_TLS_OFFSET_DONE;
|
entry->d.h->tls_type |= GOT_TLS_OFFSET_DONE;
|
||||||
entry->d.h->tls_got_offset = next_index;
|
entry->d.h->tls_got_offset = next_index;
|
||||||
|
tls_type = entry->d.h->tls_type;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3217,12 +3219,13 @@ mips_elf_initialize_tls_index (void **entryp, void *p)
|
|||||||
g->tls_ldm_offset = next_index;
|
g->tls_ldm_offset = next_index;
|
||||||
}
|
}
|
||||||
entry->gotidx = next_index;
|
entry->gotidx = next_index;
|
||||||
|
tls_type = entry->tls_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Account for the entries we've just allocated. */
|
/* 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;
|
g->tls_assigned_gotno += 2;
|
||||||
if (entry->tls_type & GOT_TLS_IE)
|
if (tls_type & GOT_TLS_IE)
|
||||||
g->tls_assigned_gotno += 1;
|
g->tls_assigned_gotno += 1;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
Reference in New Issue
Block a user