Backport from 2.17: mark the _GLOBAL_OFFSET_TABLE_, _DYNAMIC, and
authorguenther <guenther@openbsd.org>
Sat, 9 Aug 2014 05:52:43 +0000 (05:52 +0000)
committerguenther <guenther@openbsd.org>
Sat, 9 Aug 2014 05:52:43 +0000 (05:52 +0000)
_PROCEDURE_LINKAGE_TABLE_ symbols as (at least) hidden.

gnu/usr.bin/binutils/bfd/elflink.c

index 32aa234..e471446 100644 (file)
@@ -89,6 +89,9 @@ _bfd_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
       h = (struct elf_link_hash_entry *) bh;
       h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
       h->type = STT_OBJECT;
+      if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
+           h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
+      (*bed->elf_backend_hide_symbol) (info, h, TRUE);
 
       if (! info->executable
          && ! bfd_elf_link_record_dynamic_symbol (info, h))
@@ -219,6 +222,9 @@ _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   h = (struct elf_link_hash_entry *) bh;
   h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
   h->type = STT_OBJECT;
+  if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
+       h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
+  (*bed->elf_backend_hide_symbol) (info, h, TRUE);
 
   if (! info->executable
       && ! bfd_elf_link_record_dynamic_symbol (info, h))
@@ -284,6 +290,9 @@ _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       h = (struct elf_link_hash_entry *) bh;
       h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
       h->type = STT_OBJECT;
+      if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
+           h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
+      (*bed->elf_backend_hide_symbol) (info, h, TRUE);
 
       if (! info->executable
          && ! bfd_elf_link_record_dynamic_symbol (info, h))