This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PowerPC gcc bootstrap fail with bss-plt
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Cc: Jeffrey A Law <law at redhat dot com>
- Date: Fri, 16 Aug 2019 13:40:24 +0930
- Subject: 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.
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)
--
Alan Modra
Australia Development Lab, IBM