[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / MC / MachO / darwin-x86_64-reloc.s
blob32e079879eae5ada2c9539eecccd3315a1025e55
1 // RUN: llvm-mc -n -triple x86_64-apple-darwin9 %s -filetype=obj -o - | llvm-readobj -r --expand-relocs | FileCheck %s
3 // These examples are taken from <mach-o/x86_64/reloc.h>.
5 .data
6 .long 0
8 .text
9 _foo:
10 ret
12 _baz:
13 call _foo
14 call _foo+4
15 movq _foo@GOTPCREL(%rip), %rax
16 pushq _foo@GOTPCREL(%rip)
17 movl _foo(%rip), %eax
18 movl _foo+4(%rip), %eax
19 movb $0x12, _foo(%rip)
20 movl $0x12345678, _foo(%rip)
21 .quad _foo
22 _bar:
23 .quad _foo+4
24 .quad _foo - _bar
25 .quad _foo - _bar + 4
26 .long _foo - _bar
27 leaq L1(%rip), %rax
28 leaq L0(%rip), %rax
29 addl $6,L0(%rip)
30 addw $500,L0(%rip)
31 addl $500,L0(%rip)
33 _prev:
34 .space 12,0x90
35 .quad L1
36 L0:
37 .quad L0
38 L_pc:
39 .quad _foo - L_pc
40 .quad _foo - L1
41 L1:
42 .quad L1 - _prev
44 .data
45 .long _foobar@GOTPCREL+4
46 .long _foo@GOTPCREL+4
48 .section __DWARF,__debug_frame,regular,debug
49 .quad L1
50 .quad _ext_foo
52 // Make sure local label which overlaps with non-local one is assigned to the
53 // right atom.
54 .text
55 _f2:
56 L2_0:
57 addl $0, %eax
58 L2_1:
59 _f3:
60 addl L2_1 - L2_0, %eax
62 .data
63 L4:
64 .long 0
65 .text
66 movl L4(%rip), %eax
68 .section __TEXT,__literal8,8byte_literals
69 .quad 0
70 L5:
71 .quad 0
72 f6:
73 .quad 0
74 L6:
75 .quad 0
77 .text
78 movl L5(%rip), %eax
79 movl f6(%rip), %eax
80 movl L6(%rip), %eax
82 .data
83 .quad L5
84 .quad f6
85 .quad L6
87 .text
88 cmpq $0, _foo@GOTPCREL(%rip)
90 // CHECK: Relocations [
91 // CHECK-NEXT: Section __data {
92 // CHECK-NEXT: Relocation {
93 // CHECK-NEXT: Offset: 0x20
94 // CHECK-NEXT: PCRel: 0
95 // CHECK-NEXT: Length: 3
96 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
97 // CHECK-NEXT: Section: __literal8
98 // CHECK-NEXT: }
99 // CHECK-NEXT: Relocation {
100 // CHECK-NEXT: Offset: 0x18
101 // CHECK-NEXT: PCRel: 0
102 // CHECK-NEXT: Length: 3
103 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
104 // CHECK-NEXT: Symbol: f6
105 // CHECK-NEXT: }
106 // CHECK-NEXT: Relocation {
107 // CHECK-NEXT: Offset: 0x10
108 // CHECK-NEXT: PCRel: 0
109 // CHECK-NEXT: Length: 3
110 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
111 // CHECK-NEXT: Section: __literal8
112 // CHECK-NEXT: }
113 // CHECK-NEXT: Relocation {
114 // CHECK-NEXT: Offset: 0x8
115 // CHECK-NEXT: PCRel: 1
116 // CHECK-NEXT: Length: 2
117 // CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
118 // CHECK-NEXT: Symbol: _foo
119 // CHECK-NEXT: }
120 // CHECK-NEXT: Relocation {
121 // CHECK-NEXT: Offset: 0x4
122 // CHECK-NEXT: PCRel: 1
123 // CHECK-NEXT: Length: 2
124 // CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
125 // CHECK-NEXT: Symbol: _foobar
126 // CHECK-NEXT: }
127 // CHECK-NEXT: }
128 // CHECK-NEXT: Section __text {
129 // CHECK-NEXT: Relocation {
130 // CHECK-NEXT: Offset: 0xDA
131 // CHECK-NEXT: PCRel: 1
132 // CHECK-NEXT: Length: 2
133 // CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
134 // CHECK-NEXT: Symbol: _foo
135 // CHECK-NEXT: }
136 // CHECK-NEXT: Relocation {
137 // CHECK-NEXT: Offset: 0xD3
138 // CHECK-NEXT: PCRel: 1
139 // CHECK-NEXT: Length: 2
140 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
141 // CHECK-NEXT: Section: __literal8
142 // CHECK-NEXT: }
143 // CHECK-NEXT: Relocation {
144 // CHECK-NEXT: Offset: 0xCD
145 // CHECK-NEXT: PCRel: 1
146 // CHECK-NEXT: Length: 2
147 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
148 // CHECK-NEXT: Symbol: f6
149 // CHECK-NEXT: }
150 // CHECK-NEXT: Relocation {
151 // CHECK-NEXT: Offset: 0xC7
152 // CHECK-NEXT: PCRel: 1
153 // CHECK-NEXT: Length: 2
154 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
155 // CHECK-NEXT: Section: __literal8
156 // CHECK-NEXT: }
157 // CHECK-NEXT: Relocation {
158 // CHECK-NEXT: Offset: 0xC1
159 // CHECK-NEXT: PCRel: 1
160 // CHECK-NEXT: Length: 2
161 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
162 // CHECK-NEXT: Section: __data
163 // CHECK-NEXT: }
164 // CHECK-NEXT: Relocation {
165 // CHECK-NEXT: Offset: 0xA5
166 // CHECK-NEXT: PCRel: 0
167 // CHECK-NEXT: Length: 3
168 // CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
169 // CHECK-NEXT: Symbol: _prev
170 // CHECK-NEXT: }
171 // CHECK-NEXT: Relocation {
172 // CHECK-NEXT: Offset: 0xA5
173 // CHECK-NEXT: PCRel: 0
174 // CHECK-NEXT: Length: 3
175 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
176 // CHECK-NEXT: Symbol: _foo
177 // CHECK-NEXT: }
178 // CHECK-NEXT: Relocation {
179 // CHECK-NEXT: Offset: 0x9D
180 // CHECK-NEXT: PCRel: 0
181 // CHECK-NEXT: Length: 3
182 // CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
183 // CHECK-NEXT: Symbol: _prev
184 // CHECK-NEXT: }
185 // CHECK-NEXT: Relocation {
186 // CHECK-NEXT: Offset: 0x9D
187 // CHECK-NEXT: PCRel: 0
188 // CHECK-NEXT: Length: 3
189 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
190 // CHECK-NEXT: Symbol: _foo
191 // CHECK-NEXT: }
192 // CHECK-NEXT: Relocation {
193 // CHECK-NEXT: Offset: 0x95
194 // CHECK-NEXT: PCRel: 0
195 // CHECK-NEXT: Length: 3
196 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
197 // CHECK-NEXT: Symbol: _prev
198 // CHECK-NEXT: }
199 // CHECK-NEXT: Relocation {
200 // CHECK-NEXT: Offset: 0x8D
201 // CHECK-NEXT: PCRel: 0
202 // CHECK-NEXT: Length: 3
203 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
204 // CHECK-NEXT: Symbol: _prev
205 // CHECK-NEXT: }
206 // CHECK-NEXT: Relocation {
207 // CHECK-NEXT: Offset: 0x79
208 // CHECK-NEXT: PCRel: 1
209 // CHECK-NEXT: Length: 2
210 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED_4 (8)
211 // CHECK-NEXT: Symbol: _prev
212 // CHECK-NEXT: }
213 // CHECK-NEXT: Relocation {
214 // CHECK-NEXT: Offset: 0x71
215 // CHECK-NEXT: PCRel: 1
216 // CHECK-NEXT: Length: 2
217 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED_2 (7)
218 // CHECK-NEXT: Symbol: _prev
219 // CHECK-NEXT: }
220 // CHECK-NEXT: Relocation {
221 // CHECK-NEXT: Offset: 0x69
222 // CHECK-NEXT: PCRel: 1
223 // CHECK-NEXT: Length: 2
224 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED_1 (6)
225 // CHECK-NEXT: Symbol: _prev
226 // CHECK-NEXT: }
227 // CHECK-NEXT: Relocation {
228 // CHECK-NEXT: Offset: 0x63
229 // CHECK-NEXT: PCRel: 1
230 // CHECK-NEXT: Length: 2
231 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
232 // CHECK-NEXT: Symbol: _prev
233 // CHECK-NEXT: }
234 // CHECK-NEXT: Relocation {
235 // CHECK-NEXT: Offset: 0x5C
236 // CHECK-NEXT: PCRel: 1
237 // CHECK-NEXT: Length: 2
238 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
239 // CHECK-NEXT: Symbol: _prev
240 // CHECK-NEXT: }
241 // CHECK-NEXT: Relocation {
242 // CHECK-NEXT: Offset: 0x55
243 // CHECK-NEXT: PCRel: 0
244 // CHECK-NEXT: Length: 2
245 // CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
246 // CHECK-NEXT: Symbol: _bar
247 // CHECK-NEXT: }
248 // CHECK-NEXT: Relocation {
249 // CHECK-NEXT: Offset: 0x55
250 // CHECK-NEXT: PCRel: 0
251 // CHECK-NEXT: Length: 2
252 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
253 // CHECK-NEXT: Symbol: _foo
254 // CHECK-NEXT: }
255 // CHECK-NEXT: Relocation {
256 // CHECK-NEXT: Offset: 0x4D
257 // CHECK-NEXT: PCRel: 0
258 // CHECK-NEXT: Length: 3
259 // CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
260 // CHECK-NEXT: Symbol: _bar
261 // CHECK-NEXT: }
262 // CHECK-NEXT: Relocation {
263 // CHECK-NEXT: Offset: 0x4D
264 // CHECK-NEXT: PCRel: 0
265 // CHECK-NEXT: Length: 3
266 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
267 // CHECK-NEXT: Symbol: _foo
268 // CHECK-NEXT: }
269 // CHECK-NEXT: Relocation {
270 // CHECK-NEXT: Offset: 0x45
271 // CHECK-NEXT: PCRel: 0
272 // CHECK-NEXT: Length: 3
273 // CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
274 // CHECK-NEXT: Symbol: _bar
275 // CHECK-NEXT: }
276 // CHECK-NEXT: Relocation {
277 // CHECK-NEXT: Offset: 0x45
278 // CHECK-NEXT: PCRel: 0
279 // CHECK-NEXT: Length: 3
280 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
281 // CHECK-NEXT: Symbol: _foo
282 // CHECK-NEXT: }
283 // CHECK-NEXT: Relocation {
284 // CHECK-NEXT: Offset: 0x3D
285 // CHECK-NEXT: PCRel: 0
286 // CHECK-NEXT: Length: 3
287 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
288 // CHECK-NEXT: Symbol: _foo
289 // CHECK-NEXT: }
290 // CHECK-NEXT: Relocation {
291 // CHECK-NEXT: Offset: 0x35
292 // CHECK-NEXT: PCRel: 0
293 // CHECK-NEXT: Length: 3
294 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
295 // CHECK-NEXT: Symbol: _foo
296 // CHECK-NEXT: }
297 // CHECK-NEXT: Relocation {
298 // CHECK-NEXT: Offset: 0x2D
299 // CHECK-NEXT: PCRel: 1
300 // CHECK-NEXT: Length: 2
301 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED_4 (8)
302 // CHECK-NEXT: Symbol: _foo
303 // CHECK-NEXT: }
304 // CHECK-NEXT: Relocation {
305 // CHECK-NEXT: Offset: 0x26
306 // CHECK-NEXT: PCRel: 1
307 // CHECK-NEXT: Length: 2
308 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED_1 (6)
309 // CHECK-NEXT: Symbol: _foo
310 // CHECK-NEXT: }
311 // CHECK-NEXT: Relocation {
312 // CHECK-NEXT: Offset: 0x20
313 // CHECK-NEXT: PCRel: 1
314 // CHECK-NEXT: Length: 2
315 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
316 // CHECK-NEXT: Symbol: _foo
317 // CHECK-NEXT: }
318 // CHECK-NEXT: Relocation {
319 // CHECK-NEXT: Offset: 0x1A
320 // CHECK-NEXT: PCRel: 1
321 // CHECK-NEXT: Length: 2
322 // CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
323 // CHECK-NEXT: Symbol: _foo
324 // CHECK-NEXT: }
325 // CHECK-NEXT: Relocation {
326 // CHECK-NEXT: Offset: 0x14
327 // CHECK-NEXT: PCRel: 1
328 // CHECK-NEXT: Length: 2
329 // CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
330 // CHECK-NEXT: Symbol: _foo
331 // CHECK-NEXT: }
332 // CHECK-NEXT: Relocation {
333 // CHECK-NEXT: Offset: 0xE
334 // CHECK-NEXT: PCRel: 1
335 // CHECK-NEXT: Length: 2
336 // CHECK-NEXT: Type: X86_64_RELOC_GOT_LOAD (3)
337 // CHECK-NEXT: Symbol: _foo
338 // CHECK-NEXT: }
339 // CHECK-NEXT: Relocation {
340 // CHECK-NEXT: Offset: 0x7
341 // CHECK-NEXT: PCRel: 1
342 // CHECK-NEXT: Length: 2
343 // CHECK-NEXT: Type: X86_64_RELOC_BRANCH (2)
344 // CHECK-NEXT: Symbol: _foo
345 // CHECK-NEXT: }
346 // CHECK-NEXT: Relocation {
347 // CHECK-NEXT: Offset: 0x2
348 // CHECK-NEXT: PCRel: 1
349 // CHECK-NEXT: Length: 2
350 // CHECK-NEXT: Type: X86_64_RELOC_BRANCH (2)
351 // CHECK-NEXT: Symbol: _foo
352 // CHECK-NEXT: }
353 // CHECK-NEXT: }
354 // CHECK-NEXT: Section __debug_frame {
355 // CHECK-NEXT: Relocation {
356 // CHECK-NEXT: Offset: 0x8
357 // CHECK-NEXT: PCRel: 0
358 // CHECK-NEXT: Length: 3
359 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
360 // CHECK-NEXT: Symbol: _ext_foo
361 // CHECK-NEXT: }
362 // CHECK-NEXT: Relocation {
363 // CHECK-NEXT: Offset: 0x0
364 // CHECK-NEXT: PCRel: 0
365 // CHECK-NEXT: Length: 3
366 // CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
367 // CHECK-NEXT: Section: __text
368 // CHECK-NEXT: }
369 // CHECK-NEXT: }
370 // CHECK-NEXT: ]