[binutils-gdb] gas: Don't skip SFrame FDE if .cfi_register specifies RA w/o tracking

Jens Remus jremus@sourceware.org
Thu Jul 4 08:40:05 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=df174a6b760ac5c66ee62ecb872c760ae21fd4cd

commit df174a6b760ac5c66ee62ecb872c760ae21fd4cd
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Thu Jul 4 10:34:12 2024 +0200

    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>

Diff:
---
 gas/gen-sframe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c
index 2222d768799..31f2e511828 100644
--- a/gas/gen-sframe.c
+++ b/gas/gen-sframe.c
@@ -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)
     {


More information about the Binutils-cvs mailing list