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