]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PowerPC64 stubs don't match calculated size
authorAlan Modra <amodra@gmail.com>
Tue, 19 Sep 2017 03:52:49 +0000 (13:22 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 19 Sep 2017 05:11:38 +0000 (14:41 +0930)
After the PR 21411 fix, the linker generated .eh_frame for ppc64 glink
can be edited by the generic code.  The sequence of events goes
something like:
1) Some object file adds .eh_frame aligned to 8, making the output
   .eh_frame aligned to at least 8, so linker generated .eh_frame FDE
   is padded to an 8 byte boundary.
2) All .eh_frame past the glink .eh_frame is garbage collected.
3) Generic code detects that last FDE (the glink .eh_frame) doesn't
   need to be padded to an 8 byte boundary, reducing size from 88 to
   84.
4) elf64-ppc.c check fails.

PR 21441
* elf64-ppc.c (ppc64_elf_build_stubs): Don't check glink_eh_frame
size.

(cherry picked from commit 25516cc573ff3551a7ac0538e1d3de5811c7199e)

bfd/ChangeLog
bfd/elf64-ppc.c

index fac315012a1b7f44c325d3b350ffc31e5d4e5fa5..87b7973ec1e00765ba8ffab77fb254c9db283ad4 100644 (file)
@@ -1,3 +1,9 @@
+2017-09-19  Alan Modra  <amodra@gmail.com>
+
+       PR 21441
+       * elf64-ppc.c (ppc64_elf_build_stubs): Don't check glink_eh_frame
+       size.
+
 2017-09-19  Alan Modra  <amodra@gmail.com>
 
        PR 22150
index 3f01ae62a190c95ef36d124146a9c9f07f97309c..277bb0ef5d24f7fe32e064f4ba626657e35f65b1 100644 (file)
@@ -13407,12 +13407,7 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
          break;
       }
 
-  /* Note that the glink_eh_frame check here is not only testing that
-     the generated size matched the calculated size but also that
-     bfd_elf_discard_info didn't make any changes to the section.  */
-  if (group != NULL
-      || (htab->glink_eh_frame != NULL
-         && htab->glink_eh_frame->rawsize != htab->glink_eh_frame->size))
+  if (group != NULL)
     {
       htab->stub_error = TRUE;
       info->callbacks->einfo (_("%P: stubs don't match calculated size\n"));