* elf64-ppc.c (ppc64_elf_func_desc_adjust): Don't hide .TOC.
authorAlan Modra <amodra@gmail.com>
Wed, 3 Jul 2013 09:42:56 +0000 (09:42 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 3 Jul 2013 09:42:56 +0000 (09:42 +0000)
when relocatable.  Don't change root.type or type here.
(ppc64_elf_set_toc): Set type of .TOC. to STT_OBJECT.

bfd/ChangeLog
bfd/elf64-ppc.c

index 7511c6c..45604eb 100644 (file)
@@ -1,5 +1,11 @@
 2013-07-03  Alan Modra  <amodra@gmail.com>
 
 2013-07-03  Alan Modra  <amodra@gmail.com>
 
+       * elf64-ppc.c (ppc64_elf_func_desc_adjust): Don't hide .TOC.
+       when relocatable.  Don't change root.type or type here.
+       (ppc64_elf_set_toc): Set type of .TOC. to STT_OBJECT.
+
+2013-07-03  Alan Modra  <amodra@gmail.com>
+
        * elf64-ppc.c (struct ppc_stub_hash_entry): Delete "addend".
        (ppc64_elf_size_stubs): Don't set "addend".
        (ppc64_elf_relocate_section): Don't allow calls via
        * elf64-ppc.c (struct ppc_stub_hash_entry): Delete "addend".
        (ppc64_elf_size_stubs): Don't set "addend".
        (ppc64_elf_relocate_section): Don't allow calls via
index 21d8263..b0a9afb 100644 (file)
@@ -6547,12 +6547,9 @@ ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED,
   if (htab == NULL)
     return FALSE;
 
   if (htab == NULL)
     return FALSE;
 
-  if (htab->elf.hgot != NULL)
-    {
-      htab->elf.hgot->root.type = bfd_link_hash_new;
-      htab->elf.hgot->type = STT_OBJECT;
-      _bfd_elf_link_hash_hide_symbol (info, htab->elf.hgot, TRUE);
-    }
+  if (!info->relocatable
+      && htab->elf.hgot != NULL)
+    _bfd_elf_link_hash_hide_symbol (info, htab->elf.hgot, TRUE);
 
   if (htab->sfpr == NULL)
     /* We don't have any relocs.  */
 
   if (htab->sfpr == NULL)
     /* We don't have any relocs.  */
@@ -11917,6 +11914,7 @@ ppc64_elf_set_toc (struct bfd_link_info *info, bfd *obfd)
       if (htab != NULL
          && htab->elf.hgot != NULL)
        {
       if (htab != NULL
          && htab->elf.hgot != NULL)
        {
+         htab->elf.hgot->type = STT_OBJECT;
          htab->elf.hgot->root.type = bfd_link_hash_defined;
          htab->elf.hgot->root.u.def.value = TOC_BASE_OFF;
          htab->elf.hgot->root.u.def.section = s;
          htab->elf.hgot->root.type = bfd_link_hash_defined;
          htab->elf.hgot->root.u.def.value = TOC_BASE_OFF;
          htab->elf.hgot->root.u.def.section = s;