From 7cfbafbcb4abd37b07dec657f5fe471530a45b48 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 5 Jun 2008 00:30:09 +0000 Subject: [PATCH] PR ld/6590 * elf64-ppc.c (ppc_build_one_stub): Correct reloc offsets. --- bfd/ChangeLog | 5 +++++ bfd/elf64-ppc.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c61360e4b6a..470e3a2d65a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2008-06-05 Alan Modra + + PR ld/6590 + * elf64-ppc.c (ppc_build_one_stub): Correct reloc offsets. + 2008-06-04 Alan Modra * elf.c (ignore_section_sym): Don't test section sym value here. diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 8a26c8daffd..06b14768bb2 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -8708,6 +8708,8 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) if (r == NULL) return FALSE; r[0].r_offset = loc - stub_entry->stub_sec->contents; + if (bfd_big_endian (info->output_bfd)) + r[0].r_offset += 2; if (stub_entry->stub_type == ppc_stub_plt_branch_r2off) r[0].r_offset += 4; r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_DS); @@ -8829,6 +8831,8 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) if (r == NULL) return FALSE; r[0].r_offset = loc - stub_entry->stub_sec->contents; + if (bfd_big_endian (info->output_bfd)) + r[0].r_offset += 2; r[0].r_addend = dest; } p = build_plt_stub (htab->stub_bfd, loc, off, r); -- 2.30.2