diff options
Diffstat (limited to 'test/MC/COFF/seh-section.s')
-rw-r--r-- | test/MC/COFF/seh-section.s | 74 |
1 files changed, 72 insertions, 2 deletions
diff --git a/test/MC/COFF/seh-section.s b/test/MC/COFF/seh-section.s index 026c0d7..c95eece 100644 --- a/test/MC/COFF/seh-section.s +++ b/test/MC/COFF/seh-section.s @@ -1,5 +1,7 @@ -// This test ensures that, if the section containing a function has a suffix -// (e.g. .text$foo), its unwind info section also has a suffix (.xdata$foo). +// This test ensures functions in custom sections get unwind info emitted in a +// distinct .xdata section. Ideally we'd just emit a second .xdata section with +// the same name and characteristics, but MC uniques sections by name and +// characteristics, so that is not possible. // RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -s -sd | FileCheck %s // CHECK: Name: .xdata$foo @@ -20,6 +22,44 @@ // CHECK-NEXT: 0000: 01050200 05500402 // CHECK-NEXT: ) +// CHECK: Name: .xdata$.mytext +// CHECK-NEXT: VirtualSize +// CHECK-NEXT: VirtualAddress +// CHECK-NEXT: RawDataSize: 8 +// CHECK-NEXT: PointerToRawData +// CHECK-NEXT: PointerToRelocations +// CHECK-NEXT: PointerToLineNumbers +// CHECK-NEXT: RelocationCount: 0 +// CHECK-NEXT: LineNumberCount: 0 +// CHECK-NEXT: Characteristics [ +// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES +// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA +// CHECK-NEXT: IMAGE_SCN_MEM_READ +// CHECK-NEXT: ] +// CHECK-NEXT: SectionData ( +// CHECK-NEXT: 0000: 01050200 05500402 +// CHECK-NEXT: ) + +// CHECK: Name: .xdata +// CHECK-NEXT: VirtualSize +// CHECK-NEXT: VirtualAddress +// CHECK-NEXT: RawDataSize: 8 +// CHECK-NEXT: PointerToRawData +// CHECK-NEXT: PointerToRelocations +// CHECK-NEXT: PointerToLineNumbers +// CHECK-NEXT: RelocationCount: 0 +// CHECK-NEXT: LineNumberCount: 0 +// CHECK-NEXT: Characteristics [ +// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES +// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA +// CHECK-NEXT: IMAGE_SCN_MEM_READ +// CHECK-NEXT: ] +// CHECK-NEXT: SectionData ( +// CHECK-NEXT: 0000: 01050200 05500402 +// CHECK-NEXT: ) + + + .section .text$foo,"x" .globl foo .def foo; .scl 2; .type 32; .endef @@ -35,3 +75,33 @@ foo: ret .seh_endproc + .section .mytext,"x" + .globl bar + .def bar; .scl 2; .type 32; .endef + .seh_proc bar +bar: + subq $8, %rsp + .seh_stackalloc 8 + pushq %rbp + .seh_pushreg %rbp + .seh_endprologue + popq %rbp + addq $8, %rsp + ret + .seh_endproc + + .section .text + .globl baz + .def baz; .scl 2; .type 32; .endef + .seh_proc baz +baz: + subq $8, %rsp + .seh_stackalloc 8 + pushq %rbp + .seh_pushreg %rbp + .seh_endprologue + popq %rbp + addq $8, %rsp + ret + .seh_endproc + |