1@ RUN: llvm-mc -triple armv7-linux-eabi -filetype obj -o - %s | llvm-readobj -u \
2@ RUN:   | FileCheck %s
3
4	.syntax unified
5
6	.type save,%function
7	.thumb_func
8save:
9	.fnstart
10	.unwind_raw 4, 0xb1, 0x01
11	push {r0}
12	pop {r0}
13	bx lr
14	.fnend
15
16	.type empty,%function
17	.thumb_func
18empty:
19	.fnstart
20	.unwind_raw 0, 0xb0
21	bx lr
22	.fnend
23
24	.type extended,%function
25	.thumb_func
26extended:
27	.fnstart
28	.unwind_raw 12, 0x9b, 0x40, 0x84, 0x80, 0xb0, 0xb0
29	@ .save {fp, lr}
30	stmfd sp!, {fp, lr}
31	@ .setfp fp, sp, #4
32	add fp, sp, #4
33	@ .pad #8
34	sub sp, sp, #8
35	add sp, sp, #8
36	sub fp, sp, #4
37	ldmfd sp!, {fp, lr}
38	bx lr
39	.fnend
40
41	.type refuse,%function
42	.thumb_func
43refuse:
44	.fnstart
45	.unwind_raw 0, 0x80, 0x00
46	bx lr
47	.fnend
48
49	.type stack_adjust,%function
50	.thumb_func
51stack_adjust:
52	.fnstart
53	.setfp fp, sp, #32
54	.unwind_raw 24, 0xc2
55	.fnend
56
57@ CHECK: UnwindInformation {
58@ CHECK:   UnwindIndexTable {
59@ CHECK:     SectionName: .ARM.exidx
60@ CHECK:     Entries [
61@ CHECK:       Entry {
62@ CHECK:         Model: Compact (Inline)
63@ CHECK:         PersonalityIndex: 0
64@ CHECK:         Opcodes [
65@ CHECK:           0xB1 0x01 ; pop {r0}
66@ CHECK:           0xB0      ; finish
67@ CHECK:         ]
68@ CHECK:       }
69@ CHECK:       Entry {
70@ CHECK:         Model: Compact (Inline)
71@ CHECK:         PersonalityIndex: 0
72@ CHECK:         Opcodes [
73@ CHECK:           0xB0      ; finish
74@ CHECK:           0xB0      ; finish
75@ CHECK:           0xB0      ; finish
76@ CHECK:         ]
77@ CHECK:       }
78@ CHECK:       Entry {
79@ CHECK:         ExceptionHandlingTable: .ARM.extab
80@ CHECK:         Model: Compact
81@ CHECK:         PersonalityIndex: 1
82@ CHECK:         Opcodes [
83@ CHECK:           0x9B      ; vsp = r11
84@ CHECK:           0x40      ; vsp = vsp - 4
85@ CHECK:           0x84 0x80 ; pop {fp, lr}
86@ CHECK:           0xB0      ; finish
87@ CHECK:           0xB0      ; finish
88@ CHECK:         ]
89@ CHECK:       }
90@ CHECK:       Entry {
91@ CHECK:         Model: Compact (Inline)
92@ CHECK:         PersonalityIndex: 0
93@ CHECK:         Opcodes [
94@ CHECK:           0x80 0x00 ; refuse to unwind
95@ CHECK:           0xB0      ; finish
96@ CHECK:         ]
97@ CHECK:       }
98@ CHECK:       Entry {
99@ CHECK:         Model: Compact (Inline)
100@ CHECK:         PersonalityIndex: 0
101@ CHECK:         Opcodes [
102@ CHECK:           0x9B      ; vsp = r11
103@ CHECK:           0x4D      ; vsp = vsp - 56
104@ CHECK:           0xC2      ; pop {wR10, wR11, wR12}
105@ CHECK:         ]
106@ CHECK:       }
107@ CHECK:     ]
108@ CHECK:   }
109@ CHECK: }
110
111