diff options
-rw-r--r-- | gas/testsuite/ChangeLog | 10 | ||||
-rwxr-xr-x | gas/testsuite/gas/pe/pe.exp | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/pe/peseh-x64-2.d | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/pe/peseh-x64-2.s | 26 | ||||
-rw-r--r-- | gas/testsuite/gas/pe/peseh-x64-3.d | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/pe/peseh-x64-3.s | 31 | ||||
-rw-r--r-- | gas/testsuite/gas/pe/peseh-x64.d | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/pe/peseh-x64.s | 14 |
8 files changed, 114 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 988d073..83ff1bd 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2010-09-13 Kai Tietz <kai.tietz@onevision.com> + + * gas/pe/pe.exp: Add x64 SEH tests. + * gas/pe/peseh-x64.s: New. + * gas/pe/peseh-x64.d: New. + * gas/pe/peseh-x64-2.s: New. + * gas/pe/peseh-x64-2.d: New. + * gas/pe/peseh-x64-3.s: New. + * gas/pe/peseh-x64-3.d: New. + 2010-09-09 Nick Clifton <nickc@redhat.com> PR gas/11973 diff --git a/gas/testsuite/gas/pe/pe.exp b/gas/testsuite/gas/pe/pe.exp index aadf972..8982719 100755 --- a/gas/testsuite/gas/pe/pe.exp +++ b/gas/testsuite/gas/pe/pe.exp @@ -35,3 +35,13 @@ run_dump_test "aligncomm-d" run_dump_test "section-align-1" run_dump_test "section-align-3" + +# SEH related tests + +# These tests are only for x86_64 targets +if ([istarget "x86_64-*-mingw*"]) then { + + run_dump_test "peseh-x64" + run_dump_test "peseh-x64-2" + run_dump_test "peseh-x64-3" +} diff --git a/gas/testsuite/gas/pe/peseh-x64-2.d b/gas/testsuite/gas/pe/peseh-x64-2.d new file mode 100644 index 0000000..acfd727 --- /dev/null +++ b/gas/testsuite/gas/pe/peseh-x64-2.d @@ -0,0 +1,7 @@ +#objdump: -s -j .xdata +#name: PE x64 SEH test 2 + +.*: .* + +Contents of section .xdata: + 0000 01080305 08320403 01500000 .* diff --git a/gas/testsuite/gas/pe/peseh-x64-2.s b/gas/testsuite/gas/pe/peseh-x64-2.s new file mode 100644 index 0000000..d43df94 --- /dev/null +++ b/gas/testsuite/gas/pe/peseh-x64-2.s @@ -0,0 +1,26 @@ + .file "t2.c" + .text + .p2align 4,,15 + .globl foo + .def foo; .scl 2; .type 32; .endef + .seh_proc foo +foo: + pushq %rbp + .seh_pushreg %rbp + movq %rsp, %rbp + .seh_setframe %rbp, 0 + subq $32, %rsp + .seh_stackalloc 32 + .seh_endprologue + leal 1(%rcx), %eax + cltq + addq $30, %rax + andq $-16, %rax + call ___chkstk + leaq 32(%rsp), %rcx + call bar + movq %rbp, %rsp + popq %rbp + ret + .seh_endproc + .def bar; .scl 2; .type 32; .endef diff --git a/gas/testsuite/gas/pe/peseh-x64-3.d b/gas/testsuite/gas/pe/peseh-x64-3.d new file mode 100644 index 0000000..9ec6458 --- /dev/null +++ b/gas/testsuite/gas/pe/peseh-x64-3.d @@ -0,0 +1,9 @@ +#objdump: -s -j .xdata +#name: PE x64 SEH test 3 + +.*: .* + +Contents of section .xdata: + 0000 09080305 08520403 01500000 00000000 .....R...P...... + 0010 01000000 0f000000 1c000000 00000000 ................ + 0020 1c000000 .* diff --git a/gas/testsuite/gas/pe/peseh-x64-3.s b/gas/testsuite/gas/pe/peseh-x64-3.s new file mode 100644 index 0000000..dc132f8 --- /dev/null +++ b/gas/testsuite/gas/pe/peseh-x64-3.s @@ -0,0 +1,31 @@ + .file "t3.c" + .text + .globl nMainCRTStartup + .def nMainCRTStartup; .scl 2; .type 32; .endef + .seh_proc nMainCRTStartup +nMainCRTStartup: + pushq %rbp + .seh_pushreg %rbp + movq %rsp, %rbp + .seh_setframe %rbp, 0 + subq $48, %rsp + .seh_stackalloc 48 + .seh_endprologue + movl $255, -4(%rbp) +.l_startw: + .seh_handler __C_specific_handler, @except + .seh_handlerdata + .long 1 + .rva .l_startw, .l_endw, _gnu_exception_handler ,.l_endw + .text + call __security_init_cookie + call __tmainCRTStartup + movl %eax, -4(%rbp) +.l_endw: nop + movl -4(%rbp), %eax + addq $48, %rsp + popq %rbp + ret + .seh_endproc + .def __security_init_cookie; .scl 2; .type 32; .endef + .def __tmainCRTStartup; .scl 2; .type 32; .endef diff --git a/gas/testsuite/gas/pe/peseh-x64.d b/gas/testsuite/gas/pe/peseh-x64.d new file mode 100644 index 0000000..8af15ab --- /dev/null +++ b/gas/testsuite/gas/pe/peseh-x64.d @@ -0,0 +1,7 @@ +#objdump: -s -j .xdata +#name: PE x64 SEH test 1 + +.*: .* + +Contents of section .xdata: + 0000 01040100 04020000 .* diff --git a/gas/testsuite/gas/pe/peseh-x64.s b/gas/testsuite/gas/pe/peseh-x64.s new file mode 100644 index 0000000..05afabf --- /dev/null +++ b/gas/testsuite/gas/pe/peseh-x64.s @@ -0,0 +1,14 @@ + .file "t1.c" + .text + .p2align 4,,15 + .globl foo + .def foo; .scl 2; .type 32; .endef + .seh_proc foo +foo: + subq $8, %rsp + .seh_stackalloc 8 + .seh_endprologue + movl $1, %eax + addq $8, %rsp + ret + .seh_endproc |