Index: binutils/ld/emulparams/elf64ppc.sh |
diff --git a/binutils/ld/emulparams/elf64ppc.sh b/binutils/ld/emulparams/elf64ppc.sh |
index b9631b654ec66e498f2f46c3a6774695b0e17d29..c9337ea90d8d6ad665479a296a833e7021d6a032 100644 |
--- a/binutils/ld/emulparams/elf64ppc.sh |
+++ b/binutils/ld/emulparams/elf64ppc.sh |
@@ -28,9 +28,11 @@ else |
.got 0 : { *(.got) } |
.toc 0 : { *(.toc) }" |
fi |
+# Put .opd relocs first so ld.so will process them before any ifunc relocs. |
+INITIAL_RELOC_SECTIONS=" |
+ .rela.opd ${RELOCATING-0} : { *(.rela.opd) }" |
OTHER_GOT_RELOC_SECTIONS=" |
.rela.toc ${RELOCATING-0} : { *(.rela.toc) } |
- .rela.opd ${RELOCATING-0} : { *(.rela.opd) } |
.rela.branch_lt ${RELOCATING-0} : { *(.rela.branch_lt) }" |
OTHER_READWRITE_SECTIONS=" |
.toc1 ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.toc1) } |