Handle local IFUNC symbols in shared object
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 8 Mar 2016 17:42:01 +0000 (09:42 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 8 Mar 2016 17:42:16 +0000 (09:42 -0800)
commitd1ed1c7d69e6656de213b12594e702afec31a66d
tree3655317b5954f23c569e10eb0506078c6593dd2a
parent205ac185771460838370afb3a38d20228927b925
Handle local IFUNC symbols in shared object

Increment PLT reference count for locally defined local IFUNC symbols
in shared object since STT_GNU_IFUNC symbol must go through PLT even
if it is locally defined and undefined symbol may turn out to be a
STT_GNU_IFUNC symbol later.

bfd/

PR ld/19784
* elf32-i386.c (elf_i386_check_relocs): Increment PLT reference
count for locally defined local IFUNC symbols in shared object.
* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.

ld/

PR ld/19784
* testsuite/ld-i386/i386.exp: Remove pr19636-2e-nacl test.
* testsuite/ld-i386/pr19636-2e-nacl.d: Moved to ...
* testsuite/ld-i386/pr19636-2e.d: Here.  Remove notarget.
* testsuite/ld-ifunc/ifunc.exp: Run PR ld/19784 tests.
* testsuite/ld-ifunc/pass.out: New file.
* testsuite/ld-ifunc/pr19784a.c: Likewise.
* testsuite/ld-ifunc/pr19784b.c: Likewise.
* testsuite/ld-ifunc/pr19784c.c: Likewise.
12 files changed:
bfd/ChangeLog
bfd/elf32-i386.c
bfd/elf64-x86-64.c
ld/ChangeLog
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/pr19636-2e-nacl.d [deleted file]
ld/testsuite/ld-i386/pr19636-2e.d
ld/testsuite/ld-ifunc/ifunc.exp
ld/testsuite/ld-ifunc/pass.out [new file with mode: 0644]
ld/testsuite/ld-ifunc/pr19784a.c [new file with mode: 0644]
ld/testsuite/ld-ifunc/pr19784b.c [new file with mode: 0644]
ld/testsuite/ld-ifunc/pr19784c.c [new file with mode: 0644]