1 @ RUN
: llvm-mc
-triple armv7-linux-eabi
-filetype obj
-o
- %s \
2 @ RUN
: | llvm-readobj
-u | FileCheck
%s
11 .type __personality,%function
18 .section .personality0
20 .type personality0,%function
27 .section .personality1
29 .type personality1,%function
42 .section .custom_personality
44 .type custom_personality,%function
47 .personality __personality
54 .type opcodes,%function
66 .type function0,%function
72 .type function1,%function
75 .personality __personality
79 .type function2,%function
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
102 .unwind_raw 4, 0xb1, 0x01
103 .unwind_raw 0xa04, 0xb2, 0x80, 0x04
104 .unwind_raw 24, 0xb3, 0x12
107 .unwind_raw 24, 0xc6, 0x02
108 .unwind_raw 8, 0xc7, 0x03
109 .unwind_raw 24, 0xc8, 0x02
110 .unwind_raw 24, 0xc9, 0x02
116 .type spare,%function
121 .unwind_raw 0, 0x80, 0x00
122 .unwind_raw 4, 0x88, 0x00
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
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
148 @ CHECK
: UnwindInformation
{
149 @ CHECK
: UnwindIndexTable
{
150 @ CHECK
: SectionName
: .ARM.exidx.personality
153 @ CHECK
: FunctionAddress
: 0x0
154 @ CHECK
: FunctionName
: __personality
155 @ CHECK
: Model
: Compact
(Inline
)
156 @ CHECK
: PersonalityIndex
: 0
158 @ CHECK
: 0xB0 ; finish
159 @ CHECK
: 0xB0 ; finish
160 @ CHECK
: 0xB0 ; finish
165 @ CHECK
: UnwindIndexTable
{
166 @ CHECK
: SectionName
: .ARM.exidx.personality0
169 @ CHECK
: FunctionAddress
: 0x0
170 @ CHECK
: FunctionName
: personality0
171 @ CHECK
: Model
: Compact
(Inline
)
172 @ CHECK
: PersonalityIndex
: 0
174 @ CHECK
: 0xB0 ; finish
175 @ CHECK
: 0xB0 ; finish
176 @ CHECK
: 0xB0 ; finish
181 @ CHECK
: UnwindIndexTable
{
182 @ CHECK
: SectionName
: .ARM.exidx.personality1
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
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
201 @ CHECK
: UnwindIndexTable
{
202 @ CHECK
: SectionName
: .ARM.exidx.custom_personality
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
214 @ CHECK
: UnwindIndexTable
{
215 @ CHECK
: SectionName
: .ARM.exidx.opcodes
218 @ CHECK
: FunctionAddress
: 0x0
219 @ CHECK
: FunctionName
: opcodes
220 @ CHECK
: Model
: Compact
(Inline
)
221 @ CHECK
: PersonalityIndex
: 0
223 @ CHECK
: 0xC9 0x84 ; pop
{d8
, d9
, d10
, d11
, d12
}
224 @ CHECK
: 0xB0 ; finish
229 @ CHECK
: UnwindIndexTable
{
230 @ CHECK
: SectionName
: .ARM.exidx.multiple
233 @ CHECK
: FunctionAddress
: 0x0
234 @ CHECK
: FunctionName
: function0
235 @ CHECK
: Model
: Compact
(Inline
)
236 @ CHECK
: PersonalityIndex
: 0
238 @ CHECK
: 0xB0 ; finish
239 @ CHECK
: 0xB0 ; finish
240 @ CHECK
: 0xB0 ; finish
244 @ CHECK
: FunctionAddress
: 0x4
245 @ CHECK
: FunctionName
: function1
246 @ CHECK
: ExceptionHandlingTable
: .ARM.extab.multiple
247 @ CHECK
: Model
: Generic
248 @ CHECK
: PersonalityRoutineAddress
: 0x0
251 @ CHECK
: FunctionAddress
: 0x8
252 @ CHECK
: FunctionName
: function2
253 @ CHECK
: Model
: Compact
(Inline
)
254 @ CHECK
: PersonalityIndex
: 0
256 @ CHECK
: 0xB0 ; finish
257 @ CHECK
: 0xB0 ; finish
258 @ CHECK
: 0xB0 ; finish
263 @ CHECK
: UnwindIndexTable
{
264 @ CHECK
: SectionName
: .ARM.exidx.raw
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
291 @ CHECK
: UnwindIndexTable
{
292 @ CHECK
: SectionName
: .ARM.exidx.spare
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