* elf64-ppc.c (ppc64_elf_next_toc_section): Don't error if input
authorAlan Modra <amodra@gmail.com>
Tue, 26 Jun 2012 01:40:59 +0000 (01:40 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 26 Jun 2012 01:40:59 +0000 (01:40 +0000)
file has multiple .got/.toc sections and all don't fit in
current toc group.

bfd/ChangeLog
bfd/elf64-ppc.c

index 538864d3b9f5a7108bb599960ced3c733685db4b..f00c337c2b5bb5ded5e48b90a6fde6ff389f16cb 100644 (file)
@@ -1,3 +1,9 @@
+2012-06-26  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (ppc64_elf_next_toc_section): Don't error if input
+       file has multiple .got/.toc sections and all don't fit in
+       current toc group.
+
 2012-06-22  Roland McGrath  <mcgrathr@google.com>
 
        * elf.c (assign_file_positions_for_non_load_sections): Define
index 46e82471e95788c7aced2002b7745910880baf5f..68ae03cdcd8cb49bfa41a3e334e8e10ccc30e4e9 100644 (file)
@@ -10554,7 +10554,9 @@ ppc64_elf_next_toc_section (struct bfd_link_info *info, asection *isec)
   if (!htab->second_toc_pass)
     {
       /* Keep track of the first .toc or .got section for this input bfd.  */
-      if (htab->toc_bfd != isec->owner)
+      bfd_boolean new_bfd = htab->toc_bfd != isec->owner;
+
+      if (new_bfd)
        {
          htab->toc_bfd = isec->owner;
          htab->toc_first_sec = isec;
@@ -10582,7 +10584,8 @@ ppc64_elf_next_toc_section (struct bfd_link_info *info, asection *isec)
 
       /* Die if someone uses a linker script that doesn't keep input
         file .toc and .got together.  */
-      if (elf_gp (isec->owner) != 0
+      if (new_bfd
+         && elf_gp (isec->owner) != 0
          && elf_gp (isec->owner) != off)
        return FALSE;