* elf32-ppc.c (allocate_dynrelocs): Ignore dyn_relocs when
!dynamic_sections_created. Don't make symbols with got references dynamic if !dynamic_sections_created. * elf64-ppc.c (allocate_dynrelocs): Likewise. Alloc dynamic relocs on undefined symbols. (ppc64_elf_relocate_section): Allow dynamic relocs on undefined symbols.
This commit is contained in:
parent
db0bc2846c
commit
b099ab9fcd
3 changed files with 18 additions and 6 deletions
|
@ -1,3 +1,13 @@
|
|||
2008-08-12 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf32-ppc.c (allocate_dynrelocs): Ignore dyn_relocs when
|
||||
!dynamic_sections_created. Don't make symbols with got
|
||||
references dynamic if !dynamic_sections_created.
|
||||
* elf64-ppc.c (allocate_dynrelocs): Likewise. Alloc dynamic
|
||||
relocs on undefined symbols.
|
||||
(ppc64_elf_relocate_section): Allow dynamic relocs on
|
||||
undefined symbols.
|
||||
|
||||
2008-08-11 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elf64-ppc.c (toc_adjusting_stub_needed): Any call via the plt
|
||||
|
|
|
@ -4993,7 +4993,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
|||
{
|
||||
/* Make sure this symbol is output as a dynamic symbol. */
|
||||
if (eh->elf.dynindx == -1
|
||||
&& !eh->elf.forced_local)
|
||||
&& !eh->elf.forced_local
|
||||
&& htab->elf.dynamic_sections_created)
|
||||
{
|
||||
if (!bfd_elf_link_record_dynamic_symbol (info, &eh->elf))
|
||||
return FALSE;
|
||||
|
@ -5041,7 +5042,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
|||
else
|
||||
eh->elf.got.offset = (bfd_vma) -1;
|
||||
|
||||
if (eh->dyn_relocs == NULL)
|
||||
if (eh->dyn_relocs == NULL
|
||||
|| !htab->elf.dynamic_sections_created)
|
||||
return TRUE;
|
||||
|
||||
/* In the shared -Bsymbolic case, discard space allocated for
|
||||
|
|
|
@ -7891,7 +7891,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
|||
Undefined weak syms won't yet be marked as dynamic,
|
||||
nor will all TLS symbols. */
|
||||
if (h->dynindx == -1
|
||||
&& !h->forced_local)
|
||||
&& !h->forced_local
|
||||
&& htab->elf.dynamic_sections_created)
|
||||
{
|
||||
if (! bfd_elf_link_record_dynamic_symbol (info, h))
|
||||
return FALSE;
|
||||
|
@ -7925,7 +7926,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
|||
else
|
||||
gent->got.offset = (bfd_vma) -1;
|
||||
|
||||
if (eh->dyn_relocs == NULL)
|
||||
if (eh->dyn_relocs == NULL
|
||||
|| !htab->elf.dynamic_sections_created)
|
||||
return TRUE;
|
||||
|
||||
/* In the shared -Bsymbolic case, discard space allocated for
|
||||
|
@ -7982,7 +7984,6 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
|||
dynamic. */
|
||||
|
||||
if (!h->non_got_ref
|
||||
&& h->def_dynamic
|
||||
&& !h->def_regular)
|
||||
{
|
||||
/* Make sure this symbol is output as a dynamic symbol.
|
||||
|
@ -11251,7 +11252,6 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
|||
&& h != NULL
|
||||
&& h->elf.dynindx != -1
|
||||
&& !h->elf.non_got_ref
|
||||
&& h->elf.def_dynamic
|
||||
&& !h->elf.def_regular))
|
||||
{
|
||||
Elf_Internal_Rela outrel;
|
||||
|
|
Loading…
Reference in a new issue