X86-64: Test external function reference without PLT
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 8 Jun 2016 11:55:10 +0000 (04:55 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 8 Jun 2016 12:57:18 +0000 (05:57 -0700)
commitd9aee8d5f77e0b1b923e0fb1ad5d8050eb0240b8
treeed2a294a04b513d367e04723c5747ae62e7f7d6a
parent33c2b983b4854cf4dbbeefa45506a1812a60328e
X86-64: Test external function reference without PLT

To call an external function, the direct branch to the PLT entry can be
replaced by an indirect branch via the GOT slot, which is similar to the
first instruction in the PLT slot.  Instead using the PLT slot as function
address, the function address is retrieved from the GOT slot.  If linker
determines the function is defined locally, it converts indirect branch
via the GOT slot to direct branch with a nop prefix and converts load via
the GOT slot to load immediate or lea,

* testsuite/ld-x86-64/libno-plt-1b.dd: Likewise.
* testsuite/ld-x86-64/libno-plt-1b.rd: Likewise.
* testsuite/ld-x86-64/no-plt-1a.dd: Likewise.
* testsuite/ld-x86-64/no-plt-1a.rd: Likewise.
* testsuite/ld-x86-64/no-plt-1b.dd: Likewise.
* testsuite/ld-x86-64/no-plt-1b.rd: Likewise.
* testsuite/ld-x86-64/no-plt-1c.dd: Likewise.
* testsuite/ld-x86-64/no-plt-1c.rd: Likewise.
* testsuite/ld-x86-64/no-plt-1d.dd: Likewise.
* testsuite/ld-x86-64/no-plt-1d.rd: Likewise.
* testsuite/ld-x86-64/no-plt-1e.dd: Likewise.
* testsuite/ld-x86-64/no-plt-1e.rd: Likewise.
* testsuite/ld-x86-64/no-plt-1f.dd: Likewise.
* testsuite/ld-x86-64/no-plt-1f.rd: Likewise.
* testsuite/ld-x86-64/no-plt-1g.dd: Likewise.
* testsuite/ld-x86-64/no-plt-1g.rd: Likewise.
* testsuite/ld-x86-64/no-plt-check1.S: Likewise.
* testsuite/ld-x86-64/no-plt.exp: Likewise.
* testsuite/ld-x86-64/no-plt-extern1.S: Likewise.
* testsuite/ld-x86-64/no-plt-func1.c: Likewise.
* testsuite/ld-x86-64/no-plt-main1.c: Likewise.
21 files changed:
ld/testsuite/ld-x86-64/libno-plt-1b.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/libno-plt-1b.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1a.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1a.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1b.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1b.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1c.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1c.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1d.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1d.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1e.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1e.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1f.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1f.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1g.dd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-1g.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-check1.S [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-extern1.S [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-func1.c [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt-main1.c [new file with mode: 0644]
ld/testsuite/ld-x86-64/no-plt.exp [new file with mode: 0644]