From 7df6aecc97b96843da080d54414052b1c954ddca Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 16 Aug 2019 13:20:28 +0930 Subject: [PATCH] PowerPC gcc bootstrap fail with bss-plt git commit 3e04d7655b introduced a bug by sizing output sections earlier in ppc_before_allocation. That meant PLT (and GOT) sizes were not included when calculating total executable section sizes. * emultempl/ppc32elf.em (ppc_before_allocation): Force running prelim_size_sections before deciding whether branch trampolines might be needed. --- ld/ChangeLog | 6 ++++++ ld/emultempl/ppc32elf.em | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 0366b833b7..de8e1b92e4 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2019-08-16 Alan Modra + + * emultempl/ppc32elf.em (ppc_before_allocation): Force running + prelim_size_sections before deciding whether branch trampolines + might be needed. + 2019-08-15 Jim Wilson * testsuite/ld-riscv-elf/c-lui-2.d: New. diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em index 5387ef1a6c..24a6368e17 100644 --- a/ld/emultempl/ppc32elf.em +++ b/ld/emultempl/ppc32elf.em @@ -171,7 +171,12 @@ ppc_before_allocation (void) bfd_vma high = 0; asection *o; - /* Run lang_size_sections (if not already done). */ + /* Run lang_size_sections even if already done, so as to pick + up gld${EMULATION_NAME}_before_allocation sizing. This + matters when we have an executable bss plt which will + typically be laid out near the end of the image, ie. worst + case for branches at the start of .text. */ + expld.phase = lang_first_phase_enum; prelim_size_sections (); for (o = link_info.output_bfd->sections; o != NULL; o = o->next) -- 2.34.1