aarch64: fix return address access with pac [PR94891][PR94791]
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Tue, 2 Jun 2020 15:44:41 +0000 (16:44 +0100)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Mon, 13 Jul 2020 12:49:20 +0000 (13:49 +0100)
commit463a54e5d4956143f81c1f23b91cbd2d93855741
treeac8776c9326fc4198a1c32126981329a3e9a1a0d
parent5834e96a08fd8b86a42428f38a95903d2f1de202
aarch64: fix return address access with pac [PR94891][PR94791]

This is a big hammer fix for __builtin_return_address (PR target/94891)
returning signed addresses (sometimes, depending on wether lr happens
to be signed or not at the time of call which depends on optimizations),
and similarly -pg may pass signed return address to _mcount
(PR target/94791).

At the time of return address expansion we don't know if it's signed or
not so it is done unconditionally.

2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>

gcc/ChangeLog:

PR target/94891
PR target/94791
* config/aarch64/aarch64-protos.h (aarch64_return_addr_rtx): Declare.
* config/aarch64/aarch64.c (aarch64_return_addr_rtx): New.
(aarch64_return_addr): Use aarch64_return_addr_rtx.
* config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.h