2003-05-15 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 15 May 2003 14:54:47 +0000 (14:54 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 15 May 2003 14:54:47 +0000 (14:54 +0000)
* elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected
symbol.

bfd/ChangeLog
bfd/elflink.c

index e244ba3580bdd6be8565917631dc5f5ad041f093..d7911de494f2ddf1d8a143ab9360e7ae53ae562d 100644 (file)
@@ -1,3 +1,8 @@
+2003-05-15  H.J. Lu <hongjiu.lu@intel.com>
+
+       * elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected
+       symbol.
+
 2003-05-15  H.J. Lu <hongjiu.lu@intel.com>
 
        * elflink.h (elf_link_check_versioned_symbol): Also allow
index 05194591b4af1ce01515636c150640febd939a2b..bb5361ef227c073ca1d9cc79609b5463b0649cdd 100644 (file)
@@ -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;