aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-pe
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-pe')
-rw-r--r--ld/testsuite/ld-pe/cfi.d36
-rw-r--r--ld/testsuite/ld-pe/cfi32.d28
-rw-r--r--ld/testsuite/ld-pe/cfia.s26
-rw-r--r--ld/testsuite/ld-pe/cfib.s16
-rw-r--r--ld/testsuite/ld-pe/pe.exp6
5 files changed, 112 insertions, 0 deletions
diff --git a/ld/testsuite/ld-pe/cfi.d b/ld/testsuite/ld-pe/cfi.d
new file mode 100644
index 0000000..6c5042b
--- /dev/null
+++ b/ld/testsuite/ld-pe/cfi.d
@@ -0,0 +1,36 @@
+#source: cfia.s
+#source: cfib.s
+#ld: --file-align 1 --section-align 1
+#objdump: -Wf
+
+#...
+00000004 00000014 ffffffff CIE
+ Version: 1
+ Augmentation: ""
+ Code alignment factor: 1
+ Data alignment factor: \-8
+ Return address column: 32
+
+ DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+ DW_CFA_offset: r32 \(xmm15\) at cfa\-8
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+
+0000001c 00000024 00000004 FDE cie=00000004 pc=.*
+ DW_CFA_advance_loc: 4 to .*
+ DW_CFA_def_cfa_offset: 16
+ DW_CFA_offset: r6 \(rbp\) at cfa\-16
+ DW_CFA_advance_loc: 4 to .*
+^ DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+ DW_CFA_restore: r6 \(rbp\)
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+#pass
diff --git a/ld/testsuite/ld-pe/cfi32.d b/ld/testsuite/ld-pe/cfi32.d
new file mode 100644
index 0000000..d13fb1a
--- /dev/null
+++ b/ld/testsuite/ld-pe/cfi32.d
@@ -0,0 +1,28 @@
+#source: cfia.s
+#source: cfib.s
+#ld: --file-align 1 --section-align 1
+#objdump: -Wf
+
+#...
+00000000 00000010 ffffffff CIE
+ Version: 1
+ Augmentation: ""
+ Code alignment factor: 1
+ Data alignment factor: \-4
+ Return address column: 8
+
+ DW_CFA_def_cfa: r4 \(esp\) ofs 4
+ DW_CFA_offset: r8 \(eip\) at cfa\-4
+ DW_CFA_nop
+ DW_CFA_nop
+
+00000014 00000018 00000000 FDE cie=00000000 pc=.*
+ DW_CFA_advance_loc: 4 to .*
+ DW_CFA_def_cfa_offset: 16
+ DW_CFA_offset: r6 \(esi\) at cfa\-16
+ DW_CFA_advance_loc: 4 to .*
+ DW_CFA_def_cfa: r7 \(edi\) ofs 8
+ DW_CFA_restore: r6 \(esi\)
+ DW_CFA_nop
+ DW_CFA_nop
+#pass
diff --git a/ld/testsuite/ld-pe/cfia.s b/ld/testsuite/ld-pe/cfia.s
new file mode 100644
index 0000000..d1ea51d
--- /dev/null
+++ b/ld/testsuite/ld-pe/cfia.s
@@ -0,0 +1,26 @@
+ .globl _mainCRTStartup
+ .globl _start
+ .text
+_mainCRTStartup:
+mainCRTStartup:
+_start:
+start:
+ .long -1
+
+ .cfi_sections .debug_frame
+ .section .text$abc,"x"
+ .linkonce discard
+ .align 2
+ .globl _tst
+ .def _tst; .scl 2; .type 32; .endef
+_tst:
+ .cfi_startproc
+ .long 0
+ .cfi_def_cfa_offset 16
+ .cfi_offset 6, -16
+ .long 1
+ .cfi_def_cfa 7, 8
+ .cfi_restore 6
+ .long 2
+ .cfi_endproc
+
diff --git a/ld/testsuite/ld-pe/cfib.s b/ld/testsuite/ld-pe/cfib.s
new file mode 100644
index 0000000..9b761cf
--- /dev/null
+++ b/ld/testsuite/ld-pe/cfib.s
@@ -0,0 +1,16 @@
+ .cfi_sections .debug_frame
+ .section .text$abc,"x"
+ .linkonce discard
+ .align 2
+ .globl _tst
+ .def _tst; .scl 2; .type 32; .endef
+_tst:
+ .cfi_startproc
+ .long 0
+ .cfi_def_cfa_offset 16
+ .cfi_offset 6, -16
+ .long 1
+ .cfi_def_cfa 7, 8
+ .cfi_restore 6
+ .long 2
+ .cfi_endproc
diff --git a/ld/testsuite/ld-pe/pe.exp b/ld/testsuite/ld-pe/pe.exp
index 183c5c6..c72c3b1 100644
--- a/ld/testsuite/ld-pe/pe.exp
+++ b/ld/testsuite/ld-pe/pe.exp
@@ -77,6 +77,12 @@ run_dump_test "longsecn-5"
run_dump_test "orphan"
run_dump_test "orphan_nu"
+if {[istarget x86_64-*-mingw*] } {
+ run_dump_test "cfi"
+} elseif {[istarget i*86-*-cygwin*] || [istarget i*86-*-mingw*] } {
+ run_dump_test "cfi32"
+}
+
set foreign_sym_test {
{"non-C aligned common" "" "" {non-c-lang-syms.s}
{{nm -C non-c-lang-syms.d}} "non-c-lang-syms.x"}