When removing a function from the function set and adding it to deferred, we
[llvm.git] / test / MC / MachO / symbol-indirect.s
blob2412970322bffb8877bf273af42c1ed10772a7d8
1 // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s
3 // FIXME: We are missing a lot of diagnostics on this kind of stuff which the
4 // assembler has.
6 .lazy_symbol_pointer
7 .indirect_symbol sym_lsp_B
8 .long 0
10 .globl sym_lsp_A
11 .indirect_symbol sym_lsp_A
12 .long 0
14 sym_lsp_C:
15 .indirect_symbol sym_lsp_C
16 .long 0
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
24 .indirect_symbol sym_lsp_E
25 .long 0xFA
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
34 .globl sym_lsp_G
35 sym_lsp_G:
36 .indirect_symbol sym_lsp_G
37 .long 0
39 .non_lazy_symbol_pointer
40 .indirect_symbol sym_nlp_B
41 .long 0
43 .globl sym_nlp_A
44 .indirect_symbol sym_nlp_A
45 .long 0
47 sym_nlp_C:
48 .indirect_symbol sym_nlp_C
49 .long 0
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
57 .indirect_symbol sym_nlp_E
58 .long 0xAF
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
67 .globl sym_nlp_G
68 sym_nlp_G:
69 .indirect_symbol sym_nlp_G
70 .long 0
72 // CHECK: ('cputype', 7)
73 // CHECK: ('cpusubtype', 3)
74 // CHECK: ('filetype', 1)
75 // CHECK: ('num_load_commands', 3)
76 // CHECK: ('load_commands_size', 364)
77 // CHECK: ('flag', 0)
78 // CHECK: ('load_commands', [
79 // CHECK: # Load Command 0
80 // CHECK: (('command', 1)
81 // CHECK: ('size', 260)
82 // CHECK: ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
83 // CHECK: ('vm_addr', 0)
84 // CHECK: ('vm_size', 40)
85 // CHECK: ('file_offset', 392)
86 // CHECK: ('file_size', 40)
87 // CHECK: ('maxprot', 7)
88 // CHECK: ('initprot', 7)
89 // CHECK: ('num_sections', 3)
90 // CHECK: ('flags', 0)
91 // CHECK: ('sections', [
92 // CHECK: # Section 0
93 // CHECK: (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
94 // CHECK: ('address', 0)
95 // CHECK: ('size', 0)
96 // CHECK: ('offset', 392)
97 // CHECK: ('alignment', 0)
98 // CHECK: ('reloc_offset', 0)
99 // CHECK: ('num_reloc', 0)
100 // CHECK: ('flags', 0x80000000)
101 // CHECK: ('reserved1', 0)
102 // CHECK: ('reserved2', 0)
103 // CHECK: ),
104 // CHECK: # Section 1
105 // CHECK: (('section_name', '__la_symbol_ptr\x00')
106 // CHECK: ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
107 // CHECK: ('address', 0)
108 // CHECK: ('size', 20)
109 // CHECK: ('offset', 392)
110 // CHECK: ('alignment', 2)
111 // CHECK: ('reloc_offset', 0)
112 // CHECK: ('num_reloc', 0)
113 // CHECK: ('flags', 0x7)
114 // CHECK: ('reserved1', 0)
115 // CHECK: ('reserved2', 0)
116 // CHECK: ),
117 // CHECK: # Section 2
118 // CHECK: (('section_name', '__nl_symbol_ptr\x00')
119 // CHECK: ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
120 // CHECK: ('address', 20)
121 // CHECK: ('size', 20)
122 // CHECK: ('offset', 412)
123 // CHECK: ('alignment', 2)
124 // CHECK: ('reloc_offset', 0)
125 // CHECK: ('num_reloc', 0)
126 // CHECK: ('flags', 0x6)
127 // FIXME: Enable this when fixed!
128 // CHECX: ('reserved1', 5)
129 // CHECK: ('reserved2', 0)
130 // CHECK: ),
131 // CHECK: ])
132 // CHECK: ),
133 // CHECK: # Load Command 1
134 // CHECK: (('command', 2)
135 // CHECK: ('size', 24)
136 // CHECK: ('symoff', 472)
137 // CHECK: ('nsyms', 10)
138 // CHECK: ('stroff', 592)
139 // CHECK: ('strsize', 104)
140 // CHECK: ('_string_data', '\x00sym_lsp_A\x00sym_lsp_G\x00sym_nlp_A\x00sym_nlp_G\x00sym_nlp_B\x00sym_nlp_E\x00sym_lsp_B\x00sym_lsp_E\x00sym_lsp_C\x00sym_nlp_C\x00\x00\x00\x00')
141 // CHECK: ('_symbols', [
142 // CHECK: # Symbol 0
143 // CHECK: (('n_strx', 81)
144 // CHECK: ('n_type', 0xe)
145 // CHECK: ('n_sect', 2)
146 // CHECK: ('n_desc', 0)
147 // CHECK: ('n_value', 8)
148 // CHECK: ('_string', 'sym_lsp_C')
149 // CHECK: ),
150 // CHECK: # Symbol 1
151 // CHECK: (('n_strx', 91)
152 // CHECK: ('n_type', 0xe)
153 // CHECK: ('n_sect', 3)
154 // CHECK: ('n_desc', 0)
155 // CHECK: ('n_value', 28)
156 // CHECK: ('_string', 'sym_nlp_C')
157 // CHECK: ),
158 // CHECK: # Symbol 2
159 // CHECK: (('n_strx', 11)
160 // CHECK: ('n_type', 0xf)
161 // CHECK: ('n_sect', 2)
162 // CHECK: ('n_desc', 0)
163 // CHECK: ('n_value', 16)
164 // CHECK: ('_string', 'sym_lsp_G')
165 // CHECK: ),
166 // CHECK: # Symbol 3
167 // CHECK: (('n_strx', 31)
168 // CHECK: ('n_type', 0xf)
169 // CHECK: ('n_sect', 3)
170 // CHECK: ('n_desc', 0)
171 // CHECK: ('n_value', 36)
172 // CHECK: ('_string', 'sym_nlp_G')
173 // CHECK: ),
174 // CHECK: # Symbol 4
175 // CHECK: (('n_strx', 1)
176 // CHECK: ('n_type', 0x1)
177 // CHECK: ('n_sect', 0)
178 // CHECK: ('n_desc', 0)
179 // CHECK: ('n_value', 0)
180 // CHECK: ('_string', 'sym_lsp_A')
181 // CHECK: ),
182 // CHECK: # Symbol 5
183 // CHECK: (('n_strx', 61)
184 // CHECK: ('n_type', 0x1)
185 // CHECK: ('n_sect', 0)
186 // CHECK: ('n_desc', 1)
187 // CHECK: ('n_value', 0)
188 // CHECK: ('_string', 'sym_lsp_B')
189 // CHECK: ),
190 // CHECK: # Symbol 6
191 // CHECK: (('n_strx', 71)
192 // CHECK: ('n_type', 0x1)
193 // CHECK: ('n_sect', 0)
194 // CHECK: ('n_desc', 1)
195 // CHECK: ('n_value', 0)
196 // CHECK: ('_string', 'sym_lsp_E')
197 // CHECK: ),
198 // CHECK: # Symbol 7
199 // CHECK: (('n_strx', 21)
200 // CHECK: ('n_type', 0x1)
201 // CHECK: ('n_sect', 0)
202 // CHECK: ('n_desc', 0)
203 // CHECK: ('n_value', 0)
204 // CHECK: ('_string', 'sym_nlp_A')
205 // CHECK: ),
206 // CHECK: # Symbol 8
207 // CHECK: (('n_strx', 41)
208 // CHECK: ('n_type', 0x1)
209 // CHECK: ('n_sect', 0)
210 // CHECK: ('n_desc', 0)
211 // CHECK: ('n_value', 0)
212 // CHECK: ('_string', 'sym_nlp_B')
213 // CHECK: ),
214 // CHECK: # Symbol 9
215 // CHECK: (('n_strx', 51)
216 // CHECK: ('n_type', 0x1)
217 // CHECK: ('n_sect', 0)
218 // CHECK: ('n_desc', 0)
219 // CHECK: ('n_value', 0)
220 // CHECK: ('_string', 'sym_nlp_E')
221 // CHECK: ),
222 // CHECK: ])
223 // CHECK: ),
224 // CHECK: # Load Command 2
225 // CHECK: (('command', 11)
226 // CHECK: ('size', 80)
227 // CHECK: ('ilocalsym', 0)
228 // CHECK: ('nlocalsym', 2)
229 // CHECK: ('iextdefsym', 2)
230 // CHECK: ('nextdefsym', 2)
231 // CHECK: ('iundefsym', 4)
232 // CHECK: ('nundefsym', 6)
233 // CHECK: ('tocoff', 0)
234 // CHECK: ('ntoc', 0)
235 // CHECK: ('modtaboff', 0)
236 // CHECK: ('nmodtab', 0)
237 // CHECK: ('extrefsymoff', 0)
238 // CHECK: ('nextrefsyms', 0)
239 // CHECK: ('indirectsymoff', 432)
240 // CHECK: ('nindirectsyms', 10)
241 // CHECK: ('extreloff', 0)
242 // CHECK: ('nextrel', 0)
243 // CHECK: ('locreloff', 0)
244 // CHECK: ('nlocrel', 0)
245 // CHECK: ('_indirect_symbols', [
246 // CHECK: # Indirect Symbol 0
247 // CHECK: (('symbol_index', 0x5),),
248 // CHECK: # Indirect Symbol 1
249 // CHECK: (('symbol_index', 0x4),),
250 // CHECK: # Indirect Symbol 2
251 // CHECK: (('symbol_index', 0x0),),
252 // CHECK: # Indirect Symbol 3
253 // CHECK: (('symbol_index', 0x6),),
254 // CHECK: # Indirect Symbol 4
255 // CHECK: (('symbol_index', 0x2),),
256 // CHECK: # Indirect Symbol 5
257 // CHECK: (('symbol_index', 0x8),),
258 // CHECK: # Indirect Symbol 6
259 // CHECK: (('symbol_index', 0x7),),
260 // CHECK: # Indirect Symbol 7
261 // CHECK: (('symbol_index', 0x80000000),),
262 // CHECK: # Indirect Symbol 8
263 // CHECK: (('symbol_index', 0x9),),
264 // CHECK: # Indirect Symbol 9
265 // CHECK: (('symbol_index', 0x3),),
266 // CHECK: ])
267 // CHECK: ),
268 // CHECK: ])