Home | History | Annotate | Download | only in COFF
      1 // This test checks that the COFF object emitter works for the most basic
      2 // programs.
      3 
      4 // RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | coff-dump.py | FileCheck %s
      5 // I WOULD RUN, BUT THIS FAILS: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s
      6 
      7 .def	 _main;
      8 	.scl	2;
      9 	.type	32;
     10 	.endef
     11 	.text
     12 	.globl	_main
     13 	.align	16, 0x90
     14 _main:                                  # @main
     15 # BB#0:                                 # %entry
     16 	subl	$4, %esp
     17 	movl	$L_.str, (%esp)
     18 	calll	_printf
     19 	xorl	%eax, %eax
     20 	addl	$4, %esp
     21 	ret
     22 
     23 	.data
     24 L_.str:                                 # @.str
     25 	.asciz	 "Hello World"
     26 
     27 // CHECK: {
     28 // CHECK:   MachineType              = IMAGE_FILE_MACHINE_I386 (0x14C)
     29 // CHECK:   NumberOfSections         = 2
     30 // CHECK:   TimeDateStamp            = {{[0-9]+}}
     31 // CHECK:   PointerToSymbolTable     = 0x{{[0-9A-F]+}}
     32 // CHECK:   NumberOfSymbols          = 6
     33 // CHECK:   SizeOfOptionalHeader     = 0
     34 // CHECK:   Characteristics          = 0x0
     35 // CHECK:   Sections                 = [
     36 // CHECK:     1 = {
     37 // CHECK:       Name                     = .text
     38 // CHECK:       VirtualSize              = 0
     39 // CHECK:       VirtualAddress           = 0
     40 // CHECK:       SizeOfRawData            = {{[0-9]+}}
     41 // CHECK:       PointerToRawData         = 0x{{[0-9A-F]+}}
     42 // CHECK:       PointerToRelocations     = 0x{{[0-9A-F]+}}
     43 // CHECK:       PointerToLineNumbers     = 0x0
     44 // CHECK:       NumberOfRelocations      = 2
     45 // CHECK:       NumberOfLineNumbers      = 0
     46 // CHECK:       Charateristics           = 0x60500020
     47 // CHECK:         IMAGE_SCN_CNT_CODE
     48 // CHECK:         IMAGE_SCN_ALIGN_16BYTES
     49 // CHECK:         IMAGE_SCN_MEM_EXECUTE
     50 // CHECK:         IMAGE_SCN_MEM_READ
     51 // CHECK:       SectionData              =
     52 // CHECK:       Relocations              = [
     53 // CHECK:         0 = {
     54 // CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}
     55 // CHECK:           SymbolTableIndex         = 2
     56 // CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)
     57 // CHECK:           SymbolName               = .data
     58 // CHECK:         }
     59 // CHECK:         1 = {
     60 // CHECK:           VirtualAddress           = 0x{{[0-9A-F]+}}
     61 // CHECK:           SymbolTableIndex         = 5
     62 // CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)
     63 // CHECK:           SymbolName               = _printf
     64 // CHECK:         }
     65 // CHECK:       ]
     66 // CHECK:     }
     67 // CHECK:     2 = {
     68 // CHECK:       Name                     = .data
     69 // CHECK:       VirtualSize              = 0
     70 // CHECK:       VirtualAddress           = 0
     71 // CHECK:       SizeOfRawData            = {{[0-9]+}}
     72 // CHECK:       PointerToRawData         = 0x{{[0-9A-F]+}}
     73 // CHECK:       PointerToRelocations     = 0x0
     74 // CHECK:       PointerToLineNumbers     = 0x0
     75 // CHECK:       NumberOfRelocations      = 0
     76 // CHECK:       NumberOfLineNumbers      = 0
     77 // CHECK:       Charateristics           = 0xC0300040
     78 // CHECK:         IMAGE_SCN_CNT_INITIALIZED_DATA
     79 // CHECK:         IMAGE_SCN_ALIGN_4BYTES
     80 // CHECK:         IMAGE_SCN_MEM_READ
     81 // CHECK:         IMAGE_SCN_MEM_WRITE
     82 // CHECK:       SectionData              =
     83 // CHECK:         48 65 6C 6C 6F 20 57 6F - 72 6C 64 00             |Hello World.|
     84 // CHECK:       Relocations              = None
     85 // CHECK:     }
     86 // CHECK:   ]
     87 // CHECK:   Symbols                  = [
     88 // CHECK:     0 = {
     89 // CHECK:       Name                     = .text
     90 // CHECK:       Value                    = 0
     91 // CHECK:       SectionNumber            = 1
     92 // CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
     93 // CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)
     94 // CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)
     95 // CHECK:       NumberOfAuxSymbols       = 1
     96 // CHECK:       AuxillaryData            =
     97 // CHECK:         15 00 00 00 02 00 00 00 - 00 00 00 00 01 00 00 00 |................|
     98 // CHECK:         00 00                                             |..|
     99 // CHECK:     }
    100 // CHECK:     2 = {
    101 // CHECK:       Name                     = .data
    102 // CHECK:       Value                    = 0
    103 // CHECK:       SectionNumber            = 2
    104 // CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
    105 // CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)
    106 // CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)
    107 // CHECK:       NumberOfAuxSymbols       = 1
    108 // CHECK:       AuxillaryData            =
    109 // CHECK:         0C 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |................|
    110 // CHECK:         00 00                                             |..|
    111 // CHECK:     }
    112 // CHECK:     4 = {
    113 // CHECK:       Name                     = _main
    114 // CHECK:       Value                    = 0
    115 // CHECK:       SectionNumber            = 1
    116 // CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
    117 // CHECK:       ComplexType              = IMAGE_SYM_DTYPE_FUNCTION (2)
    118 // CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)
    119 // CHECK:       NumberOfAuxSymbols       = 0
    120 // CHECK:       AuxillaryData            =
    121 // CHECK:     }
    122 // CHECK:     5 = {
    123 // CHECK:       Name                     = _printf
    124 // CHECK:       Value                    = 0
    125 // CHECK:       SectionNumber            = 0
    126 // CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)
    127 // CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)
    128 // CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)
    129 // CHECK:       NumberOfAuxSymbols       = 0
    130 // CHECK:       AuxillaryData            =
    131 // CHECK:     }
    132 // CHECK:   ]
    133 // CHECK: }
    134