7d23a05f1adf39bde952d9f240e3bd0c903991d8
[oota-llvm.git] / test / tools / llvm-readobj / arm-unwind.s
1 @ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s | llvm-readobj -u - \
2 @ RUN:   | FileCheck %s
3
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
21 personality0:
22         .fnstart
23         bx lr
24         .fnend
25
26
27         .section .personality1
28
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
40
41
42         .section .custom_personality
43
44         .type custom_personality,%function
45 custom_personality:
46         .fnstart
47         .personality __personality
48         bx lr
49         .fnend
50
51
52         .section .opcodes
53
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
62
63
64         .section .multiple
65
66         .type function0,%function
67 function0:
68         .fnstart
69         bx lr
70         .fnend
71
72         .type function1,%function
73 function1:
74         .fnstart
75         .personality __personality
76         bx lr
77         .fnend
78
79         .type function2,%function
80 function2:
81         .fnstart
82         bx lr
83         .fnend
84
85 @ CHECK: UnwindInformation {
86 @ CHECK:   UnwindIndexTable {
87 @ CHECK:     SectionName: .ARM.exidx.personality
88 @ CHECK:     Entries [
89 @ CHECK:       Entry {
90 @ CHECK:         FunctionAddress: 0x0
91 @ CHECK:         FunctionName: __personality
92 @ CHECK:         Model: Compact (Inline)
93 @ CHECK:         PersonalityIndex: 0
94 @ CHECK:         ByteCode [
95 @ CHECK:           Instruction: 0xB0
96 @ CHECK:           Instruction: 0xB0
97 @ CHECK:           Instruction: 0xB0
98 @ CHECK:         ]
99 @ CHECK:       }
100 @ CHECK:     ]
101 @ CHECK:   }
102 @ CHECK:   UnwindIndexTable {
103 @ CHECK:     SectionName: .ARM.exidx.personality0
104 @ CHECK:     Entries [
105 @ CHECK:       Entry {
106 @ CHECK:         FunctionAddress: 0x0
107 @ CHECK:         FunctionName: personality0
108 @ CHECK:         Model: Compact (Inline)
109 @ CHECK:         PersonalityIndex: 0
110 @ CHECK:         ByteCode [
111 @ CHECK:           Instruction: 0xB0
112 @ CHECK:           Instruction: 0xB0
113 @ CHECK:           Instruction: 0xB0
114 @ CHECK:         ]
115 @ CHECK:       }
116 @ CHECK:     ]
117 @ CHECK:   }
118 @ CHECK:   UnwindIndexTable {
119 @ CHECK:     SectionName: .ARM.exidx.personality1
120 @ CHECK:     Entries [
121 @ CHECK:       Entry {
122 @ CHECK:         FunctionAddress: 0x0
123 @ CHECK:         FunctionName: personality1
124 @ CHECK:         ExceptionHandlingTable: .ARM.extab.personality1
125 @ CHECK:         TableEntryOffset: 0x0
126 @ CHECK:         Model: Compact
127 @ CHECK:         PersonalityIndex: 1
128 @ CHECK:         ByteCode [
129 @ CHECK:           Instruction: 0xB1
130 @ CHECK:           Instruction: 0xF
131 @ CHECK:           Instruction: 0xA7
132 @ CHECK:           Instruction: 0x3F
133 @ CHECK:           Instruction: 0xB0
134 @ CHECK:           Instruction: 0xB0
135 @ CHECK:         ]
136 @ CHECK:       }
137 @ CHECK:     ]
138 @ CHECK:   }
139 @ CHECK:   UnwindIndexTable {
140 @ CHECK:     SectionName: .ARM.exidx.custom_personality
141 @ CHECK:     Entries [
142 @ CHECK:       Entry {
143 @ CHECK:         FunctionAddress: 0x0
144 @ CHECK:         FunctionName: custom_personality
145 @ CHECK:         ExceptionHandlingTable: .ARM.extab.custom_personality
146 @ CHECK:         TableEntryOffset: 0x0
147 @ CHECK:         Model: Generic
148 @ CHECK:         PersonalityRoutineAddress: 0x0
149 @ CHECK:       }
150 @ CHECK:     ]
151 @ CHECK:   }
152 @ CHECK:   UnwindIndexTable {
153 @ CHECK:     SectionName: .ARM.exidx.opcodes
154 @ CHECK:     Entries [
155 @ CHECK:       Entry {
156 @ CHECK:         FunctionAddress: 0x0
157 @ CHECK:         FunctionName: opcodes
158 @ CHECK:         Model: Compact (Inline)
159 @ CHECK:         PersonalityIndex: 0
160 @ CHECK:         ByteCode [
161 @ CHECK:           Instruction: 0xC9
162 @ CHECK:           Instruction: 0x84
163 @ CHECK:           Instruction: 0xB0
164 @ CHECK:         ]
165 @ CHECK:       }
166 @ CHECK:     ]
167 @ CHECK:   }
168 @ CHECK:   UnwindIndexTable {
169 @ CHECK:     SectionName: .ARM.exidx.multiple
170 @ CHECK:     Entries [
171 @ CHECK:       Entry {
172 @ CHECK:         FunctionAddress: 0x0
173 @ CHECK:         FunctionName: function0
174 @ CHECK:         Model: Compact (Inline)
175 @ CHECK:         PersonalityIndex: 0
176 @ CHECK:         ByteCode [
177 @ CHECK:           Instruction: 0xB0
178 @ CHECK:           Instruction: 0xB0
179 @ CHECK:           Instruction: 0xB0
180 @ CHECK:         ]
181 @ CHECK:       }
182 @ CHECK:       Entry {
183 @ CHECK:         FunctionAddress: 0x4
184 @ CHECK:         FunctionName: function1
185 @ CHECK:         ExceptionHandlingTable: .ARM.extab.multiple
186 @ CHECK:         Model: Generic
187 @ CHECK:         PersonalityRoutineAddress: 0x0
188 @ CHECK:       }
189 @ CHECK:       Entry {
190 @ CHECK:         FunctionAddress: 0x8
191 @ CHECK:         FunctionName: function2
192 @ CHECK:         Model: Compact (Inline)
193 @ CHECK:         PersonalityIndex: 0
194 @ CHECK:         ByteCode [
195 @ CHECK:           Instruction: 0xB0
196 @ CHECK:           Instruction: 0xB0
197 @ CHECK:           Instruction: 0xB0
198 @ CHECK:         ]
199 @ CHECK:       }
200 @ CHECK:     ]
201 @ CHECK:   }
202 @ CHECK: }
203