[binutils-gdb] gas: sframe: Add test for signal frame with unsupported CFI

Jens Remus jremus@sourceware.org
Wed Aug 12 12:40:48 GMT 2026


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

commit ce67ec902d836898d93c62f71ff2e97f774a0b95
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Wed Aug 12 14:39:50 2026 +0200

    gas: sframe: Add test for signal frame with unsupported CFI
    
    Usually if the generation of SFrame from CFI directives encounters
    unsupported CFI the generation of SFrame FDE is skipped.  For signal
    frames (.cfi_signal_frame) an "empty" FDE without any FREs is generated
    instead.
    
    This adds a test for the issue fixed with commit fa11363bc9ad ("Ensure
    that sframe_xlate_ctx_cleanup() doe snot leave any dangling pointers").
    
    gas/testsuite/
            * gas/cfi-sframe/cfi-sframe.exp (cfi-sframe-common-14): Run
            new common test.
            * gas/cfi-sframe/cfi-sframe-common-14.d: New common test for
            signal frame with unsupported CFI.
            gas/cfi-sframe/cfi-sframe-common-14.s: Likewise.
    
    Signed-off-by: Jens Remus <jremus@linux.ibm.com>

Diff:
---
 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.d | 20 ++++++++++++++++++++
 gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.s |  5 +++++
 gas/testsuite/gas/cfi-sframe/cfi-sframe.exp         |  1 +
 3 files changed, 26 insertions(+)

diff --git a/gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.d b/gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.d
new file mode 100644
index 00000000000..dcceab8d69b
--- /dev/null
+++ b/gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.d
@@ -0,0 +1,20 @@
+#as: --gsframe
+#objdump: --sframe=.sframe
+#name: Signal Frame with unsupported CFI
+#warning: \.cfi_def_cfa_offset with unsupported offset value
+#...
+Contents of the SFrame section .sframe:
+
+  Header :
+
+    Version: SFRAME_VERSION_3
+    Flags: SFRAME_F_FDE_FUNC_START_PCREL
+#?    CFA fixed FP offset: \-?\d+
+#?    CFA fixed RA offset: \-?\d+
+    Num FDEs: 1
+    Num FREs: 0
+
+  Function Index :
+    func idx \[0\]: pc = 0x0, size = 4 bytes, attr = \"S\"
+    STARTPC + CFA + FP + RA +
+#pass
diff --git a/gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.s b/gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.s
new file mode 100644
index 00000000000..9d6cf2a17e8
--- /dev/null
+++ b/gas/testsuite/gas/cfi-sframe/cfi-sframe-common-14.s
@@ -0,0 +1,5 @@
+	.cfi_startproc
+	.cfi_signal_frame
+	.long 0
+	.cfi_def_cfa_offset 1099511627808
+	.cfi_endproc
diff --git a/gas/testsuite/gas/cfi-sframe/cfi-sframe.exp b/gas/testsuite/gas/cfi-sframe/cfi-sframe.exp
index ba6cbc13f72..d7418726f27 100644
--- a/gas/testsuite/gas/cfi-sframe/cfi-sframe.exp
+++ b/gas/testsuite/gas/cfi-sframe/cfi-sframe.exp
@@ -50,6 +50,7 @@ if  { ([istarget "x86_64-*-*"] || [istarget "aarch64*-*-*"]
     run_dump_test "cfi-sframe-common-11"
     run_dump_test "cfi-sframe-common-12"
     run_dump_test "cfi-sframe-common-13"
+    run_dump_test "cfi-sframe-common-14"
 
     run_dump_test "common-empty-2"
     run_dump_test "common-empty-3"


More information about the Binutils-cvs mailing list