From c1be741f92411606487a75e08b4fee9c57ec8f0e Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 15 May 2003 14:54:47 +0000 Subject: [PATCH] 2003-05-15 H.J. Lu * elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected symbol. --- bfd/ChangeLog | 5 +++++ bfd/elflink.c | 11 ++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e244ba3580b..d7911de494f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2003-05-15 H.J. Lu + + * elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected + symbol. + 2003-05-15 H.J. Lu * elflink.h (elf_link_check_versioned_symbol): Also allow diff --git a/bfd/elflink.c b/bfd/elflink.c index 05194591b4a..bb5361ef227 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -2427,17 +2427,14 @@ _bfd_elf_fix_symbol_flags (h, eif) /* If -Bsymbolic was used (which means to bind references to global symbols to the definition within the shared object), and this symbol was defined in a regular object, then it actually doesn't - need a PLT entry, and we can accomplish that by forcing it local. - Likewise, if the symbol has hidden or internal visibility. - FIXME: It might be that we also do not need a PLT for other - non-hidden visibilities, but we would have to tell that to the - backend specifically; we can't just clear PLT-related data here. */ + need a PLT entry. Likewise, if the symbol has non-default + visibility. If the symbol has hidden or internal visibility, we + will force it local. */ if ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0 && eif->info->shared && is_elf_hash_table (eif->info) && (eif->info->symbolic - || ELF_ST_VISIBILITY (h->other) == STV_INTERNAL - || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN) + || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT) && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0) { struct elf_backend_data *bed; -- 2.30.2