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