ppc64_elf_copy_indirect_symbol versioned_hidden fix
As per _bfd_elf_link_hash_copy_indirect. * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy dynamic flags when direct symbol is versioned_hidden.
This commit is contained in:
parent
4193bc588b
commit
474436e67c
|
@ -1,3 +1,8 @@
|
|||
2016-12-03 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy dynamic
|
||||
flags when direct symbol is versioned_hidden.
|
||||
|
||||
2016-12-02 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR lf/20908
|
||||
|
|
|
@ -4740,19 +4740,22 @@ ppc64_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
|||
if (eind->oh != NULL)
|
||||
edir->oh = ppc_follow_link (eind->oh);
|
||||
|
||||
/* If called to transfer flags for a weakdef during processing
|
||||
of elf_adjust_dynamic_symbol, don't copy NON_GOT_REF.
|
||||
We clear it ourselves for ELIMINATE_COPY_RELOCS. */
|
||||
if (!(ELIMINATE_COPY_RELOCS
|
||||
&& eind->elf.root.type != bfd_link_hash_indirect
|
||||
&& edir->elf.dynamic_adjusted))
|
||||
edir->elf.non_got_ref |= eind->elf.non_got_ref;
|
||||
if (edir->elf.versioned != versioned_hidden)
|
||||
{
|
||||
/* If called to transfer flags for a weakdef during processing
|
||||
of elf_adjust_dynamic_symbol, don't copy NON_GOT_REF.
|
||||
We clear it ourselves for ELIMINATE_COPY_RELOCS. */
|
||||
if (!(ELIMINATE_COPY_RELOCS
|
||||
&& eind->elf.root.type != bfd_link_hash_indirect
|
||||
&& edir->elf.dynamic_adjusted))
|
||||
edir->elf.non_got_ref |= eind->elf.non_got_ref;
|
||||
|
||||
edir->elf.ref_dynamic |= eind->elf.ref_dynamic;
|
||||
edir->elf.ref_regular |= eind->elf.ref_regular;
|
||||
edir->elf.ref_regular_nonweak |= eind->elf.ref_regular_nonweak;
|
||||
edir->elf.needs_plt |= eind->elf.needs_plt;
|
||||
edir->elf.pointer_equality_needed |= eind->elf.pointer_equality_needed;
|
||||
edir->elf.ref_dynamic |= eind->elf.ref_dynamic;
|
||||
edir->elf.ref_regular |= eind->elf.ref_regular;
|
||||
edir->elf.ref_regular_nonweak |= eind->elf.ref_regular_nonweak;
|
||||
edir->elf.needs_plt |= eind->elf.needs_plt;
|
||||
edir->elf.pointer_equality_needed |= eind->elf.pointer_equality_needed;
|
||||
}
|
||||
|
||||
/* If we were called to copy over info for a weak sym, don't copy
|
||||
dyn_relocs, plt/got info, or dynindx. We used to copy dyn_relocs
|
||||
|
|
Loading…
Reference in New Issue