Reapply 222538 and update tests to explicitly request small code model
[oota-llvm.git] / test / MC / ELF / cfi.s
1 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
2 // RUN: -relocation-model=pic -code-model=small \
3 // RUN: | llvm-readobj -s -sr -sd | FileCheck %s
4
5 f1:
6         .cfi_startproc
7         .cfi_lsda 0x3, bar
8         nop
9         .cfi_endproc
10
11 f2:
12         .cfi_startproc
13         .cfi_personality 0x00, foo
14         .cfi_lsda 0x3, bar
15         nop
16         .cfi_endproc
17
18 f3:
19         .cfi_startproc
20         .cfi_lsda 0x3, bar
21         nop
22         .cfi_endproc
23
24 f4:
25         .cfi_startproc
26         .cfi_personality 0x00, foo
27         .cfi_lsda 0x2, bar
28         nop
29         .cfi_endproc
30
31 f5:
32         .cfi_startproc
33         .cfi_personality 0x02, foo
34         nop
35         .cfi_endproc
36
37 f6:
38         .cfi_startproc
39         .cfi_personality 0x03, foo
40         nop
41         .cfi_endproc
42
43 f7:
44         .cfi_startproc
45         .cfi_personality 0x04, foo
46         nop
47         .cfi_endproc
48
49 f8:
50         .cfi_startproc
51         .cfi_personality 0x0a, foo
52         nop
53         .cfi_endproc
54
55 f9:
56         .cfi_startproc
57         .cfi_personality 0x0b, foo
58         nop
59         .cfi_endproc
60
61 f10:
62         .cfi_startproc
63         .cfi_personality 0x0c, foo
64         nop
65         .cfi_endproc
66
67 f11:
68         .cfi_startproc
69         .cfi_personality 0x08, foo
70         nop
71         .cfi_endproc
72
73 f12:
74         .cfi_startproc
75         .cfi_personality 0x10, foo
76         nop
77         .cfi_endproc
78
79 f13:
80         .cfi_startproc
81         .cfi_personality 0x12, foo
82         nop
83         .cfi_endproc
84
85 f14:
86         .cfi_startproc
87         .cfi_personality 0x13, foo
88         nop
89         .cfi_endproc
90
91 f15:
92         .cfi_startproc
93         .cfi_personality 0x14, foo
94         nop
95         .cfi_endproc
96
97 f16:
98         .cfi_startproc
99         .cfi_personality 0x1a, foo
100         nop
101         .cfi_endproc
102
103 f17:
104         .cfi_startproc
105         .cfi_personality 0x1b, foo
106         nop
107         .cfi_endproc
108
109 f18:
110         .cfi_startproc
111         .cfi_personality 0x1c, foo
112         nop
113         .cfi_endproc
114
115 f19:
116         .cfi_startproc
117         .cfi_personality 0x18, foo
118         nop
119         .cfi_endproc
120
121 f20:
122         .cfi_startproc
123         .cfi_personality 0x80, foo
124         nop
125         .cfi_endproc
126
127 f21:
128         .cfi_startproc
129         .cfi_personality 0x82, foo
130         nop
131         .cfi_endproc
132
133 f22:
134         .cfi_startproc
135         .cfi_personality 0x83, foo
136         nop
137         .cfi_endproc
138
139 f23:
140         .cfi_startproc
141         .cfi_personality 0x84, foo
142         nop
143         .cfi_endproc
144
145 f24:
146         .cfi_startproc
147         .cfi_personality 0x8a, foo
148         nop
149         .cfi_endproc
150
151 f25:
152         .cfi_startproc
153         .cfi_personality 0x8b, foo
154         nop
155         .cfi_endproc
156
157 f26:
158         .cfi_startproc
159         .cfi_personality 0x8c, foo
160         nop
161         .cfi_endproc
162
163 f27:
164         .cfi_startproc
165         .cfi_personality 0x88, foo
166         nop
167         .cfi_endproc
168
169 f28:
170         .cfi_startproc
171         .cfi_personality 0x90, foo
172         nop
173         .cfi_endproc
174
175 f29:
176         .cfi_startproc
177         .cfi_personality 0x92, foo
178         nop
179         .cfi_endproc
180
181 f30:
182         .cfi_startproc
183         .cfi_personality 0x93, foo
184         nop
185         .cfi_endproc
186
187 f31:
188         .cfi_startproc
189         .cfi_personality 0x94, foo
190         nop
191         .cfi_endproc
192
193 f32:
194         .cfi_startproc
195         .cfi_personality 0x9a, foo
196         nop
197         .cfi_endproc
198
199 f33:
200         .cfi_startproc
201         .cfi_personality 0x9b, foo
202         nop
203         .cfi_endproc
204
205 f34:
206         .cfi_startproc
207         .cfi_personality 0x9c, foo
208         nop
209         .cfi_endproc
210
211 f36:
212         .cfi_startproc
213         .cfi_personality 0x98, foo
214         nop
215         .cfi_endproc
216
217 f37:
218         .cfi_startproc simple
219         nop
220         .cfi_endproc
221
222 // CHECK:        Section {
223 // CHECK:          Index: 4
224 // CHECK-NEXT:     Name: .eh_frame
225 // CHECK-NEXT:     Type: SHT_PROGBITS
226 // CHECK-NEXT:     Flags [
227 // CHECK-NEXT:       SHF_ALLOC
228 // CHECK-NEXT:     ]
229 // CHECK-NEXT:     Address: 0x0
230 // CHECK-NEXT:     Offset: 0x68
231 // CHECK-NEXT:     Size: 1776
232 // CHECK-NEXT:     Link: 0
233 // CHECK-NEXT:     Info: 0
234 // CHECK-NEXT:     AddressAlignment: 8
235 // CHECK-NEXT:     EntrySize: 0
236 // CHECK-NEXT:     Relocations [
237 // CHECK-NEXT:     ]
238 // CHECK-NEXT:     SectionData (
239 // CHECK-NEXT:       0000: 14000000 00000000 037A4C52 00017810
240 // CHECK-NEXT:       0010: 02031B0C 07089001 14000000 1C000000
241 // CHECK-NEXT:       0020: 00000000 01000000 04000000 00000000
242 // CHECK-NEXT:       0030: 20000000 00000000 037A504C 52000178
243 // CHECK-NEXT:       0040: 100B0000 00000000 00000003 1B0C0708
244 // CHECK-NEXT:       0050: 90010000 14000000 28000000 00000000
245 // CHECK-NEXT:       0060: 01000000 04000000 00000000 14000000
246 // CHECK-NEXT:       0070: 70000000 00000000 01000000 04000000
247 // CHECK-NEXT:       0080: 00000000 20000000 00000000 037A504C
248 // CHECK-NEXT:       0090: 52000178 100B0000 00000000 00000002
249 // CHECK-NEXT:       00A0: 1B0C0708 90010000 10000000 28000000
250 // CHECK-NEXT:       00B0: 00000000 01000000 02000000 18000000
251 // CHECK-NEXT:       00C0: 00000000 037A5052 00017810 04020000
252 // CHECK-NEXT:       00D0: 1B0C0708 90010000 10000000 20000000
253 // CHECK-NEXT:       00E0: 00000000 01000000 00000000 18000000
254 // CHECK-NEXT:       00F0: 00000000 037A5052 00017810 06030000
255 // CHECK-NEXT:       0100: 00001B0C 07089001 10000000 20000000
256 // CHECK-NEXT:       0110: 00000000 01000000 00000000 1C000000
257 // CHECK-NEXT:       0120: 00000000 037A5052 00017810 0A040000
258 // CHECK-NEXT:       0130: 00000000 00001B0C 07089001 10000000
259 // CHECK-NEXT:       0140: 24000000 00000000 01000000 00000000
260 // CHECK-NEXT:       0150: 18000000 00000000 037A5052 00017810
261 // CHECK-NEXT:       0160: 040A0000 1B0C0708 90010000 10000000
262 // CHECK-NEXT:       0170: 20000000 00000000 01000000 00000000
263 // CHECK-NEXT:       0180: 18000000 00000000 037A5052 00017810
264 // CHECK-NEXT:       0190: 060B0000 00001B0C 07089001 10000000
265 // CHECK-NEXT:       01A0: 20000000 00000000 01000000 00000000
266 // CHECK-NEXT:       01B0: 1C000000 00000000 037A5052 00017810
267 // CHECK-NEXT:       01C0: 0A0C0000 00000000 00001B0C 07089001
268 // CHECK-NEXT:       01D0: 10000000 24000000 00000000 01000000
269 // CHECK-NEXT:       01E0: 00000000 1C000000 00000000 037A5052
270 // CHECK-NEXT:       01F0: 00017810 0A080000 00000000 00001B0C
271 // CHECK-NEXT:       0200: 07089001 10000000 24000000 00000000
272 // CHECK-NEXT:       0210: 01000000 00000000 1C000000 00000000
273 // CHECK-NEXT:       0220: 037A5052 00017810 0A100000 00000000
274 // CHECK-NEXT:       0230: 00001B0C 07089001 10000000 24000000
275 // CHECK-NEXT:       0240: 00000000 01000000 00000000 18000000
276 // CHECK-NEXT:       0250: 00000000 037A5052 00017810 04120000
277 // CHECK-NEXT:       0260: 1B0C0708 90010000 10000000 20000000
278 // CHECK-NEXT:       0270: 00000000 01000000 00000000 18000000
279 // CHECK-NEXT:       0280: 00000000 037A5052 00017810 06130000
280 // CHECK-NEXT:       0290: 00001B0C 07089001 10000000 20000000
281 // CHECK-NEXT:       02A0: 00000000 01000000 00000000 1C000000
282 // CHECK-NEXT:       02B0: 00000000 037A5052 00017810 0A140000
283 // CHECK-NEXT:       02C0: 00000000 00001B0C 07089001 10000000
284 // CHECK-NEXT:       02D0: 24000000 00000000 01000000 00000000
285 // CHECK-NEXT:       02E0: 18000000 00000000 037A5052 00017810
286 // CHECK-NEXT:       02F0: 041A0000 1B0C0708 90010000 10000000
287 // CHECK-NEXT:       0300: 20000000 00000000 01000000 00000000
288 // CHECK-NEXT:       0310: 18000000 00000000 037A5052 00017810
289 // CHECK-NEXT:       0320: 061B0000 00001B0C 07089001 10000000
290 // CHECK-NEXT:       0330: 20000000 00000000 01000000 00000000
291 // CHECK-NEXT:       0340: 1C000000 00000000 037A5052 00017810
292 // CHECK-NEXT:       0350: 0A1C0000 00000000 00001B0C 07089001
293 // CHECK-NEXT:       0360: 10000000 24000000 00000000 01000000
294 // CHECK-NEXT:       0370: 00000000 1C000000 00000000 037A5052
295 // CHECK-NEXT:       0380: 00017810 0A180000 00000000 00001B0C
296 // CHECK-NEXT:       0390: 07089001 10000000 24000000 00000000
297 // CHECK-NEXT:       03A0: 01000000 00000000 1C000000 00000000
298 // CHECK-NEXT:       03B0: 037A5052 00017810 0A800000 00000000
299 // CHECK-NEXT:       03C0: 00001B0C 07089001 10000000 24000000
300 // CHECK-NEXT:       03D0: 00000000 01000000 00000000 18000000
301 // CHECK-NEXT:       03E0: 00000000 037A5052 00017810 04820000
302 // CHECK-NEXT:       03F0: 1B0C0708 90010000 10000000 20000000
303 // CHECK-NEXT:       0400: 00000000 01000000 00000000 18000000
304 // CHECK-NEXT:       0410: 00000000 037A5052 00017810 06830000
305 // CHECK-NEXT:       0420: 00001B0C 07089001 10000000 20000000
306 // CHECK-NEXT:       0430: 00000000 01000000 00000000 1C000000
307 // CHECK-NEXT:       0440: 00000000 037A5052 00017810 0A840000
308 // CHECK-NEXT:       0450: 00000000 00001B0C 07089001 10000000
309 // CHECK-NEXT:       0460: 24000000 00000000 01000000 00000000
310 // CHECK-NEXT:       0470: 18000000 00000000 037A5052 00017810
311 // CHECK-NEXT:       0480: 048A0000 1B0C0708 90010000 10000000
312 // CHECK-NEXT:       0490: 20000000 00000000 01000000 00000000
313 // CHECK-NEXT:       04A0: 18000000 00000000 037A5052 00017810
314 // CHECK-NEXT:       04B0: 068B0000 00001B0C 07089001 10000000
315 // CHECK-NEXT:       04C0: 20000000 00000000 01000000 00000000
316 // CHECK-NEXT:       04D0: 1C000000 00000000 037A5052 00017810
317 // CHECK-NEXT:       04E0: 0A8C0000 00000000 00001B0C 07089001
318 // CHECK-NEXT:       04F0: 10000000 24000000 00000000 01000000
319 // CHECK-NEXT:       0500: 00000000 1C000000 00000000 037A5052
320 // CHECK-NEXT:       0510: 00017810 0A880000 00000000 00001B0C
321 // CHECK-NEXT:       0520: 07089001 10000000 24000000 00000000
322 // CHECK-NEXT:       0530: 01000000 00000000 1C000000 00000000
323 // CHECK-NEXT:       0540: 037A5052 00017810 0A900000 00000000
324 // CHECK-NEXT:       0550: 00001B0C 07089001 10000000 24000000
325 // CHECK-NEXT:       0560: 00000000 01000000 00000000 18000000
326 // CHECK-NEXT:       0570: 00000000 037A5052 00017810 04920000
327 // CHECK-NEXT:       0580: 1B0C0708 90010000 10000000 20000000
328 // CHECK-NEXT:       0590: 00000000 01000000 00000000 18000000
329 // CHECK-NEXT:       05A0: 00000000 037A5052 00017810 06930000
330 // CHECK-NEXT:       05B0: 00001B0C 07089001 10000000 20000000
331 // CHECK-NEXT:       05C0: 00000000 01000000 00000000 1C000000
332 // CHECK-NEXT:       05D0: 00000000 037A5052 00017810 0A940000
333 // CHECK-NEXT:       05E0: 00000000 00001B0C 07089001 10000000
334 // CHECK-NEXT:       05F0: 24000000 00000000 01000000 00000000
335 // CHECK-NEXT:       0600: 18000000 00000000 037A5052 00017810
336 // CHECK-NEXT:       0610: 049A0000 1B0C0708 90010000 10000000
337 // CHECK-NEXT:       0620: 20000000 00000000 01000000 00000000
338 // CHECK-NEXT:       0630: 18000000 00000000 037A5052 00017810
339 // CHECK-NEXT:       0640: 069B0000 00001B0C 07089001 10000000
340 // CHECK-NEXT:       0650: 20000000 00000000 01000000 00000000
341 // CHECK-NEXT:       0660: 1C000000 00000000 037A5052 00017810
342 // CHECK-NEXT:       0670: 0A9C0000 00000000 00001B0C 07089001
343 // CHECK-NEXT:       0680: 10000000 24000000 00000000 01000000
344 // CHECK-NEXT:       0690: 00000000 1C000000 00000000 037A5052
345 // CHECK-NEXT:       06A0: 00017810 0A980000 00000000 00001B0C
346 // CHECK-NEXT:       06B0: 07089001 10000000 24000000 00000000
347 // CHECK-NEXT:       06C0: 01000000 00000000 10000000 00000000
348 // CHECK-NEXT:       06D0: 037A5200 01781001 1B000000 10000000
349 // CHECK-NEXT:       06E0: 18000000 00000000 01000000 00000000
350 // CHECK-NEXT:     )
351 // CHECK-NEXT:   }
352
353 // CHECK:        Section {
354 // CHECK:          Index: 5
355 // CHECK-NEXT:     Name: .rela.eh_frame
356 // CHECK-NEXT:     Type: SHT_RELA
357 // CHECK-NEXT:     Flags [
358 // CHECK-NEXT:     ]
359 // CHECK-NEXT:     Address: 0x0
360 // CHECK-NEXT:     Offset: 0xE70
361 // CHECK-NEXT:     Size: 1752
362 // CHECK-NEXT:     Link: 7
363 // CHECK-NEXT:     Info: 4
364 // CHECK-NEXT:     AddressAlignment: 8
365 // CHECK-NEXT:     EntrySize: 24
366 // CHECK-NEXT:     Relocations [
367 // CHECK-NEXT:       0x20  R_X86_64_PC32 .text 0x0
368 // CHECK-NEXT:       0x29  R_X86_64_32   bar   0x0
369 // CHECK-NEXT:       0x43  R_X86_64_64   foo   0x0
370 // CHECK-NEXT:       0x5C  R_X86_64_PC32 .text 0x1
371 // CHECK-NEXT:       0x65  R_X86_64_32   bar   0x0
372 // CHECK-NEXT:       0x74  R_X86_64_PC32 .text 0x2
373 // CHECK-NEXT:       0x7D  R_X86_64_32   bar   0x0
374 // CHECK-NEXT:       0x97  R_X86_64_64   foo   0x0
375 // CHECK-NEXT:       0xB0  R_X86_64_PC32 .text 0x3
376 // CHECK-NEXT:       0xB9  R_X86_64_16   bar   0x0
377 // CHECK-NEXT:       0xCE  R_X86_64_16   foo   0x0
378 // CHECK-NEXT:       0xE0  R_X86_64_PC32 .text 0x4
379 // CHECK-NEXT:       0xFE  R_X86_64_32   foo   0x0
380 // CHECK-NEXT:       0x110 R_X86_64_PC32 .text 0x5
381 // CHECK-NEXT:       0x12E R_X86_64_64   foo   0x0
382 // CHECK-NEXT:       0x144 R_X86_64_PC32 .text 0x6
383 // CHECK-NEXT:       0x162 R_X86_64_16   foo   0x0
384 // CHECK-NEXT:       0x174 R_X86_64_PC32 .text 0x7
385 // CHECK-NEXT:       0x192 R_X86_64_32   foo   0x0
386 // CHECK-NEXT:       0x1A4 R_X86_64_PC32 .text 0x8
387 // CHECK-NEXT:       0x1C2 R_X86_64_64   foo   0x0
388 // CHECK-NEXT:       0x1D8 R_X86_64_PC32 .text 0x9
389 // CHECK-NEXT:       0x1F6 R_X86_64_64   foo   0x0
390 // CHECK-NEXT:       0x20C R_X86_64_PC32 .text 0xA
391 // CHECK-NEXT:       0x22A R_X86_64_PC64 foo   0x0
392 // CHECK-NEXT:       0x240 R_X86_64_PC32 .text 0xB
393 // CHECK-NEXT:       0x25E R_X86_64_PC16 foo   0x0
394 // CHECK-NEXT:       0x270 R_X86_64_PC32 .text 0xC
395 // CHECK-NEXT:       0x28E R_X86_64_PC32 foo   0x0
396 // CHECK-NEXT:       0x2A0 R_X86_64_PC32 .text 0xD
397 // CHECK-NEXT:       0x2BE R_X86_64_PC64 foo   0x0
398 // CHECK-NEXT:       0x2D4 R_X86_64_PC32 .text 0xE
399 // CHECK-NEXT:       0x2F2 R_X86_64_PC16 foo   0x0
400 // CHECK-NEXT:       0x304 R_X86_64_PC32 .text 0xF
401 // CHECK-NEXT:       0x322 R_X86_64_PC32 foo   0x0
402 // CHECK-NEXT:       0x334 R_X86_64_PC32 .text 0x10
403 // CHECK-NEXT:       0x352 R_X86_64_PC64 foo   0x0
404 // CHECK-NEXT:       0x368 R_X86_64_PC32 .text 0x11
405 // CHECK-NEXT:       0x386 R_X86_64_PC64 foo   0x0
406 // CHECK-NEXT:       0x39C R_X86_64_PC32 .text 0x12
407 // CHECK-NEXT:       0x3BA R_X86_64_64   foo   0x0
408 // CHECK-NEXT:       0x3D0 R_X86_64_PC32 .text 0x13
409 // CHECK-NEXT:       0x3EE R_X86_64_16   foo   0x0
410 // CHECK-NEXT:       0x400 R_X86_64_PC32 .text 0x14
411 // CHECK-NEXT:       0x41E R_X86_64_32   foo   0x0
412 // CHECK-NEXT:       0x430 R_X86_64_PC32 .text 0x15
413 // CHECK-NEXT:       0x44E R_X86_64_64   foo   0x0
414 // CHECK-NEXT:       0x464 R_X86_64_PC32 .text 0x16
415 // CHECK-NEXT:       0x482 R_X86_64_16   foo   0x0
416 // CHECK-NEXT:       0x494 R_X86_64_PC32 .text 0x17
417 // CHECK-NEXT:       0x4B2 R_X86_64_32   foo   0x0
418 // CHECK-NEXT:       0x4C4 R_X86_64_PC32 .text 0x18
419 // CHECK-NEXT:       0x4E2 R_X86_64_64   foo   0x0
420 // CHECK-NEXT:       0x4F8 R_X86_64_PC32 .text 0x19
421 // CHECK-NEXT:       0x516 R_X86_64_64   foo   0x0
422 // CHECK-NEXT:       0x52C R_X86_64_PC32 .text 0x1A
423 // CHECK-NEXT:       0x54A R_X86_64_PC64 foo   0x0
424 // CHECK-NEXT:       0x560 R_X86_64_PC32 .text 0x1B
425 // CHECK-NEXT:       0x57E R_X86_64_PC16 foo   0x0
426 // CHECK-NEXT:       0x590 R_X86_64_PC32 .text 0x1C
427 // CHECK-NEXT:       0x5AE R_X86_64_PC32 foo   0x0
428 // CHECK-NEXT:       0x5C0 R_X86_64_PC32 .text 0x1D
429 // CHECK-NEXT:       0x5DE R_X86_64_PC64 foo   0x0
430 // CHECK-NEXT:       0x5F4 R_X86_64_PC32 .text 0x1E
431 // CHECK-NEXT:       0x612 R_X86_64_PC16 foo   0x0
432 // CHECK-NEXT:       0x624 R_X86_64_PC32 .text 0x1F
433 // CHECK-NEXT:       0x642 R_X86_64_PC32 foo   0x0
434 // CHECK-NEXT:       0x654 R_X86_64_PC32 .text 0x20
435 // CHECK-NEXT:       0x672 R_X86_64_PC64 foo   0x0
436 // CHECK-NEXT:       0x688 R_X86_64_PC32 .text 0x21
437 // CHECK-NEXT:       0x6A6 R_X86_64_PC64 foo   0x0
438 // CHECK-NEXT:       0x6BC R_X86_64_PC32 .text 0x22
439 // CHECK-NEXT:       0x6E4 R_X86_64_PC32 .text 0x23
440 // CHECK-NEXT:     ]
441 // CHECK:        }