summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog8
-rw-r--r--bfd/elf64-ppc.c7
2 files changed, 14 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f3070c7976..0709dc3ec5 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,6 +1,12 @@
+2003-08-11 Alan Modra <amodra@bigpond.net.au>
+
+ * elf64-ppc.c (ppc64_elf_relocate_section): Add special case for crt1.o
+ branch to __libc_start_main.
+
2003-08-08 Dmitry Diky <diwil@mail.ru>
- * archures.c: Add xW42 and xE42 parts. Sort MPU list according to gcc order.
+ * archures.c: Add xW42 and xE42 parts. Sort MPU list according to
+ gcc order.
* cpu-msp430.c: Likewise.
* elf32-msp430.c: Likewise.
* bfd-in2.h: Regenerate.
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 391633378d..966dc431cd 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -7788,6 +7788,13 @@ ppc64_elf_relocate_section (bfd *output_bfd,
if ((insn & 1) == 0)
can_plt_call = 1;
}
+ else if (h != NULL
+ && strcmp (h->root.root.string,
+ ".__libc_start_main") == 0)
+ {
+ /* Allow crt1 branch to go via a toc adjusting stub. */
+ can_plt_call = 1;
+ }
else
{
if (strcmp (input_section->output_section->name,