mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
bfd/
* elf32-vax.c (elf_vax_instantiate_got_entries): Skip local symbols in GOT space calculation. (elf_vax_relocate_section): Adjust accordingly.
This commit is contained in:
parent
6c4fb25ace
commit
886815b266
@ -1,3 +1,9 @@
|
||||
2009-06-16 Maciej W. Rozycki <macro@linux-mips.org>
|
||||
|
||||
* elf32-vax.c (elf_vax_instantiate_got_entries): Skip local
|
||||
symbols in GOT space calculation.
|
||||
(elf_vax_relocate_section): Adjust accordingly.
|
||||
|
||||
2009-06-16 Maciej W. Rozycki <macro@linux-mips.org>
|
||||
|
||||
* elf32-vax.c (elf_vax_plt_entry): Set the entry mask to
|
||||
|
@ -1332,6 +1332,8 @@ elf_vax_instantiate_got_entries (struct elf_link_hash_entry *h, PTR infoptr)
|
||||
}
|
||||
else if (h->got.refcount > 0)
|
||||
{
|
||||
bfd_boolean dyn;
|
||||
|
||||
/* Make sure this symbol is output as a dynamic symbol. */
|
||||
if (h->dynindx == -1)
|
||||
{
|
||||
@ -1339,9 +1341,15 @@ elf_vax_instantiate_got_entries (struct elf_link_hash_entry *h, PTR infoptr)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
dyn = elf_hash_table (info)->dynamic_sections_created;
|
||||
/* Allocate space in the .got and .rela.got sections. */
|
||||
sgot->size += 4;
|
||||
srelgot->size += sizeof (Elf32_External_Rela);
|
||||
if (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
||||
&& (info->shared
|
||||
|| WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
|
||||
{
|
||||
sgot->size += 4;
|
||||
srelgot->size += sizeof (Elf32_External_Rela);
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -1485,6 +1493,7 @@ elf_vax_relocate_section (bfd *output_bfd,
|
||||
the global offset table. */
|
||||
|
||||
{
|
||||
bfd_boolean dyn;
|
||||
bfd_vma off;
|
||||
|
||||
if (sgot == NULL)
|
||||
@ -1498,9 +1507,10 @@ elf_vax_relocate_section (bfd *output_bfd,
|
||||
BFD_ASSERT (off != (bfd_vma) -1);
|
||||
BFD_ASSERT (off < sgot->size);
|
||||
|
||||
if (info->shared
|
||||
&& h->dynindx == -1
|
||||
&& h->def_regular)
|
||||
dyn = elf_hash_table (info)->dynamic_sections_created;
|
||||
if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
|
||||
|| (info->shared
|
||||
&& SYMBOL_REFERENCES_LOCAL (info, h)))
|
||||
{
|
||||
/* The symbol was forced to be local
|
||||
because of a version file.. We must initialize
|
||||
|
Loading…
Reference in New Issue
Block a user