[PATCH v2 2/2] gas: sframe: Add test for signal frame with unsupported CFI

Jens Remus <[email protected]>
Newsgroups gmane.comp.gnu.binutils
Message-ID <[email protected]>
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 <[email protected]>
---

Notes (jremus):
    Changes in v2:
    - Change test not to use non-SP/FP CFA base register, which fails on
      aarch64, as it does not support flexible FDE. (Linaro-TCWG-CI)
    - Reword commit mesage to reference Nick's recent fix commit.

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

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 000000000000..dcceab8d69b0
--- /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 000000000000..9d6cf2a17e8b
--- /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 ba6cbc13f72a..d7418726f274 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"
-- 
2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.