]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas: Don't skip SFrame FDE if .cfi_register specifies RA w/o tracking
authorJens Remus <jremus@linux.ibm.com>
Thu, 4 Jul 2024 08:34:12 +0000 (10:34 +0200)
committerJens Remus <jremus@linux.ibm.com>
Thu, 4 Jul 2024 08:34:12 +0000 (10:34 +0200)
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>
gas/gen-sframe.c

index 2222d768799f51ec6cde782b9eaed0531f6c8458..31f2e511828053a0e9c5615f66f22e930e399ec7 100644 (file)
@@ -1158,7 +1158,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)
     {