aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-ppc.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2017-09-19 13:22:49 +0930
committerAlan Modra <amodra@gmail.com>2017-09-19 14:32:18 +0930
commit25516cc573ff3551a7ac0538e1d3de5811c7199e (patch)
tree1967c5802a2d50f0403d9d7fa333560da2dbefa0 /bfd/elf64-ppc.c
parent3d13f3e9bda5aada68915f5d958f731ae79ed41d (diff)
downloadfsf-binutils-gdb-25516cc573ff3551a7ac0538e1d3de5811c7199e.zip
fsf-binutils-gdb-25516cc573ff3551a7ac0538e1d3de5811c7199e.tar.gz
fsf-binutils-gdb-25516cc573ff3551a7ac0538e1d3de5811c7199e.tar.bz2
PowerPC64 stubs don't match calculated size
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.
Diffstat (limited to 'bfd/elf64-ppc.c')
-rw-r--r--bfd/elf64-ppc.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 4821801..ea49706 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -13411,12 +13411,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"));