aboutsummaryrefslogtreecommitdiff
path: root/bfd/ChangeLog
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2018-05-14 03:55:37 -0700
committerH.J. Lu <hjl.tools@gmail.com>2018-05-14 03:55:50 -0700
commit4ec0995016801cc5d5cf13baf6e10163861e6852 (patch)
treef2aa11725ad03aec8080cb88b6415c7fcdf2098f /bfd/ChangeLog
parent9bc935ef3380a2d471b9447e2bf8e61297654e2f (diff)
downloadgdb-4ec0995016801cc5d5cf13baf6e10163861e6852.zip
gdb-4ec0995016801cc5d5cf13baf6e10163861e6852.tar.gz
gdb-4ec0995016801cc5d5cf13baf6e10163861e6852.tar.bz2
x86; Allow IFUNC pointer defined in PDE
If IFUNC symbol is defined in position-dependent executable, we should change it to the normal function and set its address to its PLT entry which should be resolved by R_*_IRELATIVE at run-time. All external references should be resolved to its PLT in executable. bfd/ PR ld/23169 * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Don't issue an error on IFUNC pointer defined in PDE. * elf32-i386.c (elf_i386_finish_dynamic_symbol): Call _bfd_x86_elf_link_fixup_ifunc_symbol. * elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise. * elfxx-x86.c (_bfd_x86_elf_link_fixup_ifunc_symbol): New function. * elfxx-x86.h (_bfd_x86_elf_link_fixup_ifunc_symbol): New. ld/ PR ld/23169 * testsuite/ld-ifunc/ifunc-9-i386.d: New file. * testsuite/ld-ifunc/ifunc-9-x86-64.d: Likewise. * testsuite/ld-ifunc/pr23169a.c: Likewise. * testsuite/ld-ifunc/pr23169a.rd: Likewise. * testsuite/ld-ifunc/pr23169b.c: Likewise. * testsuite/ld-ifunc/pr23169b.c: Likewise. * testsuite/ld-ifunc/pr23169c.rd: Likewise. * testsuite/ld-ifunc/pr23169c.rd: Likewise. * testsuite/ld-ifunc/ifunc-9-x86.d: Removed. * testsuite/ld-ifunc/ifunc.exp: Run PR ld/23169 tests.
Diffstat (limited to 'bfd/ChangeLog')
-rw-r--r--bfd/ChangeLog12
1 files changed, 12 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 10b9679..f8138a1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,17 @@
2018-05-14 H.J. Lu <hongjiu.lu@intel.com>
+ PR ld/23169
+ * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Don't issue
+ an error on IFUNC pointer defined in PDE.
+ * elf32-i386.c (elf_i386_finish_dynamic_symbol): Call
+ _bfd_x86_elf_link_fixup_ifunc_symbol.
+ * elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
+ * elfxx-x86.c (_bfd_x86_elf_link_fixup_ifunc_symbol): New
+ function.
+ * elfxx-x86.h (_bfd_x86_elf_link_fixup_ifunc_symbol): New.
+
+2018-05-14 H.J. Lu <hongjiu.lu@intel.com>
+
PR ld/23162
* elfxx-x86.c (elf_x86_linker_defined): New function.
(_bfd_x86_elf_link_check_relocs): Use it to mark __bss_start,