[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