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