llvm/test/MC/COFF/seh.s: Fixup corresponding to r161487.
[oota-llvm.git] / test / MC / COFF / seh.s
1 // This test checks that the SEH directives emit the correct unwind data.
2 // RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | coff-dump.py | FileCheck %s
3
4 // CHECK:      Name                 = .xdata
5 // CHECK-NEXT: VirtualSize
6 // CHECK-NEXT: VirtualAddress
7 // CHECK-NEXT: SizeOfRawData        = 52
8 // CHECK-NEXT: PointerToRawData
9 // CHECK-NEXT: PointerToRelocations
10 // CHECK-NEXT: PointerToLineNumbers
11 // CHECK-NEXT: NumberOfRelocations  = 4
12 // CHECK-NEXT: NumberOfLineNumbers  = 0
13 // CHECK-NEXT: Charateristics
14 // CHECK-NEXT:   IMAGE_SCN_CNT_INITIALIZED_DATA
15 // CHECK-NEXT:   IMAGE_SCN_ALIGN_4BYTES
16 // CHECK-NEXT:   IMAGE_SCN_MEM_READ
17 // CHECK-NEXT: SectionData
18 // CHECK-NEXT:   09 12 08 03 00 03 0F 30 - 0E 88 00 00 09 64 02 00
19 // CHECK-NEXT:   04 22 00 1A 00 00 00 00 - 00 00 00 00 21 00 00 00
20 // CHECK-NEXT:   00 00 00 00 1B 00 00 00 - 00 00 00 00 01 00 00 00
21 // CHECK-NEXT:   00 00 00 00
22
23     .text
24     .globl func
25     .def func; .scl 2; .type 32; .endef
26     .seh_proc func
27 func:
28     .seh_pushframe @code
29     subq $24, %rsp
30     .seh_stackalloc 24
31     movq %rsi, 16(%rsp)
32     .seh_savereg %rsi, 16
33     movups %xmm8, (%rsp)
34     .seh_savexmm %xmm8, 0
35     pushq %rbx
36     .seh_pushreg 3
37     mov %rsp, %rbx
38     .seh_setframe 3, 0
39     .seh_endprologue
40     .seh_handler __C_specific_handler, @except
41     .seh_handlerdata
42     .long 0
43     .text
44     .seh_startchained
45     .seh_endprologue
46     .seh_endchained
47     lea (%rbx), %rsp
48     pop %rbx
49     addq $24, %rsp
50     ret
51     .seh_endproc
52
53 // Test emission of small functions.
54     .globl smallFunc
55     .def smallFunc; .scl 2; .type 32; .endef
56     .seh_proc smallFunc
57 smallFunc:
58     ret
59     .seh_endproc