summaryrefslogtreecommitdiff
path: root/bfd/elflink.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2003-05-15 14:54:47 +0000
committerH.J. Lu <hjl.tools@gmail.com>2003-05-15 14:54:47 +0000
commitc1be741f92411606487a75e08b4fee9c57ec8f0e (patch)
tree45a81f10721be04ab05958ce25f200a1c3575a75 /bfd/elflink.c
parentae2f03ac167ef20ec3765edfb03bbe2fb7f32a8b (diff)
downloadbinutils-gdb-c1be741f92411606487a75e08b4fee9c57ec8f0e.tar.gz
2003-05-15 H.J. Lu <hongjiu.lu@intel.com>
* elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected symbol.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r--bfd/elflink.c11
1 files changed, 4 insertions, 7 deletions
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;