--- /dev/null
+#as: --gsframe
+#source: sframe-start.s
+#source: sframe-signal.s
+#warning: \.cfi\_escape with op \(0xf\)
+#objdump: --sframe=.sframe
+#ld: -shared --no-rosegment -z separate-code
+#name: SFrame link special case FDEs - 1
+
+.*: +file format .*
+
+Contents of the SFrame section .sframe:
+ Header :
+
+ Version: SFRAME_VERSION_3
+ Flags: SFRAME_F_FDE_SORTED,
+ SFRAME_F_FDE_FUNC_START_PCREL
+ CFA fixed RA offset: \-8
+ Num FDEs: 4
+ Num FREs: 5
+
+ Function Index :
+
+ func idx \[0\]: pc = 0x1000, size = 16 bytes
+ STARTPC +CFA +FP +RA +
+ 0+1000 +sp\+16 +u +f +
+ 0+1006 +sp\+24 +u +f +
+
+ func idx \[1\]: pc = 0x1010, size = 16 bytes
+ STARTPC\[m\] +CFA +FP +RA +
+ 0+0000 +sp\+8 +u +f +
+ 0+000b +sp\+16 +u +f +
+
+ func idx \[2\]: pc = 0x1020, size = 8 bytes
+ STARTPC +CFA +FP +RA +
+ 0+1020 +RA undefined
+
+ func idx \[3\]: pc = 0x1028, size = 2 bytes, attr = "S"
+ STARTPC +CFA +FP +RA +
--- /dev/null
+ .text
+ .globl rest_rt
+ .type rest_rt, @function
+rest_rt:
+ .cfi_startproc
+ .cfi_signal_frame
+ # DW_CFA_def_cfa_expression, length, DW_OP_breg9, (sleb)offset, DW_OP_deref
+ .cfi_escape 0xf,0x3,0x79,0x78,0x6
+ nop
+ .cfi_offset 6, -16
+ ret
+ .cfi_endproc
+ .size rest_rt, .-rest_rt
+ .section .note.GNU-stack,"",@progbits
--- /dev/null
+ .text
+ .globl _start
+ .type _start, @function
+_start:
+ .cfi_startproc
+ .cfi_undefined 16
+ xor %rbp, %rbp
+ call foo
+ .cfi_endproc
+ .size _start, .-_start
+ .section .note.GNU-stack,"",@progbits
if { ![skip_sframe_tests] } {
run_dump_test "sframe-simple-1"
+ run_dump_test "sframe-link-1"
run_dump_test "sframe-command-line-1"
run_dump_test "sframe-reloc-1"
run_dump_test "sframe-plt-1"