* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Respect weakness
[deliverable/binutils-gdb.git] / bfd / elf64-alpha.c
index 9808c8f2e31c3afbcf9202dadba60ecd1fa1373f..28f0f4c2948dccf4ea56e252f3e2ead3f6e95a2b 100644 (file)
@@ -240,17 +240,24 @@ alpha_elf_dynamic_symbol_p (h, info)
 
   if (h->dynindx == -1)
     return false;
+
+  if (h->root.type == bfd_link_hash_undefweak
+      || h->root.type == bfd_link_hash_defweak)
+    return true;
+
   switch (ELF_ST_VISIBILITY (h->other))
     {
-    case STV_INTERNAL:
+    case STV_DEFAULT:
+      break;
     case STV_HIDDEN:
+    case STV_INTERNAL:
       return false;
+    case STV_PROTECTED:
+      if (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)
+        return false;
+      break;
     }
 
-  if (h->root.type == bfd_link_hash_undefweak
-      || h->root.type == bfd_link_hash_defweak)
-    return true;
-
   if ((info->shared && !info->symbolic)
       || ((h->elf_link_hash_flags
           & (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR))
This page took 0.024448 seconds and 4 git commands to generate.