mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-16 10:11:05 +08:00
* elfxx-mips.c (mips_elf_sort_hash_table_f): Handle forced
local symbols specially. (mips_elf_set_global_got_offset): Skip forced local symbols.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2007-10-12 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
|
* elfxx-mips.c (mips_elf_sort_hash_table_f): Handle forced
|
||||||
|
local symbols specially.
|
||||||
|
(mips_elf_set_global_got_offset): Skip forced local symbols.
|
||||||
|
|
||||||
2007-10-12 Alan Modra <amodra@bigpond.net.au>
|
2007-10-12 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* elf.c (elfcore_grok_prxfpreg): Fix comment typo.
|
* elf.c (elfcore_grok_prxfpreg): Fix comment typo.
|
||||||
|
@ -2797,7 +2797,8 @@ mips_elf_sort_hash_table_f (struct mips_elf_link_hash_entry *h, void *data)
|
|||||||
/* Global symbols that need GOT entries that are not explicitly
|
/* Global symbols that need GOT entries that are not explicitly
|
||||||
referenced are marked with got offset 2. Those that are
|
referenced are marked with got offset 2. Those that are
|
||||||
referenced get a 1, and those that don't need GOT entries get
|
referenced get a 1, and those that don't need GOT entries get
|
||||||
-1. */
|
-1. Forced local symbols may also be marked with got offset 1,
|
||||||
|
but are never given global GOT entries. */
|
||||||
if (h->root.got.offset == 2)
|
if (h->root.got.offset == 2)
|
||||||
{
|
{
|
||||||
BFD_ASSERT (h->tls_type == GOT_NORMAL);
|
BFD_ASSERT (h->tls_type == GOT_NORMAL);
|
||||||
@ -2806,7 +2807,7 @@ mips_elf_sort_hash_table_f (struct mips_elf_link_hash_entry *h, void *data)
|
|||||||
hsd->low = (struct elf_link_hash_entry *) h;
|
hsd->low = (struct elf_link_hash_entry *) h;
|
||||||
h->root.dynindx = hsd->max_unref_got_dynindx++;
|
h->root.dynindx = hsd->max_unref_got_dynindx++;
|
||||||
}
|
}
|
||||||
else if (h->root.got.offset != 1)
|
else if (h->root.got.offset != 1 || h->forced_local)
|
||||||
h->root.dynindx = hsd->max_non_got_dynindx++;
|
h->root.dynindx = hsd->max_non_got_dynindx++;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3269,6 +3270,7 @@ mips_elf_set_global_got_offset (void **entryp, void *p)
|
|||||||
|
|
||||||
if (entry->abfd != NULL && entry->symndx == -1
|
if (entry->abfd != NULL && entry->symndx == -1
|
||||||
&& entry->d.h->root.dynindx != -1
|
&& entry->d.h->root.dynindx != -1
|
||||||
|
&& !entry->d.h->forced_local
|
||||||
&& entry->d.h->tls_type == GOT_NORMAL)
|
&& entry->d.h->tls_type == GOT_NORMAL)
|
||||||
{
|
{
|
||||||
if (g)
|
if (g)
|
||||||
|
Reference in New Issue
Block a user