Taints the non-acquire RMW's store address with the load part
[oota-llvm.git] / test / MC / MachO / symbol-indirect.s
1 // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | llvm-readobj -file-headers -s -r -t -macho-segment -macho-dysymtab -macho-indirect-symbols | FileCheck %s
2
3 // FIXME: We are missing a lot of diagnostics on this kind of stuff which the
4 // assembler has.
5         
6         .lazy_symbol_pointer
7         .indirect_symbol sym_lsp_B
8         .long 0
9         
10         .globl sym_lsp_A
11         .indirect_symbol sym_lsp_A
12         .long 0
13         
14 sym_lsp_C:      
15         .indirect_symbol sym_lsp_C
16         .long 0
17
18 // FIXME: Enable this test once missing llvm-mc support is in place.
19 .if 0
20         .indirect_symbol sym_lsp_D
21         .long sym_lsp_D
22 .endif
23
24         .indirect_symbol sym_lsp_E
25         .long 0xFA
26
27 // FIXME: Enable this test once missing llvm-mc support is in place.
28 .if 0
29 sym_lsp_F = 10
30         .indirect_symbol sym_lsp_F
31         .long 0
32 .endif
33
34         .globl sym_lsp_G
35 sym_lsp_G:
36         .indirect_symbol sym_lsp_G
37         .long 0
38         
39         .non_lazy_symbol_pointer
40         .indirect_symbol sym_nlp_B
41         .long 0
42
43         .globl sym_nlp_A
44         .indirect_symbol sym_nlp_A
45         .long 0
46
47 sym_nlp_C:      
48         .indirect_symbol sym_nlp_C
49         .long 0
50
51 // FIXME: Enable this test once missing llvm-mc support is in place.
52 .if 0
53         .indirect_symbol sym_nlp_D
54         .long sym_nlp_D
55 .endif
56
57         .indirect_symbol sym_nlp_E
58         .long 0xAF
59
60 // FIXME: Enable this test once missing llvm-mc support is in place.
61 .if 0
62 sym_nlp_F = 10
63         .indirect_symbol sym_nlp_F
64         .long 0
65 .endif
66
67         .globl sym_nlp_G
68 sym_nlp_G:
69         .indirect_symbol sym_nlp_G
70         .long 0
71
72 // CHECK: File: <stdin>
73 // CHECK: Format: Mach-O 32-bit i386
74 // CHECK: Arch: i386
75 // CHECK: AddressSize: 32bit
76 // CHECK: MachHeader {
77 // CHECK:   Magic: Magic (0xFEEDFACE)
78 // CHECK:   CpuType: X86 (0x7)
79 // CHECK:   CpuSubType: CPU_SUBTYPE_I386_ALL (0x3)
80 // CHECK:   FileType: Relocatable (0x1)
81 // CHECK:   NumOfLoadCommands: 4
82 // CHECK:   SizeOfLoadCommands: 380
83 // CHECK:   Flags [ (0x0)
84 // CHECK:   ]
85 // CHECK: }
86 // CHECK: Sections [
87 // CHECK:   Section {
88 // CHECK:     Index: 0
89 // CHECK:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
90 // CHECK:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
91 // CHECK:     Address: 0x0
92 // CHECK:     Size: 0x0
93 // CHECK:     Offset: 408
94 // CHECK:     Alignment: 0
95 // CHECK:     RelocationOffset: 0x0
96 // CHECK:     RelocationCount: 0
97 // CHECK:     Type: 0x0
98 // CHECK:     Attributes [ (0x800000)
99 // CHECK:       PureInstructions (0x800000)
100 // CHECK:     ]
101 // CHECK:     Reserved1: 0x0
102 // CHECK:     Reserved2: 0x0
103 // CHECK:   }
104 // CHECK:   Section {
105 // CHECK:     Index: 1
106 // CHECK:     Name: __la_symbol_ptr (5F 5F 6C 61 5F 73 79 6D 62 6F 6C 5F 70 74 72 00)
107 // CHECK:     Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
108 // CHECK:     Address: 0x0
109 // CHECK:     Size: 0x14
110 // CHECK:     Offset: 408
111 // CHECK:     Alignment: 2
112 // CHECK:     RelocationOffset: 0x0
113 // CHECK:     RelocationCount: 0
114 // CHECK:     Type: 0x7
115 // CHECK:     Attributes [ (0x0)
116 // CHECK:     ]
117 // CHECK:     Reserved1: 0x0
118 // CHECK:     Reserved2: 0x0
119 // CHECK:   }
120 // CHECK:   Section {
121 // CHECK:     Index: 2
122 // CHECK:     Name: __nl_symbol_ptr (5F 5F 6E 6C 5F 73 79 6D 62 6F 6C 5F 70 74 72 00)
123 // CHECK:     Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
124 // CHECK:     Address: 0x14
125 // CHECK:     Size: 0x14
126 // CHECK:     Offset: 428
127 // CHECK:     Alignment: 2
128 // CHECK:     RelocationOffset: 0x0
129 // CHECK:     RelocationCount: 0
130 // CHECK:     Type: 0x6
131 // CHECK:     Attributes [ (0x0)
132 // CHECK:     ]
133 // CHECK:     Reserved1: 0x5
134 // CHECK:     Reserved2: 0x0
135 // CHECK:   }
136 // CHECK: ]
137 // CHECK: Relocations [
138 // CHECK: ]
139 // CHECK: Symbols [
140 // CHECK:   Symbol {
141 // CHECK:     Name: sym_lsp_C (41)
142 // CHECK:     Type: Section (0xE)
143 // CHECK:     Section: __la_symbol_ptr (0x2)
144 // CHECK:     RefType: UndefinedNonLazy (0x0)
145 // CHECK:     Flags [ (0x0)
146 // CHECK:     ]
147 // CHECK:     Value: 0x8
148 // CHECK:   }
149 // CHECK:   Symbol {
150 // CHECK:     Name: sym_nlp_C (51)
151 // CHECK:     Type: Section (0xE)
152 // CHECK:     Section: __nl_symbol_ptr (0x3)
153 // CHECK:     RefType: UndefinedNonLazy (0x0)
154 // CHECK:     Flags [ (0x0)
155 // CHECK:     ]
156 // CHECK:     Value: 0x1C
157 // CHECK:   }
158 // CHECK:   Symbol {
159 // CHECK:     Name: sym_lsp_G (1)
160 // CHECK:     Extern
161 // CHECK:     Type: Section (0xE)
162 // CHECK:     Section: __la_symbol_ptr (0x2)
163 // CHECK:     RefType: UndefinedNonLazy (0x0)
164 // CHECK:     Flags [ (0x0)
165 // CHECK:     ]
166 // CHECK:     Value: 0x10
167 // CHECK:   }
168 // CHECK:   Symbol {
169 // CHECK:     Name: sym_nlp_G (11)
170 // CHECK:     Extern
171 // CHECK:     Type: Section (0xE)
172 // CHECK:     Section: __nl_symbol_ptr (0x3)
173 // CHECK:     RefType: UndefinedNonLazy (0x0)
174 // CHECK:     Flags [ (0x0)
175 // CHECK:     ]
176 // CHECK:     Value: 0x24
177 // CHECK:   }
178 // CHECK:   Symbol {
179 // CHECK:     Name: sym_lsp_A (81)
180 // CHECK:     Extern
181 // CHECK:     Type: Undef (0x0)
182 // CHECK:     Section:  (0x0)
183 // CHECK:     RefType: UndefinedNonLazy (0x0)
184 // CHECK:     Flags [ (0x0)
185 // CHECK:     ]
186 // CHECK:     Value: 0x0
187 // CHECK:   }
188 // CHECK:   Symbol {
189 // CHECK:     Name: sym_lsp_B (61)
190 // CHECK:     Extern
191 // CHECK:     Type: Undef (0x0)
192 // CHECK:     Section:  (0x0)
193 // CHECK:     RefType: ReferenceFlagUndefinedLazy (0x1)
194 // CHECK:     Flags [ (0x0)
195 // CHECK:     ]
196 // CHECK:     Value: 0x0
197 // CHECK:   }
198 // CHECK:   Symbol {
199 // CHECK:     Name: sym_lsp_E (21)
200 // CHECK:     Extern
201 // CHECK:     Type: Undef (0x0)
202 // CHECK:     Section:  (0x0)
203 // CHECK:     RefType: ReferenceFlagUndefinedLazy (0x1)
204 // CHECK:     Flags [ (0x0)
205 // CHECK:     ]
206 // CHECK:     Value: 0x0
207 // CHECK:   }
208 // CHECK:   Symbol {
209 // CHECK:     Name: sym_nlp_A (91)
210 // CHECK:     Extern
211 // CHECK:     Type: Undef (0x0)
212 // CHECK:     Section:  (0x0)
213 // CHECK:     RefType: UndefinedNonLazy (0x0)
214 // CHECK:     Flags [ (0x0)
215 // CHECK:     ]
216 // CHECK:     Value: 0x0
217 // CHECK:   }
218 // CHECK:   Symbol {
219 // CHECK:     Name: sym_nlp_B (71)
220 // CHECK:     Extern
221 // CHECK:     Type: Undef (0x0)
222 // CHECK:     Section:  (0x0)
223 // CHECK:     RefType: UndefinedNonLazy (0x0)
224 // CHECK:     Flags [ (0x0)
225 // CHECK:     ]
226 // CHECK:     Value: 0x0
227 // CHECK:   }
228 // CHECK:   Symbol {
229 // CHECK:     Name: sym_nlp_E (31)
230 // CHECK:     Extern
231 // CHECK:     Type: Undef (0x0)
232 // CHECK:     Section:  (0x0)
233 // CHECK:     RefType: UndefinedNonLazy (0x0)
234 // CHECK:     Flags [ (0x0)
235 // CHECK:     ]
236 // CHECK:     Value: 0x0
237 // CHECK:   }
238 // CHECK: ]
239 // CHECK: Indirect Symbols {
240 // CHECK:   Number: 10
241 // CHECK:   Symbols [
242 // CHECK:     Entry {
243 // CHECK:       Entry Index: 0
244 // CHECK:       Symbol Index: 0x5
245 // CHECK:     }
246 // CHECK:     Entry {
247 // CHECK:       Entry Index: 1
248 // CHECK:       Symbol Index: 0x4
249 // CHECK:     }
250 // CHECK:     Entry {
251 // CHECK:       Entry Index: 2
252 // CHECK:       Symbol Index: 0x0
253 // CHECK:     }
254 // CHECK:     Entry {
255 // CHECK:       Entry Index: 3
256 // CHECK:       Symbol Index: 0x6
257 // CHECK:     }
258 // CHECK:     Entry {
259 // CHECK:       Entry Index: 4
260 // CHECK:       Symbol Index: 0x2
261 // CHECK:     }
262 // CHECK:     Entry {
263 // CHECK:       Entry Index: 5
264 // CHECK:       Symbol Index: 0x8
265 // CHECK:     }
266 // CHECK:     Entry {
267 // CHECK:       Entry Index: 6
268 // CHECK:       Symbol Index: 0x7
269 // CHECK:     }
270 // CHECK:     Entry {
271 // CHECK:       Entry Index: 7
272 // CHECK:       Symbol Index: 0x80000000
273 // CHECK:     }
274 // CHECK:     Entry {
275 // CHECK:       Entry Index: 8
276 // CHECK:       Symbol Index: 0x9
277 // CHECK:     }
278 // CHECK:     Entry {
279 // CHECK:       Entry Index: 9
280 // CHECK:       Symbol Index: 0x3
281 // CHECK:     }
282 // CHECK:   ]
283 // CHECK: }
284 // CHECK: Segment {
285 // CHECK:   Cmd: LC_SEGMENT
286 // CHECK:   Name: 
287 // CHECK:   Size: 260
288 // CHECK:   vmaddr: 0x0
289 // CHECK:   vmsize: 0x28
290 // CHECK:   fileoff: 408
291 // CHECK:   filesize: 40
292 // CHECK:   maxprot: rwx
293 // CHECK:   initprot: rwx
294 // CHECK:   nsects: 3
295 // CHECK:   flags: 0x0
296 // CHECK: }
297 // CHECK: Dysymtab {
298 // CHECK:   ilocalsym: 0
299 // CHECK:   nlocalsym: 2
300 // CHECK:   iextdefsym: 2
301 // CHECK:   nextdefsym: 2
302 // CHECK:   iundefsym: 4
303 // CHECK:   nundefsym: 6
304 // CHECK:   tocoff: 0
305 // CHECK:   ntoc: 0
306 // CHECK:   modtaboff: 0
307 // CHECK:   nmodtab: 0
308 // CHECK:   extrefsymoff: 0
309 // CHECK:   nextrefsyms: 0
310 // CHECK:   indirectsymoff: 448
311 // CHECK:   nindirectsyms: 10
312 // CHECK:   extreloff: 0
313 // CHECK:   nextrel: 0
314 // CHECK:   locreloff: 0
315 // CHECK:   nlocrel: 0
316 // CHECK: }