blob: afabeb7cd2e76e50e00f3228fe88f4507afdb666 [file] [log] [blame]
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +00001@ RUN: llvm-mc -triple armv7-linux-eabi -filetype obj -o - %s \
2@ RUN: | llvm-readobj -u | FileCheck %s
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +00003
4 .syntax unified
5
6 .cpu cortex-a8
7 .fpu neon
8
9 .section .personality
10
11 .type __personality,%function
12__personality:
13 .fnstart
14 bkpt
15 .fnend
16
17
18 .section .personality0
19
20 .type personality0,%function
21personality0:
22 .fnstart
23 bx lr
24 .fnend
25
26
27 .section .personality1
28
29 .type personality1,%function
30personality1:
31 .fnstart
32 .pad #0x100
33 sub sp, sp, #0x100
34 .save {r0-r11}
35 push {r0-r11}
36 pop {r0-r11}
37 add sp, sp, #0x100
38 bx lr
39 .fnend
40
41
42 .section .custom_personality
43
44 .type custom_personality,%function
45custom_personality:
46 .fnstart
47 .personality __personality
48 bx lr
49 .fnend
50
51
52 .section .opcodes
53
54 .type opcodes,%function
55opcodes:
56 .fnstart
57 .vsave {d8-d12}
58 vpush {d8-d12}
59 vpop {d8-d12}
60 bx lr
61 .fnend
62
63
64 .section .multiple
65
66 .type function0,%function
67function0:
68 .fnstart
69 bx lr
70 .fnend
71
72 .type function1,%function
73function1:
74 .fnstart
75 .personality __personality
76 bx lr
77 .fnend
78
79 .type function2,%function
80function2:
81 .fnstart
82 bx lr
83 .fnend
84
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +000085 .section .raw
86
87 .type raw,%function
88 .thumb_func
89raw:
90 .fnstart
91 .unwind_raw 12, 0x02
92 .unwind_raw -12, 0x42
93 .unwind_raw 0, 0x80, 0x00
94 .unwind_raw 4, 0x81, 0x00
95 .unwind_raw 4, 0x80, 0x01
96 .unwind_raw 8, 0x80, 0xc0
97 .unwind_raw 12, 0x84, 0xc0
98 .unwind_raw 0, 0x91
99 .unwind_raw 8, 0xa1
100 .unwind_raw 12, 0xa9
101 .unwind_raw 0, 0xb0
102 .unwind_raw 4, 0xb1, 0x01
103 .unwind_raw 0xa04, 0xb2, 0x80, 0x04
104 .unwind_raw 24, 0xb3, 0x12
105 .unwind_raw 24, 0xba
106 .unwind_raw 24, 0xc2
107 .unwind_raw 24, 0xc6, 0x02
108 .unwind_raw 8, 0xc7, 0x03
109 .unwind_raw 24, 0xc8, 0x02
110 .unwind_raw 24, 0xc9, 0x02
111 .unwind_raw 64, 0xd7
112 .fnend
113
114 .section .spare
115
116 .type spare,%function
117spare:
118 .fnstart
119 .unwind_raw 4, 0x00
120 .unwind_raw -4, 0x40
121 .unwind_raw 0, 0x80, 0x00
122 .unwind_raw 4, 0x88, 0x00
123 .unwind_raw 0, 0x91
124 .unwind_raw 0, 0x9d
125 .unwind_raw 0, 0x9f
126 .unwind_raw 0, 0xa0
127 .unwind_raw 0, 0xa8
128 .unwind_raw 0, 0xb0
129 .unwind_raw 0, 0xb1, 0x00
130 .unwind_raw 4, 0xb1, 0x01
131 .unwind_raw 0, 0xb1, 0x10
132 .unwind_raw 0x204, 0xb2, 0x00
133 .unwind_raw 16, 0xb3, 0x00
134 .unwind_raw 0, 0xb4
135 .unwind_raw 16, 0xb8
136 .unwind_raw 4, 0xc0
137 .unwind_raw 4, 0xc6, 0x00
138 .unwind_raw 4, 0xc7, 0x00
139 .unwind_raw 4, 0xc7, 0x01
140 .unwind_raw 0, 0xc7, 0x10
141 .unwind_raw 16, 0xc8, 0x00
142 .unwind_raw 16, 0xc9, 0x00
143 .unwind_raw 0, 0xca
144 .unwind_raw 16, 0xd0
145 .unwind_raw 0, 0xd8
146 .fnend
147
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000148@ CHECK: UnwindInformation {
149@ CHECK: UnwindIndexTable {
150@ CHECK: SectionName: .ARM.exidx.personality
151@ CHECK: Entries [
152@ CHECK: Entry {
153@ CHECK: FunctionAddress: 0x0
154@ CHECK: FunctionName: __personality
155@ CHECK: Model: Compact (Inline)
156@ CHECK: PersonalityIndex: 0
Saleem Abdulrasool5b060a92014-01-09 04:31:18 +0000157@ CHECK: Opcodes [
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +0000158@ CHECK: 0xB0 ; finish
159@ CHECK: 0xB0 ; finish
160@ CHECK: 0xB0 ; finish
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000161@ CHECK: ]
162@ CHECK: }
163@ CHECK: ]
164@ CHECK: }
165@ CHECK: UnwindIndexTable {
166@ CHECK: SectionName: .ARM.exidx.personality0
167@ CHECK: Entries [
168@ CHECK: Entry {
169@ CHECK: FunctionAddress: 0x0
170@ CHECK: FunctionName: personality0
171@ CHECK: Model: Compact (Inline)
172@ CHECK: PersonalityIndex: 0
Saleem Abdulrasool5b060a92014-01-09 04:31:18 +0000173@ CHECK: Opcodes [
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +0000174@ CHECK: 0xB0 ; finish
175@ CHECK: 0xB0 ; finish
176@ CHECK: 0xB0 ; finish
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000177@ CHECK: ]
178@ CHECK: }
179@ CHECK: ]
180@ CHECK: }
181@ CHECK: UnwindIndexTable {
182@ CHECK: SectionName: .ARM.exidx.personality1
183@ CHECK: Entries [
184@ CHECK: Entry {
185@ CHECK: FunctionAddress: 0x0
186@ CHECK: FunctionName: personality1
187@ CHECK: ExceptionHandlingTable: .ARM.extab.personality1
188@ CHECK: TableEntryOffset: 0x0
189@ CHECK: Model: Compact
190@ CHECK: PersonalityIndex: 1
Saleem Abdulrasool5b060a92014-01-09 04:31:18 +0000191@ CHECK: Opcodes [
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +0000192@ CHECK: 0xB1 0x0F ; pop {r0, r1, r2, r3}
193@ CHECK: 0xA7 ; pop {r4, r5, r6, r7, r8, r9, r10, fp}
194@ CHECK: 0x3F ; vsp = vsp + 256
195@ CHECK: 0xB0 ; finish
196@ CHECK: 0xB0 ; finish
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000197@ CHECK: ]
198@ CHECK: }
199@ CHECK: ]
200@ CHECK: }
201@ CHECK: UnwindIndexTable {
202@ CHECK: SectionName: .ARM.exidx.custom_personality
203@ CHECK: Entries [
204@ CHECK: Entry {
205@ CHECK: FunctionAddress: 0x0
206@ CHECK: FunctionName: custom_personality
207@ CHECK: ExceptionHandlingTable: .ARM.extab.custom_personality
208@ CHECK: TableEntryOffset: 0x0
209@ CHECK: Model: Generic
210@ CHECK: PersonalityRoutineAddress: 0x0
211@ CHECK: }
212@ CHECK: ]
213@ CHECK: }
214@ CHECK: UnwindIndexTable {
215@ CHECK: SectionName: .ARM.exidx.opcodes
216@ CHECK: Entries [
217@ CHECK: Entry {
218@ CHECK: FunctionAddress: 0x0
219@ CHECK: FunctionName: opcodes
220@ CHECK: Model: Compact (Inline)
221@ CHECK: PersonalityIndex: 0
Saleem Abdulrasool5b060a92014-01-09 04:31:18 +0000222@ CHECK: Opcodes [
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +0000223@ CHECK: 0xC9 0x84 ; pop {d8, d9, d10, d11, d12}
224@ CHECK: 0xB0 ; finish
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000225@ CHECK: ]
226@ CHECK: }
227@ CHECK: ]
228@ CHECK: }
229@ CHECK: UnwindIndexTable {
230@ CHECK: SectionName: .ARM.exidx.multiple
231@ CHECK: Entries [
232@ CHECK: Entry {
233@ CHECK: FunctionAddress: 0x0
234@ CHECK: FunctionName: function0
235@ CHECK: Model: Compact (Inline)
236@ CHECK: PersonalityIndex: 0
Saleem Abdulrasool5b060a92014-01-09 04:31:18 +0000237@ CHECK: Opcodes [
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +0000238@ CHECK: 0xB0 ; finish
239@ CHECK: 0xB0 ; finish
240@ CHECK: 0xB0 ; finish
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000241@ CHECK: ]
242@ CHECK: }
243@ CHECK: Entry {
244@ CHECK: FunctionAddress: 0x4
245@ CHECK: FunctionName: function1
246@ CHECK: ExceptionHandlingTable: .ARM.extab.multiple
247@ CHECK: Model: Generic
248@ CHECK: PersonalityRoutineAddress: 0x0
249@ CHECK: }
250@ CHECK: Entry {
251@ CHECK: FunctionAddress: 0x8
252@ CHECK: FunctionName: function2
253@ CHECK: Model: Compact (Inline)
254@ CHECK: PersonalityIndex: 0
Saleem Abdulrasool5b060a92014-01-09 04:31:18 +0000255@ CHECK: Opcodes [
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +0000256@ CHECK: 0xB0 ; finish
257@ CHECK: 0xB0 ; finish
258@ CHECK: 0xB0 ; finish
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000259@ CHECK: ]
260@ CHECK: }
261@ CHECK: ]
262@ CHECK: }
Saleem Abdulrasool9f0a21e2014-01-21 02:33:15 +0000263@ CHECK: UnwindIndexTable {
264@ CHECK: SectionName: .ARM.exidx.raw
265@ CHECK: Entries [
266@ CHECK: Opcodes [
267@ CHECK: 0xD7 ; pop {d8, d9, d10, d11, d12, d13, d14, d15}
268@ CHECK: 0xC9 0x02 ; pop {d0, d1, d2}
269@ CHECK: 0xC8 0x02 ; pop {d16, d17, d18}
270@ CHECK: 0xC7 0x03 ; pop {wCGR0, wCGR1}
271@ CHECK: 0xC6 0x02 ; pop {wR0, wR1, wR2}
272@ CHECK: 0xC2 ; pop {wR10, wR11, wR12}
273@ CHECK: 0xBA ; pop {d8, d9, d10}
274@ CHECK: 0xB3 0x12 ; pop {d1, d2, d3}
275@ CHECK: 0xB2 0x80 0x04 ; vsp = vsp + 2564
276@ CHECK: 0xB1 0x01 ; pop {r0}
277@ CHECK: 0xB0 ; finish
278@ CHECK: 0xA9 ; pop {r4, r5, lr}
279@ CHECK: 0xA1 ; pop {r4, r5}
280@ CHECK: 0x91 ; vsp = r1
281@ CHECK: 0x84 0xC0 ; pop {r10, fp, lr}
282@ CHECK: 0x80 0xC0 ; pop {r10, fp}
283@ CHECK: 0x80 0x01 ; pop {r4}
284@ CHECK: 0x81 0x00 ; pop {ip}
285@ CHECK: 0x80 0x00 ; refuse to unwind
286@ CHECK: 0x42 ; vsp = vsp - 12
287@ CHECK: 0x02 ; vsp = vsp + 12
288@ CHECK: ]
289@ CHECK: ]
290@ CHECK: }
291@ CHECK: UnwindIndexTable {
292@ CHECK: SectionName: .ARM.exidx.spare
293@ CHECK: Entries [
294@ CHECK: Opcodes [
295@ CHECK: 0xD8 ; spare
296@ CHECK: 0xD0 ; pop {d8}
297@ CHECK: 0xCA ; spare
298@ CHECK: 0xC9 0x00 ; pop {d0}
299@ CHECK: 0xC8 0x00 ; pop {d16}
300@ CHECK: 0xC7 0x10 ; spare
301@ CHECK: 0xC7 0x01 ; pop {wCGR0}
302@ CHECK: 0xC7 0x00 ; spare
303@ CHECK: 0xC6 0x00 ; pop {wR0}
304@ CHECK: 0xC0 ; pop {wR10}
305@ CHECK: 0xB8 ; pop {d8}
306@ CHECK: 0xB4 ; spare
307@ CHECK: 0xB3 0x00 ; pop {d0}
308@ CHECK: 0xB2 0x00 ; vsp = vsp + 516
309@ CHECK: 0xB1 0x10 ; spare
310@ CHECK: 0xB1 0x01 ; pop {r0}
311@ CHECK: 0xB1 0x00 ; spare
312@ CHECK: 0xB0 ; finish
313@ CHECK: 0xA8 ; pop {r4, lr}
314@ CHECK: 0xA0 ; pop {r4}
315@ CHECK: 0x9F ; reserved (WiMMX MOVrr)
316@ CHECK: 0x9D ; reserved (ARM MOVrr)
317@ CHECK: 0x91 ; vsp = r1
318@ CHECK: 0x88 0x00 ; pop {pc}
319@ CHECK: 0x80 0x00 ; refuse to unwind
320@ CHECK: 0x40 ; vsp = vsp - 4
321@ CHECK: 0x00 ; vsp = vsp + 4
322@ CHECK: ]
323@ CHECK: ]
324@ CHECK: }
Saleem Abdulrasoolbe981ebc2014-01-08 03:28:09 +0000325@ CHECK: }
326