1 // RUN: llvm-mc -n -triple x86_64-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
3 // These examples are taken from <mach-o/x86_64/reloc.h>.
15 movq _foo@GOTPCREL(%rip), %rax
16 pushq _foo@GOTPCREL(%rip)
18 movl _foo+4(%rip), %eax
19 movb $0x12, _foo(%rip)
20 movl $0x12345678, _foo(%rip)
45 .long _foobar@GOTPCREL+4
48 .section __DWARF,__debug_frame,regular,debug
52 // Make sure local label which overlaps with non-local one is assigned to the
60 addl L2_1 - L2_0, %eax
68 .section __TEXT,__literal8,8byte_literals
88 cmpq $0, _foo@GOTPCREL(%rip)
90 // CHECK: ('cputype', 16777223)
91 // CHECK: ('cpusubtype', 3)
92 // CHECK: ('filetype', 1)
93 // CHECK: ('num_load_commands', 1)
94 // CHECK: ('load_commands_size', 496)
96 // CHECK: ('reserved', 0)
97 // CHECK: ('load_commands', [
98 // CHECK: # Load Command 0
99 // CHECK: (('command', 25)
100 // CHECK: ('size', 392)
101 // CHECK: ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
102 // CHECK: ('vm_addr', 0)
103 // CHECK: ('vm_size', 311)
104 // CHECK: ('file_offset', 528)
105 // CHECK: ('file_size', 311)
106 // CHECK: ('maxprot', 7)
107 // CHECK: ('initprot', 7)
108 // CHECK: ('num_sections', 4)
109 // CHECK: ('flags', 0)
110 // CHECK: ('sections', [
111 // CHECK: # Section 0
112 // CHECK: (('section_name', '__data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
113 // CHECK: ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
114 // CHECK: ('address', 0)
115 // CHECK: ('size', 40)
116 // CHECK: ('offset', 528)
117 // CHECK: ('alignment', 0)
118 // CHECK: ('reloc_offset', 840)
119 // CHECK: ('num_reloc', 5)
120 // CHECK: ('flags', 0x0)
121 // CHECK: ('reserved1', 0)
122 // CHECK: ('reserved2', 0)
123 // CHECK: ('reserved3', 0)
125 // CHECK: ('_relocations', [
126 // CHECK: # Relocation 0
127 // CHECK: (('word-0', 0x20),
128 // CHECK: ('word-1', 0x6000004)),
129 // CHECK: # Relocation 1
130 // CHECK: (('word-0', 0x18),
131 // CHECK: ('word-1', 0xe000006)),
132 // CHECK: # Relocation 2
133 // CHECK: (('word-0', 0x10),
134 // CHECK: ('word-1', 0x6000004)),
135 // CHECK: # Relocation 3
136 // CHECK: (('word-0', 0x8),
137 // CHECK: ('word-1', 0x4d000000)),
138 // CHECK: # Relocation 4
139 // CHECK: (('word-0', 0x4),
140 // CHECK: ('word-1', 0x4d000008)),
142 // CHECK: ('_section_data', '\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/\x01\x00\x00\x00\x00\x00\x00')
143 // CHECK: # Section 1
144 // CHECK: (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
145 // CHECK: ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
146 // CHECK: ('address', 40)
147 // CHECK: ('size', 223)
148 // CHECK: ('offset', 568)
149 // CHECK: ('alignment', 0)
150 // CHECK: ('reloc_offset', 880)
151 // CHECK: ('num_reloc', 32)
152 // CHECK: ('flags', 0x80000400)
153 // CHECK: ('reserved1', 0)
154 // CHECK: ('reserved2', 0)
155 // CHECK: ('reserved3', 0)
157 // CHECK: ('_relocations', [
158 // CHECK: # Relocation 0
159 // CHECK: (('word-0', 0xda),
160 // CHECK: ('word-1', 0x4d000000)),
161 // CHECK: # Relocation 1
162 // CHECK: (('word-0', 0xd3),
163 // CHECK: ('word-1', 0x15000004)),
164 // CHECK: # Relocation 2
165 // CHECK: (('word-0', 0xcd),
166 // CHECK: ('word-1', 0x1d000006)),
167 // CHECK: # Relocation 3
168 // CHECK: (('word-0', 0xc7),
169 // CHECK: ('word-1', 0x15000004)),
170 // CHECK: # Relocation 4
171 // CHECK: (('word-0', 0xc1),
172 // CHECK: ('word-1', 0x15000001)),
173 // CHECK: # Relocation 5
174 // CHECK: (('word-0', 0xa5),
175 // CHECK: ('word-1', 0x5e000003)),
176 // CHECK: # Relocation 6
177 // CHECK: (('word-0', 0xa5),
178 // CHECK: ('word-1', 0xe000000)),
179 // CHECK: # Relocation 7
180 // CHECK: (('word-0', 0x9d),
181 // CHECK: ('word-1', 0x5e000003)),
182 // CHECK: # Relocation 8
183 // CHECK: (('word-0', 0x9d),
184 // CHECK: ('word-1', 0xe000000)),
185 // CHECK: # Relocation 9
186 // CHECK: (('word-0', 0x95),
187 // CHECK: ('word-1', 0xe000003)),
188 // CHECK: # Relocation 10
189 // CHECK: (('word-0', 0x8d),
190 // CHECK: ('word-1', 0xe000003)),
191 // CHECK: # Relocation 11
192 // CHECK: (('word-0', 0x79),
193 // CHECK: ('word-1', 0x8d000003)),
194 // CHECK: # Relocation 12
195 // CHECK: (('word-0', 0x71),
196 // CHECK: ('word-1', 0x7d000003)),
197 // CHECK: # Relocation 13
198 // CHECK: (('word-0', 0x69),
199 // CHECK: ('word-1', 0x6d000003)),
200 // CHECK: # Relocation 14
201 // CHECK: (('word-0', 0x63),
202 // CHECK: ('word-1', 0x1d000003)),
203 // CHECK: # Relocation 15
204 // CHECK: (('word-0', 0x5c),
205 // CHECK: ('word-1', 0x1d000003)),
206 // CHECK: # Relocation 16
207 // CHECK: (('word-0', 0x55),
208 // CHECK: ('word-1', 0x5c000002)),
209 // CHECK: # Relocation 17
210 // CHECK: (('word-0', 0x55),
211 // CHECK: ('word-1', 0xc000000)),
212 // CHECK: # Relocation 18
213 // CHECK: (('word-0', 0x4d),
214 // CHECK: ('word-1', 0x5e000002)),
215 // CHECK: # Relocation 19
216 // CHECK: (('word-0', 0x4d),
217 // CHECK: ('word-1', 0xe000000)),
218 // CHECK: # Relocation 20
219 // CHECK: (('word-0', 0x45),
220 // CHECK: ('word-1', 0x5e000002)),
221 // CHECK: # Relocation 21
222 // CHECK: (('word-0', 0x45),
223 // CHECK: ('word-1', 0xe000000)),
224 // CHECK: # Relocation 22
225 // CHECK: (('word-0', 0x3d),
226 // CHECK: ('word-1', 0xe000000)),
227 // CHECK: # Relocation 23
228 // CHECK: (('word-0', 0x35),
229 // CHECK: ('word-1', 0xe000000)),
230 // CHECK: # Relocation 24
231 // CHECK: (('word-0', 0x2d),
232 // CHECK: ('word-1', 0x8d000000)),
233 // CHECK: # Relocation 25
234 // CHECK: (('word-0', 0x26),
235 // CHECK: ('word-1', 0x6d000000)),
236 // CHECK: # Relocation 26
237 // CHECK: (('word-0', 0x20),
238 // CHECK: ('word-1', 0x1d000000)),
239 // CHECK: # Relocation 27
240 // CHECK: (('word-0', 0x1a),
241 // CHECK: ('word-1', 0x1d000000)),
242 // CHECK: # Relocation 28
243 // CHECK: (('word-0', 0x14),
244 // CHECK: ('word-1', 0x4d000000)),
245 // CHECK: # Relocation 29
246 // CHECK: (('word-0', 0xe),
247 // CHECK: ('word-1', 0x3d000000)),
248 // CHECK: # Relocation 30
249 // CHECK: (('word-0', 0x7),
250 // CHECK: ('word-1', 0x2d000000)),
251 // CHECK: # Relocation 31
252 // CHECK: (('word-0', 0x2),
253 // CHECK: ('word-1', 0x2d000000)),
255 // CHECK: ('_section_data', '\xc3\xe8\x00\x00\x00\x00\xe8\x04\x00\x00\x00H\x8b\x05\x00\x00\x00\x00\xff5\x00\x00\x00\x00\x8b\x05\x00\x00\x00\x00\x8b\x05\x04\x00\x00\x00\xc6\x05\xff\xff\xff\xff\x12\xc7\x05\xfc\xff\xff\xffxV4\x12\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00H\x8d\x05,\x00\x00\x00H\x8d\x05\x14\x00\x00\x00\x83\x05\x13\x00\x00\x00\x06f\x81\x05\x12\x00\x00\x00\xf4\x01\x81\x05\x10\x00\x00\x00\xf4\x01\x00\x00\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90,\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\xe4\xff\xff\xff\xff\xff\xff\xff\xd4\xff\xff\xff\xff\xff\xff\xff,\x00\x00\x00\x00\x00\x00\x00\x83\xc0\x00\x03\x04%\x03\x00\x00\x00\x8b\x05\x1f\xff\xff\xff\x8b\x05,\x00\x00\x00\x8b\x05\x00\x00\x00\x00\x8b\x050\x00\x00\x00H\x83=\xff\xff\xff\xff\x00')
256 // CHECK: # Section 2
257 // CHECK: (('section_name', '__debug_frame\x00\x00\x00')
258 // CHECK: ('segment_name', '__DWARF\x00\x00\x00\x00\x00\x00\x00\x00\x00')
259 // CHECK: ('address', 263)
260 // CHECK: ('size', 16)
261 // CHECK: ('offset', 791)
262 // CHECK: ('alignment', 0)
263 // CHECK: ('reloc_offset', 1136)
264 // CHECK: ('num_reloc', 2)
265 // CHECK: ('flags', 0x2000000)
266 // CHECK: ('reserved1', 0)
267 // CHECK: ('reserved2', 0)
268 // CHECK: ('reserved3', 0)
270 // CHECK: ('_relocations', [
271 // CHECK: # Relocation 0
272 // CHECK: (('word-0', 0x8),
273 // CHECK: ('word-1', 0xe000007)),
274 // CHECK: # Relocation 1
275 // CHECK: (('word-0', 0x0),
276 // CHECK: ('word-1', 0x6000002)),
278 // CHECK: ('_section_data', '\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
279 // CHECK: # Section 3
280 // CHECK: (('section_name', '__literal8\x00\x00\x00\x00\x00\x00')
281 // CHECK: ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
282 // CHECK: ('address', 279)
283 // CHECK: ('size', 32)
284 // CHECK: ('offset', 807)
285 // CHECK: ('alignment', 0)
286 // CHECK: ('reloc_offset', 0)
287 // CHECK: ('num_reloc', 0)
288 // CHECK: ('flags', 0x4)
289 // CHECK: ('reserved1', 0)
290 // CHECK: ('reserved2', 0)
291 // CHECK: ('reserved3', 0)
293 // CHECK: ('_relocations', [
295 // CHECK: ('_section_data', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
298 // CHECK: # Load Command 1
299 // CHECK: (('command', 2)
300 // CHECK: ('size', 24)
301 // CHECK: ('symoff', 1152)
302 // CHECK: ('nsyms', 9)
303 // CHECK: ('stroff', 1296)
304 // CHECK: ('strsize', 52)
305 // CHECK: ('_string_data', '\x00_foobar\x00_ext_foo\x00_foo\x00_baz\x00_bar\x00_prev\x00_f2\x00_f3\x00f6\x00\x00\x00')
306 // CHECK: ('_symbols', [
308 // CHECK: (('n_strx', 18)
309 // CHECK: ('n_type', 0xe)
310 // CHECK: ('n_sect', 2)
311 // CHECK: ('n_desc', 0)
312 // CHECK: ('n_value', 40)
313 // CHECK: ('_string', '_foo')
316 // CHECK: (('n_strx', 23)
317 // CHECK: ('n_type', 0xe)
318 // CHECK: ('n_sect', 2)
319 // CHECK: ('n_desc', 0)
320 // CHECK: ('n_value', 41)
321 // CHECK: ('_string', '_baz')
324 // CHECK: (('n_strx', 28)
325 // CHECK: ('n_type', 0xe)
326 // CHECK: ('n_sect', 2)
327 // CHECK: ('n_desc', 0)
328 // CHECK: ('n_value', 101)
329 // CHECK: ('_string', '_bar')
332 // CHECK: (('n_strx', 33)
333 // CHECK: ('n_type', 0xe)
334 // CHECK: ('n_sect', 2)
335 // CHECK: ('n_desc', 0)
336 // CHECK: ('n_value', 169)
337 // CHECK: ('_string', '_prev')
340 // CHECK: (('n_strx', 39)
341 // CHECK: ('n_type', 0xe)
342 // CHECK: ('n_sect', 2)
343 // CHECK: ('n_desc', 0)
344 // CHECK: ('n_value', 221)
345 // CHECK: ('_string', '_f2')
348 // CHECK: (('n_strx', 43)
349 // CHECK: ('n_type', 0xe)
350 // CHECK: ('n_sect', 2)
351 // CHECK: ('n_desc', 0)
352 // CHECK: ('n_value', 224)
353 // CHECK: ('_string', '_f3')
356 // CHECK: (('n_strx', 47)
357 // CHECK: ('n_type', 0xe)
358 // CHECK: ('n_sect', 4)
359 // CHECK: ('n_desc', 0)
360 // CHECK: ('n_value', 295)
361 // CHECK: ('_string', 'f6')
364 // CHECK: (('n_strx', 9)
365 // CHECK: ('n_type', 0x1)
366 // CHECK: ('n_sect', 0)
367 // CHECK: ('n_desc', 0)
368 // CHECK: ('n_value', 0)
369 // CHECK: ('_string', '_ext_foo')
372 // CHECK: (('n_strx', 1)
373 // CHECK: ('n_type', 0x1)
374 // CHECK: ('n_sect', 0)
375 // CHECK: ('n_desc', 0)
376 // CHECK: ('n_value', 0)
377 // CHECK: ('_string', '_foobar')
381 // CHECK: # Load Command 2
382 // CHECK: (('command', 11)
383 // CHECK: ('size', 80)
384 // CHECK: ('ilocalsym', 0)
385 // CHECK: ('nlocalsym', 7)
386 // CHECK: ('iextdefsym', 7)
387 // CHECK: ('nextdefsym', 0)
388 // CHECK: ('iundefsym', 7)
389 // CHECK: ('nundefsym', 2)
390 // CHECK: ('tocoff', 0)
391 // CHECK: ('ntoc', 0)
392 // CHECK: ('modtaboff', 0)
393 // CHECK: ('nmodtab', 0)
394 // CHECK: ('extrefsymoff', 0)
395 // CHECK: ('nextrefsyms', 0)
396 // CHECK: ('indirectsymoff', 0)
397 // CHECK: ('nindirectsyms', 0)
398 // CHECK: ('extreloff', 0)
399 // CHECK: ('nextrel', 0)
400 // CHECK: ('locreloff', 0)
401 // CHECK: ('nlocrel', 0)
402 // CHECK: ('_indirect_symbols', [