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 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: 3
     29 // CHECK:   TimeDateStamp: {{[0-9]+}}
     30 // CHECK:   PointerToSymbolTable: 0x{{[0-9A-F]+}}
     31 // CHECK:   SymbolCount: 8
     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: 0x8E1B6D20
     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: 0x2B95CA92
    114 // CHECK:       Number: [[DataNum]]
    115 // CHECK:       Selection: 0x0
    116 // CHECK:     }
    117 // CHECK:   }
    118 // CHECK:   Symbol {
    119 // CHECK:     Name:           _main
    120 // CHECK:     Value:          0
    121 // CHECK:     Section:        .text
    122 // CHECK:     BaseType:       Null
    123 // CHECK:     ComplexType:    Function
    124 // CHECK:     StorageClass:   External
    125 // CHECK:     AuxSymbolCount: 0
    126 // CHECK:   }
    127 // CHECK:   Symbol {
    128 // CHECK:     Name:           _printf
    129 // CHECK:     Value:          0
    130 // CHECK:     Section:        IMAGE_SYM_UNDEFINED (0)
    131 // CHECK:     BaseType:       Null
    132 // CHECK:     ComplexType:    Null
    133 // CHECK:     StorageClass:   External
    134 // CHECK:     AuxSymbolCount: 0
    135 // CHECK:   }
    136 // CHECK: ]
    137