Revert r354244 "[DAGCombiner] Eliminate dead stores to stack."
[llvm-complete.git] / test / tools / llvm-readobj / ARM / unwind.s
blobafabeb7cd2e76e50e00f3228fe88f4507afdb666
1 @ RUN: llvm-mc -triple armv7-linux-eabi -filetype obj -o - %s \
2 @ RUN: | llvm-readobj -u | FileCheck %s
4 .syntax unified
6 .cpu cortex-a8
7 .fpu neon
9 .section .personality
11 .type __personality,%function
12 __personality:
13 .fnstart
14 bkpt
15 .fnend
18 .section .personality0
20 .type personality0,%function
21 personality0:
22 .fnstart
23 bx lr
24 .fnend
27 .section .personality1
29 .type personality1,%function
30 personality1:
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
42 .section .custom_personality
44 .type custom_personality,%function
45 custom_personality:
46 .fnstart
47 .personality __personality
48 bx lr
49 .fnend
52 .section .opcodes
54 .type opcodes,%function
55 opcodes:
56 .fnstart
57 .vsave {d8-d12}
58 vpush {d8-d12}
59 vpop {d8-d12}
60 bx lr
61 .fnend
64 .section .multiple
66 .type function0,%function
67 function0:
68 .fnstart
69 bx lr
70 .fnend
72 .type function1,%function
73 function1:
74 .fnstart
75 .personality __personality
76 bx lr
77 .fnend
79 .type function2,%function
80 function2:
81 .fnstart
82 bx lr
83 .fnend
85 .section .raw
87 .type raw,%function
88 .thumb_func
89 raw:
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
114 .section .spare
116 .type spare,%function
117 spare:
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
148 @ 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
157 @ CHECK: Opcodes [
158 @ CHECK: 0xB0 ; finish
159 @ CHECK: 0xB0 ; finish
160 @ CHECK: 0xB0 ; finish
161 @ 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
173 @ CHECK: Opcodes [
174 @ CHECK: 0xB0 ; finish
175 @ CHECK: 0xB0 ; finish
176 @ CHECK: 0xB0 ; finish
177 @ 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
191 @ CHECK: Opcodes [
192 @ 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
197 @ 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
222 @ CHECK: Opcodes [
223 @ CHECK: 0xC9 0x84 ; pop {d8, d9, d10, d11, d12}
224 @ CHECK: 0xB0 ; finish
225 @ 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
237 @ CHECK: Opcodes [
238 @ CHECK: 0xB0 ; finish
239 @ CHECK: 0xB0 ; finish
240 @ CHECK: 0xB0 ; finish
241 @ 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
255 @ CHECK: Opcodes [
256 @ CHECK: 0xB0 ; finish
257 @ CHECK: 0xB0 ; finish
258 @ CHECK: 0xB0 ; finish
259 @ CHECK: ]
260 @ CHECK: }
261 @ CHECK: ]
262 @ CHECK: }
263 @ 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: }
325 @ CHECK: }