aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2016-02-04 00:25:56 +1030
committerAlan Modra <amodra@gmail.com>2016-02-04 00:31:14 +1030
commit4f038ee5d22f04a16a413cf2e3d8ddeecdc75639 (patch)
treec19e16fa15c5da3df2cc341d7082080abb44e582
parent94986c28859066084e2e48ea6bf7f3c652cb8984 (diff)
downloadgdb-4f038ee5d22f04a16a413cf2e3d8ddeecdc75639.zip
gdb-4f038ee5d22f04a16a413cf2e3d8ddeecdc75639.tar.gz
gdb-4f038ee5d22f04a16a413cf2e3d8ddeecdc75639.tar.bz2
Fix "PowerPC64 ELFv2 entry code" for big-endian
bfd/ * elf64-ppc.c (ppc64_elf_relocate_section): Adjust last patch for big-endian. gold/ * powerpc.cc (relocate): Adjust last patch for big-endian.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf64-ppc.c2
-rw-r--r--gold/ChangeLog4
-rw-r--r--gold/powerpc.cc2
4 files changed, 11 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ff74998..93bfe05 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2016-02-04 Alan Modra <amodra@gmail.com>
+
+ * elf64-ppc.c (ppc64_elf_relocate_section): Adjust last patch
+ for big-endian.
+
2016-02-02 H.J. Lu <hongjiu.lu@intel.com>
PR ld/19542
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 369eae5..f0bcee1 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -13915,7 +13915,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
if (!bfd_link_pic (info)
&& !info->traditional_format
&& !htab->opd_abi
- && rel->r_addend == 0
+ && rel->r_addend == d_offset
&& h != NULL && &h->elf == htab->elf.hgot
&& rel + 1 < relend
&& rel[1].r_info == ELF64_R_INFO (r_symndx, R_PPC64_REL16_LO)
diff --git a/gold/ChangeLog b/gold/ChangeLog
index c0b7e56..ae50474 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,7 @@
+2016-02-04 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (relocate): Adjust last patch for big-endian.
+
2016-02-02 Alan Modra <amodra@gmail.com>
* powerpc.cc (relocate): Further restrict ELFv2 entry optimization.
diff --git a/gold/powerpc.cc b/gold/powerpc.cc
index 6df2904..60530ba 100644
--- a/gold/powerpc.cc
+++ b/gold/powerpc.cc
@@ -7727,7 +7727,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
&& preloc != NULL
&& target->abiversion() >= 2
&& !parameters->options().output_is_position_independent()
- && rela.get_r_addend() == 4
+ && rela.get_r_addend() == d_offset + 4
&& gsym != NULL
&& strcmp(gsym->name(), ".TOC.") == 0)
{