1 // RUN: llvm-mc -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>.
12 movq _foo@GOTPCREL(%rip), %rax
13 pushq _foo@GOTPCREL(%rip)
15 movl _foo+4(%rip), %eax
16 movb $0x12, _foo(%rip)
17 movl $0x12345678, _foo(%rip)
41 // CHECK: ('cputype', 16777223)
42 // CHECK: ('cpusubtype', 3)
43 // CHECK: ('filetype', 1)
44 // CHECK: ('num_load_commands', 1)
45 // CHECK: ('load_commands_size', 256)
47 // CHECK: ('reserved', 0)
48 // CHECK: ('load_commands', [
49 // CHECK: # Load Command 0
50 // CHECK: (('command', 25)
51 // CHECK: ('size', 152)
52 // CHECK: ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
53 // CHECK: ('vm_addr', 0)
54 // CHECK: ('vm_size', 181)
55 // CHECK: ('file_offset', 288)
56 // CHECK: ('file_size', 181)
57 // CHECK: ('maxprot', 7)
58 // CHECK: ('initprot', 7)
59 // CHECK: ('num_sections', 1)
60 // CHECK: ('flags', 0)
61 // CHECK: ('sections', [
63 // CHECK: (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
64 // CHECK: ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
65 // CHECK: ('address', 0)
66 // CHECK: ('size', 181)
67 // CHECK: ('offset', 288)
68 // CHECK: ('alignment', 0)
69 // CHECK: ('reloc_offset', 472)
70 // CHECK: ('num_reloc', 27)
71 // CHECK: ('flags', 0x80000400)
72 // CHECK: ('reserved1', 0)
73 // CHECK: ('reserved2', 0)
74 // CHECK: ('reserved3', 0)
76 // CHECK: ('_relocations', [
77 // CHECK: # Relocation 0
78 // CHECK: (('word-0', 0xa5),
79 // CHECK: ('word-1', 0x5e000003)),
80 // CHECK: # Relocation 1
81 // CHECK: (('word-0', 0xa5),
82 // CHECK: ('word-1', 0xe000000)),
83 // CHECK: # Relocation 2
84 // CHECK: (('word-0', 0x9d),
85 // CHECK: ('word-1', 0x5e000003)),
86 // CHECK: # Relocation 3
87 // CHECK: (('word-0', 0x9d),
88 // CHECK: ('word-1', 0xe000000)),
89 // CHECK: # Relocation 4
90 // CHECK: (('word-0', 0x95),
91 // CHECK: ('word-1', 0xe000003)),
92 // CHECK: # Relocation 5
93 // CHECK: (('word-0', 0x8d),
94 // CHECK: ('word-1', 0xe000003)),
95 // CHECK: # Relocation 6
96 // CHECK: (('word-0', 0x79),
97 // CHECK: ('word-1', 0x8d000003)),
98 // CHECK: # Relocation 7
99 // CHECK: (('word-0', 0x71),
100 // CHECK: ('word-1', 0x7d000003)),
101 // CHECK: # Relocation 8
102 // CHECK: (('word-0', 0x69),
103 // CHECK: ('word-1', 0x6d000003)),
104 // CHECK: # Relocation 9
105 // CHECK: (('word-0', 0x63),
106 // CHECK: ('word-1', 0x1d000003)),
107 // CHECK: # Relocation 10
108 // CHECK: (('word-0', 0x5c),
109 // CHECK: ('word-1', 0x1d000003)),
110 // CHECK: # Relocation 11
111 // CHECK: (('word-0', 0x55),
112 // CHECK: ('word-1', 0x5c000002)),
113 // CHECK: # Relocation 12
114 // CHECK: (('word-0', 0x55),
115 // CHECK: ('word-1', 0xc000000)),
116 // CHECK: # Relocation 13
117 // CHECK: (('word-0', 0x4d),
118 // CHECK: ('word-1', 0x5e000002)),
119 // CHECK: # Relocation 14
120 // CHECK: (('word-0', 0x4d),
121 // CHECK: ('word-1', 0xe000000)),
122 // CHECK: # Relocation 15
123 // CHECK: (('word-0', 0x45),
124 // CHECK: ('word-1', 0x5e000002)),
125 // CHECK: # Relocation 16
126 // CHECK: (('word-0', 0x45),
127 // CHECK: ('word-1', 0xe000000)),
128 // CHECK: # Relocation 17
129 // CHECK: (('word-0', 0x3d),
130 // CHECK: ('word-1', 0xe000000)),
131 // CHECK: # Relocation 18
132 // CHECK: (('word-0', 0x35),
133 // CHECK: ('word-1', 0xe000000)),
134 // CHECK: # Relocation 19
135 // CHECK: (('word-0', 0x2d),
136 // CHECK: ('word-1', 0x8d000000)),
137 // CHECK: # Relocation 20
138 // CHECK: (('word-0', 0x26),
139 // CHECK: ('word-1', 0x6d000000)),
140 // CHECK: # Relocation 21
141 // CHECK: (('word-0', 0x20),
142 // CHECK: ('word-1', 0x1d000000)),
143 // CHECK: # Relocation 22
144 // CHECK: (('word-0', 0x1a),
145 // CHECK: ('word-1', 0x1d000000)),
146 // CHECK: # Relocation 23
147 // CHECK: (('word-0', 0x14),
148 // CHECK: ('word-1', 0x4d000000)),
149 // CHECK: # Relocation 24
150 // CHECK: (('word-0', 0xe),
151 // CHECK: ('word-1', 0x3d000000)),
152 // CHECK: # Relocation 25
153 // CHECK: (('word-0', 0x7),
154 // CHECK: ('word-1', 0x2d000000)),
155 // CHECK: # Relocation 26
156 // CHECK: (('word-0', 0x2),
157 // CHECK: ('word-1', 0x2d000000)),
159 // 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')
162 // CHECK: # Load Command 1
163 // CHECK: (('command', 2)
164 // CHECK: ('size', 24)
165 // CHECK: ('symoff', 688)
166 // CHECK: ('nsyms', 4)
167 // CHECK: ('stroff', 752)
168 // CHECK: ('strsize', 24)
169 // CHECK: ('_string_data', '\x00_foo\x00_baz\x00_bar\x00_prev\x00\x00\x00')
170 // CHECK: ('_symbols', [
172 // CHECK: (('n_strx', 1)
173 // CHECK: ('n_type', 0xe)
174 // CHECK: ('n_sect', 1)
175 // CHECK: ('n_desc', 0)
176 // CHECK: ('n_value', 0)
177 // CHECK: ('_string', '_foo')
180 // CHECK: (('n_strx', 6)
181 // CHECK: ('n_type', 0xe)
182 // CHECK: ('n_sect', 1)
183 // CHECK: ('n_desc', 0)
184 // CHECK: ('n_value', 1)
185 // CHECK: ('_string', '_baz')
188 // CHECK: (('n_strx', 11)
189 // CHECK: ('n_type', 0xe)
190 // CHECK: ('n_sect', 1)
191 // CHECK: ('n_desc', 0)
192 // CHECK: ('n_value', 61)
193 // CHECK: ('_string', '_bar')
196 // CHECK: (('n_strx', 16)
197 // CHECK: ('n_type', 0xe)
198 // CHECK: ('n_sect', 1)
199 // CHECK: ('n_desc', 0)
200 // CHECK: ('n_value', 129)
201 // CHECK: ('_string', '_prev')
205 // CHECK: # Load Command 2
206 // CHECK: (('command', 11)
207 // CHECK: ('size', 80)
208 // CHECK: ('ilocalsym', 0)
209 // CHECK: ('nlocalsym', 4)
210 // CHECK: ('iextdefsym', 4)
211 // CHECK: ('nextdefsym', 0)
212 // CHECK: ('iundefsym', 4)
213 // CHECK: ('nundefsym', 0)
214 // CHECK: ('tocoff', 0)
215 // CHECK: ('ntoc', 0)
216 // CHECK: ('modtaboff', 0)
217 // CHECK: ('nmodtab', 0)
218 // CHECK: ('extrefsymoff', 0)
219 // CHECK: ('nextrefsyms', 0)
220 // CHECK: ('indirectsymoff', 0)
221 // CHECK: ('nindirectsyms', 0)
222 // CHECK: ('extreloff', 0)
223 // CHECK: ('nextrel', 0)
224 // CHECK: ('locreloff', 0)
225 // CHECK: ('nlocrel', 0)
226 // CHECK: ('_indirect_symbols', [