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

Indu Bhagat ibhagat@sourceware.org
Tue Dec 23 22:58:36 GMT 2025


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

commit 2d431d0139493cdefb49f662b5df295d8bc32f65
Author: Indu Bhagat <indu.bhagat@oracle.com>
Date:   Tue Dec 23 14:57:58 2025 -0800

    Revert "gas: Don't skip SFrame FDE if .cfi_register specifies RA w/o tracking"
    
    This reverts commit df174a6b760.
    
        commit df174a6b760ac5c66ee62ecb872c760ae21fd4cd
        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.
    
    Even for ABI/arch without RA tracking, there may be instances where user
    may specify '.cfi_register RA, reg'.  This needs to be caught, skipping
    this from SFrame generation may not be correct.  This may be done in
    certain hand-written asm sequences where the user needs to manipulate
    the return to a certain function.
    
    No testcase is being added ATM because in SFrame V3, a new FDE type can
    be used to represent such cases (A new test case will be added then).
    
    Reviewed-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 f31cbaee060..5b1b1ba23ea 100644
--- a/gas/gen-sframe.c
+++ b/gas/gen-sframe.c
@@ -1287,7 +1287,7 @@ sframe_xlate_do_register (struct sframe_xlate_ctx *xlate_ctx,
      instruction can be safely skipped without sacrificing the asynchronicity of
      stack trace information.  */
   if (cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG
-      || (sframe_ra_tracking_p () && cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG)
+      || cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG
       /* Ignore SP reg, as it can be recovered from the CFA tracking info.  */
       )
     {


More information about the Binutils-cvs mailing list