blob: 23156b82d2e5a93984cfe1401cbb4acebb492e0f [file] [log] [blame]
// This test checks that the COFF object emitter works for the most basic
// programs.
// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
// I WOULD RUN, BUT THIS FAILS: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s
.def _main;
.scl 2;
.type 32;
.endef
.text
.globl _main
.align 16, 0x90
_main: # @main
# BB#0: # %entry
subl $4, %esp
movl $L_.str, (%esp)
calll _printf
xorl %eax, %eax
addl $4, %esp
ret
.data
L_.str: # @.str
.asciz "Hello World"
// CHECK: {
// CHECK: MachineType = IMAGE_FILE_MACHINE_I386 (0x14C)
// CHECK: NumberOfSections = 2
// CHECK: TimeDateStamp = {{[0-9]+}}
// CHECK: PointerToSymbolTable = 0x{{[0-9A-F]+}}
// CHECK: NumberOfSymbols = 6
// CHECK: SizeOfOptionalHeader = 0
// CHECK: Characteristics = 0x0
// CHECK: Sections = [
// CHECK: 1 = {
// CHECK: Name = .text
// CHECK: VirtualSize = 0
// CHECK: VirtualAddress = 0
// CHECK: SizeOfRawData = {{[0-9]+}}
// CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
// CHECK: PointerToRelocations = 0x{{[0-9A-F]+}}
// CHECK: PointerToLineNumbers = 0x0
// CHECK: NumberOfRelocations = 2
// CHECK: NumberOfLineNumbers = 0
// CHECK: Charateristics = 0x60500020
// CHECK: IMAGE_SCN_CNT_CODE
// CHECK: IMAGE_SCN_ALIGN_16BYTES
// CHECK: IMAGE_SCN_MEM_EXECUTE
// CHECK: IMAGE_SCN_MEM_READ
// CHECK: SectionData =
// CHECK: Relocations = [
// CHECK: 0 = {
// CHECK: VirtualAddress = 0x{{[0-9A-F]+}}
// CHECK: SymbolTableIndex = 2
// CHECK: Type = IMAGE_REL_I386_DIR32 (6)
// CHECK: SymbolName = .data
// CHECK: }
// CHECK: 1 = {
// CHECK: VirtualAddress = 0x{{[0-9A-F]+}}
// CHECK: SymbolTableIndex = 5
// CHECK: Type = IMAGE_REL_I386_REL32 (20)
// CHECK: SymbolName = _printf
// CHECK: }
// CHECK: ]
// CHECK: }
// CHECK: 2 = {
// CHECK: Name = .data
// CHECK: VirtualSize = 0
// CHECK: VirtualAddress = 0
// CHECK: SizeOfRawData = {{[0-9]+}}
// CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
// CHECK: PointerToRelocations = 0x0
// CHECK: PointerToLineNumbers = 0x0
// CHECK: NumberOfRelocations = 0
// CHECK: NumberOfLineNumbers = 0
// CHECK: Charateristics = 0xC0300040
// CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
// CHECK: IMAGE_SCN_ALIGN_4BYTES
// CHECK: IMAGE_SCN_MEM_READ
// CHECK: IMAGE_SCN_MEM_WRITE
// CHECK: SectionData =
// CHECK: 48 65 6C 6C 6F 20 57 6F - 72 6C 64 00 |Hello World.|
// CHECK: Relocations = None
// CHECK: }
// CHECK: ]
// CHECK: Symbols = [
// CHECK: 0 = {
// CHECK: Name = .text
// CHECK: Value = 0
// CHECK: SectionNumber = 1
// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
// CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
// CHECK: NumberOfAuxSymbols = 1
// CHECK: AuxillaryData =
// CHECK: 15 00 00 00 02 00 00 00 - 00 00 00 00 01 00 00 00 |................|
// CHECK: 00 00 |..|
// CHECK: }
// CHECK: 2 = {
// CHECK: Name = .data
// CHECK: Value = 0
// CHECK: SectionNumber = 2
// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
// CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
// CHECK: NumberOfAuxSymbols = 1
// CHECK: AuxillaryData =
// CHECK: 0C 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |................|
// CHECK: 00 00 |..|
// CHECK: }
// CHECK: 4 = {
// CHECK: Name = _main
// CHECK: Value = 0
// CHECK: SectionNumber = 1
// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
// CHECK: ComplexType = IMAGE_SYM_DTYPE_FUNCTION (2)
// CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
// CHECK: NumberOfAuxSymbols = 0
// CHECK: AuxillaryData =
// CHECK: }
// CHECK: 5 = {
// CHECK: Name = _printf
// CHECK: Value = 0
// CHECK: SectionNumber = 0
// CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
// CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
// CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
// CHECK: NumberOfAuxSymbols = 0
// CHECK: AuxillaryData =
// CHECK: }
// CHECK: ]
// CHECK: }