Handle STT_GNU_IFUNC symols when building shared library.
commit758d4f6ed1fd32dec98ba5bdd578b6de9cfd1d0b
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 6 Jan 2011 18:45:03 +0000 (6 18:45 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 6 Jan 2011 18:45:03 +0000 (6 18:45 +0000)
tree063ab86983f4bce0ca4fa08b1bdc8280204b4d17
parent6b557042d624b74d3bb343cd59117331136c019b
Handle STT_GNU_IFUNC symols when building shared library.

bfd/

2012-01-06  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/12366
PR ld/12371
* elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Properly
handle symbols marked with regular reference, but not non-GOT
reference when building shared library.

* elf32-i386.c (elf_i386_gc_sweep_hook): Properly handle
local and global STT_GNU_IFUNC symols when building shared
library.
* elf64-x86-64.c (elf_x86_64_gc_sweep_hook): Likewise.

ld/testsuite/

2012-01-06  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/12366
PR ld/12371
* ld-ifunc/ifunc-10-i386.s: Add more tests.
* ld-ifunc/ifunc-10-x86-64.s: Likewise.
* ld-ifunc/ifunc-11-i386.s: Likewise.
* ld-ifunc/ifunc-11-x86-64.s: Likewise.

* ld-ifunc/ifunc-12-i386.d: New.
* ld-ifunc/ifunc-12-i386.s: Likewise.
* ld-ifunc/ifunc-12-x86-64.d: Likewise.
* ld-ifunc/ifunc-12-x86-64.s: Likewise.
* ld-ifunc/ifunc-13-i386.d: Likewise.
* ld-ifunc/ifunc-13-x86-64.d: Likewise.
* ld-ifunc/ifunc-13a-i386.s: Likewise.
* ld-ifunc/ifunc-13a-x86-64.s: Likewise.
* ld-ifunc/ifunc-13b-i386.s: Likewise.
* ld-ifunc/ifunc-13b-x86-64.s: Likewise.
19 files changed:
bfd/ChangeLog
bfd/elf-ifunc.c
bfd/elf32-i386.c
bfd/elf64-x86-64.c
ld/testsuite/ChangeLog
ld/testsuite/ld-ifunc/ifunc-10-i386.s
ld/testsuite/ld-ifunc/ifunc-10-x86-64.s
ld/testsuite/ld-ifunc/ifunc-11-i386.s
ld/testsuite/ld-ifunc/ifunc-11-x86-64.s
ld/testsuite/ld-ifunc/ifunc-12-i386.d [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifunc-12-i386.s [copied from ld/testsuite/ld-ifunc/ifunc-10-i386.s with 77% similarity]
ld/testsuite/ld-ifunc/ifunc-12-x86-64.d [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifunc-12-x86-64.s [copied from ld/testsuite/ld-ifunc/ifunc-11-x86-64.s with 81% similarity]
ld/testsuite/ld-ifunc/ifunc-13-i386.d [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifunc-13-x86-64.d [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifunc-13a-i386.s [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifunc-13a-x86-64.s [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifunc-13b-i386.s [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifunc-13b-x86-64.s [new file with mode: 0644]