Implement PowerPC64 .localentry for value 1
authorAlan Modra <amodra@gmail.com>
Thu, 26 Jul 2018 02:41:11 +0000 (12:11 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 26 Jul 2018 03:23:50 +0000 (12:53 +0930)
commit33cb30a1f932b5a211aa319a01783d4957ae5d57
treea3f75b30d87e0e461c47f3e1c786eaa67ad760b3
parent6cf212b445b4222bef4f74544896a3be332d5a12
Implement PowerPC64 .localentry for value 1

This adds support for ".localentry 1", a new st_other
STO_PPC64_LOCAL_MASK encoding that signifies a function with a single
entry point like ".localentry 0", but unlike a ".localentry 0"
function does not preserve r2.

include/
* elf/ppc64.h: Specify byte offset to local entry for values
of two to six in STO_PPC64_LOCAL_MASK.  Clarify r2 return
value for such functions when entering via global entry point.
Specify meaning of a value of one in STO_PPC64_LOCAL_MASK.
bfd/
* elf64-ppc.c (ppc64_elf_size_stubs): Use a ppc_stub_long_branch_r2off
for calls to symbols with STO_PPC64_LOCAL_MASK bits set to 1.
gas/
* config/tc-ppc.c (ppc_elf_localentry): Allow .localentry values
of 1 and 7 to directly set value into STO_PPC64_LOCAL_MASK bits.
ld/testsuite/
* ld-powerpc/elfv2.s: Add .localentry f5,1 testcase.
* ld-powerpc/elfv2exe.d: Update.
* ld-powerpc/elfv2so.d: Update.
bfd/ChangeLog
bfd/elf64-ppc.c
gas/ChangeLog
gas/config/tc-ppc.c
include/ChangeLog
include/elf/ppc64.h
ld/ChangeLog
ld/testsuite/ld-powerpc/elfv2.s
ld/testsuite/ld-powerpc/elfv2exe.d
ld/testsuite/ld-powerpc/elfv2so.d