1 // The purpose of this test is to see if the COFF object writer is emitting the
\r
2 // proper relocations for multiple pieces of data in a single data fragment.
\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
17 movl $L_.str0, (%esp)
\r
19 movl $L_.str1, (%esp)
\r
21 movl $L_.str2, (%esp)
\r
36 .asciz "I'm The Last Line."
\r
39 // CHECK: MachineType = IMAGE_FILE_MACHINE_I386 (0x14C)
\r
40 // CHECK: NumberOfSections = 2
\r
41 // CHECK: TimeDateStamp = {{[0-9]+}}
\r
42 // CHECK: PointerToSymbolTable = 0x{{[0-9A-F]+}}
\r
43 // CHECK: NumberOfSymbols = 7
\r
44 // CHECK: SizeOfOptionalHeader = 0
\r
45 // CHECK: Characteristics = 0x0
\r
46 // CHECK: Sections = [
\r
48 // CHECK: Name = .text
\r
49 // CHECK: VirtualSize = 0
\r
50 // CHECK: VirtualAddress = 0
\r
51 // CHECK: SizeOfRawData = {{[0-9]+}}
\r
52 // CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
\r
53 // CHECK: PointerToRelocations = 0x{{[0-9A-F]+}}
\r
54 // CHECK: PointerToLineNumbers = 0x0
\r
55 // CHECK: NumberOfRelocations = 6
\r
56 // CHECK: NumberOfLineNumbers = 0
\r
57 // CHECK: Charateristics = 0x60500020
\r
58 // CHECK: IMAGE_SCN_CNT_CODE
\r
59 // CHECK: IMAGE_SCN_ALIGN_16BYTES
\r
60 // CHECK: IMAGE_SCN_MEM_EXECUTE
\r
61 // CHECK: IMAGE_SCN_MEM_READ
\r
62 // CHECK: SectionData =
\r
63 // CHECK: 83 EC 04 C7 04 24 00 00 - 00 00 E8 00 00 00 00 C7 |.....$..........|
\r
64 // CHECK: 04 24 07 00 00 00 E8 00 - 00 00 00 C7 04 24 10 00 |.$...........$..|
\r
65 // CHECK: 00 00 E8 00 00 00 00 31 - C0 83 C4 04 C3 00 00 00 |.......1........|
\r
66 // CHECK: Relocations = [
\r
68 // CHECK: VirtualAddress = 0x6
\r
69 // CHECK: SymbolTableIndex = 2
\r
70 // CHECK: Type = IMAGE_REL_I386_DIR32 (6)
\r
71 // CHECK: SymbolName = .data
\r
74 // CHECK: VirtualAddress = 0xB
\r
75 // CHECK: SymbolTableIndex = 5
\r
76 // CHECK: Type = IMAGE_REL_I386_REL32 (20)
\r
77 // CHECK: SymbolName = _printf
\r
80 // CHECK: VirtualAddress = 0x12
\r
81 // CHECK: SymbolTableIndex = 2
\r
82 // CHECK: Type = IMAGE_REL_I386_DIR32 (6)
\r
83 // CHECK: SymbolName = .data
\r
86 // CHECK: VirtualAddress = 0x17
\r
87 // CHECK: SymbolTableIndex = 6
\r
88 // CHECK: Type = IMAGE_REL_I386_REL32 (20)
\r
89 // CHECK: SymbolName = _puts
\r
92 // CHECK: VirtualAddress = 0x1E
\r
93 // CHECK: SymbolTableIndex = 2
\r
94 // CHECK: Type = IMAGE_REL_I386_DIR32 (6)
\r
95 // CHECK: SymbolName = .data
\r
98 // CHECK: VirtualAddress = 0x23
\r
99 // CHECK: SymbolTableIndex = 6
\r
100 // CHECK: Type = IMAGE_REL_I386_REL32 (20)
\r
101 // CHECK: SymbolName = _puts
\r
106 // CHECK: Name = .data
\r
107 // CHECK: VirtualSize = 0
\r
108 // CHECK: VirtualAddress = 0
\r
109 // CHECK: SizeOfRawData = {{[0-9]+}}
\r
110 // CHECK: PointerToRawData = 0x{{[0-9A-F]+}}
\r
111 // CHECK: PointerToRelocations = 0x0
\r
112 // CHECK: PointerToLineNumbers = 0x0
\r
113 // CHECK: NumberOfRelocations = 0
\r
114 // CHECK: NumberOfLineNumbers = 0
\r
115 // CHECK: Charateristics = 0xC0500040
\r
116 // CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
\r
117 // CHECK: IMAGE_SCN_ALIGN_16BYTES
\r
118 // CHECK: IMAGE_SCN_MEM_READ
\r
119 // CHECK: IMAGE_SCN_MEM_WRITE
\r
120 // CHECK: SectionData =
\r
121 // CHECK: 48 65 6C 6C 6F 20 00 57 - 6F 72 6C 64 21 00 00 00 |Hello .World!...|
\r
122 // CHECK: 49 27 6D 20 54 68 65 20 - 4C 61 73 74 20 4C 69 6E |I'm The Last Lin|
\r
123 // CHECK: 65 2E 00 |e..|
\r
124 // CHECK: Relocations = None
\r
127 // CHECK: Symbols = [
\r
129 // CHECK: Name = .text
\r
130 // CHECK: Value = 0
\r
131 // CHECK: SectionNumber = 1
\r
132 // CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
\r
133 // CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
\r
134 // CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
\r
135 // CHECK: NumberOfAuxSymbols = 1
\r
136 // CHECK: AuxillaryData =
\r
137 // CHECK: 30 00 00 00 06 00 00 00 - 00 00 00 00 01 00 00 00 |0...............|
\r
138 // CHECK: 00 00 |..|
\r
142 // CHECK: Name = .data
\r
143 // CHECK: Value = 0
\r
144 // CHECK: SectionNumber = 2
\r
145 // CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
\r
146 // CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
\r
147 // CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
\r
148 // CHECK: NumberOfAuxSymbols = 1
\r
149 // CHECK: AuxillaryData =
\r
150 // CHECK: 23 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |#...............|
\r
151 // CHECK: 00 00 |..|
\r
155 // CHECK: Name = _main
\r
156 // CHECK: Value = 0
\r
157 // CHECK: SectionNumber = 1
\r
158 // CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
\r
159 // CHECK: ComplexType = IMAGE_SYM_DTYPE_FUNCTION (2)
\r
160 // CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
\r
161 // CHECK: NumberOfAuxSymbols = 0
\r
162 // CHECK: AuxillaryData =
\r
165 // CHECK: Name = _printf
\r
166 // CHECK: Value = 0
\r
167 // CHECK: SectionNumber = 0
\r
168 // CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
\r
169 // CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
\r
170 // CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
\r
171 // CHECK: NumberOfAuxSymbols = 0
\r
172 // CHECK: AuxillaryData =
\r
176 // CHECK: Name = _puts
\r
177 // CHECK: Value = 0
\r
178 // CHECK: SectionNumber = 0
\r
179 // CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
\r
180 // CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
\r
181 // CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
\r
182 // CHECK: NumberOfAuxSymbols = 0
\r
183 // CHECK: AuxillaryData =
\r