1// This test ensures functions in custom sections get unwind info emitted in a
2// distinct .xdata section.
3// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -S --sd - | FileCheck %s
4
5// CHECK:      Name: .xdata
6// CHECK-NEXT: VirtualSize
7// CHECK-NEXT: VirtualAddress
8// CHECK-NEXT: RawDataSize: 8
9// CHECK-NEXT: PointerToRawData
10// CHECK-NEXT: PointerToRelocations
11// CHECK-NEXT: PointerToLineNumbers
12// CHECK-NEXT: RelocationCount: 0
13// CHECK-NEXT: LineNumberCount: 0
14// CHECK-NEXT: Characteristics [
15// CHECK-NEXT:   IMAGE_SCN_ALIGN_4BYTES
16// CHECK-NEXT:   IMAGE_SCN_CNT_INITIALIZED_DATA
17// CHECK-NEXT:   IMAGE_SCN_MEM_READ
18// CHECK-NEXT: ]
19// CHECK-NEXT: SectionData (
20// CHECK-NEXT:   0000: 01050200 05500402
21// CHECK-NEXT: )
22
23// CHECK:      Name: .xdata
24// CHECK-NEXT: VirtualSize
25// CHECK-NEXT: VirtualAddress
26// CHECK-NEXT: RawDataSize: 8
27// CHECK-NEXT: PointerToRawData
28// CHECK-NEXT: PointerToRelocations
29// CHECK-NEXT: PointerToLineNumbers
30// CHECK-NEXT: RelocationCount: 0
31// CHECK-NEXT: LineNumberCount: 0
32// CHECK-NEXT: Characteristics [
33// CHECK-NEXT:   IMAGE_SCN_ALIGN_4BYTES
34// CHECK-NEXT:   IMAGE_SCN_CNT_INITIALIZED_DATA
35// CHECK-NEXT:   IMAGE_SCN_MEM_READ
36// CHECK-NEXT: ]
37// CHECK-NEXT: SectionData (
38// CHECK-NEXT:   0000: 01050200 05500402
39// CHECK-NEXT: )
40
41// CHECK:      Name: .xdata
42// CHECK-NEXT: VirtualSize
43// CHECK-NEXT: VirtualAddress
44// CHECK-NEXT: RawDataSize: 8
45// CHECK-NEXT: PointerToRawData
46// CHECK-NEXT: PointerToRelocations
47// CHECK-NEXT: PointerToLineNumbers
48// CHECK-NEXT: RelocationCount: 0
49// CHECK-NEXT: LineNumberCount: 0
50// CHECK-NEXT: Characteristics [
51// CHECK-NEXT:   IMAGE_SCN_ALIGN_4BYTES
52// CHECK-NEXT:   IMAGE_SCN_CNT_INITIALIZED_DATA
53// CHECK-NEXT:   IMAGE_SCN_MEM_READ
54// CHECK-NEXT: ]
55// CHECK-NEXT: SectionData (
56// CHECK-NEXT:   0000: 01050200 05500402
57// CHECK-NEXT: )
58
59
60
61    .section .text$foo,"x"
62    .globl foo
63    .def foo; .scl 2; .type 32; .endef
64    .seh_proc foo
65foo:
66    subq $8, %rsp
67    .seh_stackalloc 8
68    pushq %rbp
69    .seh_pushreg %rbp
70    .seh_endprologue
71    popq %rbp
72    addq $8, %rsp
73    ret
74    .seh_endproc
75
76    .section .mytext,"x"
77    .globl bar
78    .def bar; .scl 2; .type 32; .endef
79    .seh_proc bar
80bar:
81    subq $8, %rsp
82    .seh_stackalloc 8
83    pushq %rbp
84    .seh_pushreg %rbp
85    .seh_endprologue
86    popq %rbp
87    addq $8, %rsp
88    ret
89    .seh_endproc
90
91    .section .text
92    .globl baz
93    .def baz; .scl 2; .type 32; .endef
94    .seh_proc baz
95baz:
96    subq $8, %rsp
97    .seh_stackalloc 8
98    pushq %rbp
99    .seh_pushreg %rbp
100    .seh_endprologue
101    popq %rbp
102    addq $8, %rsp
103    ret
104    .seh_endproc
105
106