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 67 foo: 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 82 bar: 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 97 baz: 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