aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Remus <jremus@linux.ibm.com>2024-03-07 12:23:25 +0100
committerJens Remus <jremus@linux.ibm.com>2024-05-16 13:32:22 +0200
commit5cfabd629e91a14a0129cd80132ad1b2dde3fd72 (patch)
tree801b4d1d532e8fe01220fd84f5d93929342bcdc0
parent388179e48a62c65c5de7aff2355dd2bef1c3664f (diff)
downloadbinutils-5cfabd629e91a14a0129cd80132ad1b2dde3fd72.zip
binutils-5cfabd629e91a14a0129cd80132ad1b2dde3fd72.tar.gz
binutils-5cfabd629e91a14a0129cd80132ad1b2dde3fd72.tar.bz2
gas: Don't skip SFrame FDE if .cfi_register specifies RA w/o tracking
Do not skip SFrame FDE if .cfi_register specifies RA register without RA tracking being actually used. Without RA tracking the register contents can always be restored from the stack using the fixed RA offset from CFA. gas/ * gen-sframe.c (sframe_xlate_do_register): Do not skip SFrame FDE if .cfi_register specifies RA register without RA tracking being used. Signed-off-by: Jens Remus <jremus@linux.ibm.com>
-rw-r--r--gas/gen-sframe.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c
index 8c5a476..1da7a77 100644
--- a/gas/gen-sframe.c
+++ b/gas/gen-sframe.c
@@ -1162,7 +1162,7 @@ sframe_xlate_do_register (struct sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED,
stack trace information. */
if (cfi_insn->u.rr.reg1 == SFRAME_CFA_SP_REG
#ifdef SFRAME_FRE_RA_TRACKING
- || (cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG)
+ || (sframe_ra_tracking_p () && cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG)
#endif
|| cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG)
{