1 // This test checks that the COFF object emitter works for the most basic 2 // programs. 3 4 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %s 5 6 .def _main; 7 .scl 2; 8 .type 32; 9 .endef 10 .text 11 .globl _main 12 .align 16, 0x90 13 _main: # @main 14 # BB#0: # %entry 15 subl $4, %esp 16 movl $.L_.str, (%esp) 17 call _printf 18 xorl %eax, %eax 19 addl $4, %esp 20 ret 21 22 .data 23 .L_.str: # @.str 24 .asciz "Hello World" 25 26 // CHECK: ImageFileHeader { 27 // CHECK: Machine: IMAGE_FILE_MACHINE_AMD64 28 // CHECK: SectionCount: 2 29 // CHECK: TimeDateStamp: {{[0-9]+}} 30 // CHECK: PointerToSymbolTable: 0x{{[0-9A-F]+}} 31 // CHECK: SymbolCount: 6 32 // CHECK: OptionalHeaderSize: 0 33 // CHECK: Characteristics [ (0x0) 34 // CHECK: ] 35 // CHECK: } 36 // CHECK: Sections [ 37 // CHECK: Section { 38 // CHECK: Number: [[TextNum:[0-9]+]] 39 // CHECK: Name: .text 40 // CHECK: VirtualSize: 0 41 // CHECK: VirtualAddress: 0 42 // CHECK: RawDataSize: [[TextSize:[0-9]+]] 43 // CHECK: PointerToRawData: 0x{{[0-9A-F]+}} 44 // CHECK: PointerToRelocations: 0x{{[0-9A-F]+}} 45 // CHECK: PointerToLineNumbers: 0x0 46 // CHECK: RelocationCount: 2 47 // CHECK: LineNumberCount: 0 48 // CHECK: Characteristics [ (0x60500020) 49 // CHECK: IMAGE_SCN_ALIGN_16BYTES 50 // CHECK: IMAGE_SCN_CNT_CODE 51 // CHECK: IMAGE_SCN_MEM_EXECUTE 52 // CHECK: IMAGE_SCN_MEM_READ 53 // CHECK: ] 54 // CHECK: Relocations [ 55 // CHECK: 0x{{[0-9A-F]+}} IMAGE_REL_AMD64_ADDR32 .data 56 // CHECK: 0x{{[0-9A-F]+}} IMAGE_REL_AMD64_REL32 _printf 57 // CHECK: ] 58 // CHECK: } 59 // CHECK: Section { 60 // CHECK: Number: [[DataNum:[0-9]+]] 61 // CHECK: Name: .data 62 // CHECK: VirtualSize: 0 63 // CHECK: VirtualAddress: 0 64 // CHECK: RawDataSize: [[DataSize:[0-9]+]] 65 // CHECK: PointerToRawData: 0x{{[0-9A-F]+}} 66 // CHECK: PointerToRelocations: 0x0 67 // CHECK: PointerToLineNumbers: 0x0 68 // CHECK: RelocationCount: 0 69 // CHECK: LineNumberCount: 0 70 // CHECK: Characteristics [ (0xC0300040) 71 // CHECK: IMAGE_SCN_ALIGN_4BYTES 72 // CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA 73 // CHECK: IMAGE_SCN_MEM_READ 74 // CHECK: IMAGE_SCN_MEM_WRITE 75 // CHECK: ] 76 // CHECK: Relocations [ 77 // CHECK: ] 78 // CHECK: SectionData ( 79 // CHECK: 0000: 48656C6C 6F20576F 726C6400 |Hello World.| 80 // CHECK: ) 81 // CHECK: } 82 // CHECK: ] 83 // CHECK: Symbols [ 84 // CHECK: Symbol { 85 // CHECK: Name: .text 86 // CHECK: Value: 0 87 // CHECK: Section: .text 88 // CHECK: BaseType: Null 89 // CHECK: ComplexType: Null 90 // CHECK: StorageClass: Static 91 // CHECK: AuxSymbolCount: 1 92 // CHECK: AuxSectionDef { 93 // CHECK: Length: [[TextSize]] 94 // CHECK: RelocationCount: 2 95 // CHECK: LineNumberCount: 0 96 // CHECK: Checksum: 0x0 97 // CHECK: Number: [[TextNum]] 98 // CHECK: Selection: 0x0 99 // CHECK: } 100 // CHECK: } 101 // CHECK: Symbol { 102 // CHECK: Name: .data 103 // CHECK: Value: 0 104 // CHECK: Section: .data 105 // CHECK: BaseType: Null 106 // CHECK: ComplexType: Null 107 // CHECK: StorageClass: Static 108 // CHECK: AuxSymbolCount: 1 109 // CHECK: AuxSectionDef { 110 // CHECK: Length: [[DataSize]] 111 // CHECK: RelocationCount: 0 112 // CHECK: LineNumberCount: 0 113 // CHECK: Checksum: 0x0 114 // CHECK: Number: [[DataNum]] 115 // CHECK: Selection: 0x0 116 // CHECK: Unused: (00 00 00) 117 // CHECK: } 118 // CHECK: } 119 // CHECK: Symbol { 120 // CHECK: Name: _main 121 // CHECK: Value: 0 122 // CHECK: Section: .text 123 // CHECK: BaseType: Null 124 // CHECK: ComplexType: Function 125 // CHECK: StorageClass: External 126 // CHECK: AuxSymbolCount: 0 127 // CHECK: } 128 // CHECK: Symbol { 129 // CHECK: Name: _printf 130 // CHECK: Value: 0 131 // CHECK: Section: (0) 132 // CHECK: BaseType: Null 133 // CHECK: ComplexType: Null 134 // CHECK: StorageClass: External 135 // CHECK: AuxSymbolCount: 0 136 // CHECK: } 137 // CHECK: ] 138