ppc476 patch area size miscalculation

ppc476 sections that end exactly on a page boundary need the
workaround applied when a function ends in "bctr", or when pasting
together code from multiple sections.  The space allocated for the
patch area didn't allow for this case, while the code in
relocate_section performing the patches did, leading to an assertion
failure.

	* elf32-ppc.c (ppc_elf_relax_section): Fix off by one error.
This commit is contained in:
Alan Modra 2014-08-30 09:44:47 +09:30
parent 70cc888ddc
commit 6128f9cf2b
2 changed files with 5 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2014-08-30 Alan Modra <amodra@gmail.com>
* elf32-ppc.c (ppc_elf_relax_section): Fix off by one error.
2014-08-29 Alan Modra <amodra@gmail.com>
* elf64-ppc.c (ppc64_elf_relocate_section): Report a different

View File

@ -7165,7 +7165,7 @@ ppc_elf_relax_section (bfd *abfd,
bfd_vma pagesize = (bfd_vma) 1 << htab->params->pagesize_p2;
addr = isec->output_section->vma + isec->output_offset;
end_addr = addr + trampoff - 1;
end_addr = addr + trampoff;
addr &= -pagesize;
crossings = ((end_addr & -pagesize) - addr) >> htab->params->pagesize_p2;
if (crossings != 0)