diff options
Diffstat (limited to 'bfd/elf32-hppa.c')
-rw-r--r-- | bfd/elf32-hppa.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index cbe42cf..eab384b 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -1056,19 +1056,20 @@ elf32_hppa_copy_indirect_symbol (struct bfd_link_info *info, /* 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. */ - eh_dir->ref_dynamic |= eh_ind->ref_dynamic; + if (eh_dir->versioned != versioned_hidden) + eh_dir->ref_dynamic |= eh_ind->ref_dynamic; eh_dir->ref_regular |= eh_ind->ref_regular; eh_dir->ref_regular_nonweak |= eh_ind->ref_regular_nonweak; eh_dir->needs_plt |= eh_ind->needs_plt; } else { - if (eh_ind->root.type == bfd_link_hash_indirect - && eh_dir->got.refcount <= 0) - { - hh_dir->tls_type = hh_ind->tls_type; - hh_ind->tls_type = GOT_UNKNOWN; - } + if (eh_ind->root.type == bfd_link_hash_indirect) + { + hh_dir->plabel |= hh_ind->plabel; + hh_dir->tls_type |= hh_ind->tls_type; + hh_ind->tls_type = GOT_UNKNOWN; + } _bfd_elf_link_hash_copy_indirect (info, eh_dir, eh_ind); } |