[dsymutil] Add an way to iterate over a DebugMapObject symbols.
[oota-llvm.git] / test / MC / ARM / eh-directive-pad.s
1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
2 @ RUN:   | llvm-readobj -s -sd | FileCheck %s
3
4 @ Check for different stack pointer offsets.
5
6 @ The .pad directive will track the stack pointer offsets.  There are several
7 @ ways to encode the stack offsets.  We have to test:
8 @
9 @              offset <  0x00
10 @              offset == 0x00
11 @     0x04  <= offset <= 0x100
12 @     0x104 <= offset <= 0x200
13 @     0x204 <= offset
14
15
16         .syntax unified
17
18 @-------------------------------------------------------------------------------
19 @ TEST1
20 @-------------------------------------------------------------------------------
21         .section        .TEST1
22         .globl  func1
23         .align  2
24         .type   func1,%function
25         .fnstart
26 func1:
27         .pad    #0
28         sub     sp, sp, #0
29         add     sp, sp, #0
30         bx      lr
31         .personality __gxx_personality_v0
32         .handlerdata
33         .fnend
34
35 @-------------------------------------------------------------------------------
36 @ The assembler should emit nothing (will be filled up with finish opcode).
37 @-------------------------------------------------------------------------------
38 @ CHECK: Section {
39 @ CHECK:   Name: .ARM.extab.TEST1
40 @ CHECK:   SectionData (
41 @ CHECK:     0000: 00000000 B0B0B000                    |........|
42 @ CHECK:   )
43 @ CHECK: }
44
45
46
47 @-------------------------------------------------------------------------------
48 @ TEST2
49 @-------------------------------------------------------------------------------
50         .section        .TEST2
51         .globl  func2a
52         .align  2
53         .type   func2a,%function
54         .fnstart
55 func2a:
56         .pad    #0x4
57         sub     sp, sp, #0x4
58         add     sp, sp, #0x4
59         bx      lr
60         .personality __gxx_personality_v0
61         .handlerdata
62         .fnend
63
64         .globl  func2b
65         .align  2
66         .type   func2b,%function
67         .fnstart
68 func2b:
69         .pad    #0x100
70         sub     sp, sp, #0x100
71         add     sp, sp, #0x100
72         bx      lr
73         .personality __gxx_personality_v0
74         .handlerdata
75         .fnend
76
77 @-------------------------------------------------------------------------------
78 @ The assembler should emit ((offset - 4) >> 2).
79 @-------------------------------------------------------------------------------
80 @ CHECK: Section {
81 @ CHECK:   Name: .ARM.extab.TEST2
82 @ CHECK:   SectionData (
83 @ CHECK:     0000: 00000000 B0B00000 00000000 B0B03F00  |..............?.|
84 @ CHECK:   )
85 @ CHECK: }
86
87
88 @-------------------------------------------------------------------------------
89 @ TEST3
90 @-------------------------------------------------------------------------------
91         .section        .TEST3
92         .globl  func3a
93         .align  2
94         .type   func3a,%function
95         .fnstart
96 func3a:
97         .pad    #0x104
98         sub     sp, sp, #0x104
99         add     sp, sp, #0x104
100         bx      lr
101         .personality __gxx_personality_v0
102         .handlerdata
103         .fnend
104
105         .globl  func3b
106         .align  2
107         .type   func3b,%function
108         .fnstart
109 func3b:
110         .pad    #0x200
111         sub     sp, sp, #0x200
112         add     sp, sp, #0x200
113         bx      lr
114         .personality __gxx_personality_v0
115         .handlerdata
116         .fnend
117
118 @-------------------------------------------------------------------------------
119 @ The assembler should emit 0x3F and ((offset - 0x104) >> 2).
120 @-------------------------------------------------------------------------------
121 @ CHECK: Section {
122 @ CHECK:   Name: .ARM.extab.TEST3
123 @ CHECK:   SectionData (
124 @ CHECK:     0000: 00000000 B03F0000 00000000 B03F3F00  |.....?.......??.|
125 @ CHECK:   )
126 @ CHECK: }
127
128
129
130 @-------------------------------------------------------------------------------
131 @ TEST4
132 @-------------------------------------------------------------------------------
133         .section        .TEST4
134         .globl  func4a
135         .align  2
136         .type   func4a,%function
137         .fnstart
138 func4a:
139         .pad    #0x204
140         sub     sp, sp, #0x204
141         add     sp, sp, #0x204
142         bx      lr
143         .personality __gxx_personality_v0
144         .handlerdata
145         .fnend
146
147         .globl  func4b
148         .align  2
149         .type   func4b,%function
150         .fnstart
151 func4b:
152         .pad    #0x580
153         sub     sp, sp, #0x580
154         add     sp, sp, #0x580
155         bx      lr
156         .personality __gxx_personality_v0
157         .handlerdata
158         .fnend
159
160 @-------------------------------------------------------------------------------
161 @ The assembler should emit 0xB2 and the ULEB128 encoding of
162 @ ((offset - 0x204) >> 2).
163 @-------------------------------------------------------------------------------
164 @ CHECK: Section {
165 @ CHECK:   Name: .ARM.extab.TEST4
166 @ CHECK:   SectionData (
167 @ CHECK:     0000: 00000000 B000B200 00000000 01DFB200  |................|
168 @ CHECK:   )
169 @ CHECK: }
170
171
172
173 @-------------------------------------------------------------------------------
174 @ TEST5
175 @-------------------------------------------------------------------------------
176         .section        .TEST5
177         .globl  func4a
178         .align  2
179         .type   func4a,%function
180         .fnstart
181 func5a:
182         .pad    #-0x4
183         add     sp, sp, #0x4
184         sub     sp, sp, #0x4
185         bx      lr
186         .personality __gxx_personality_v0
187         .handlerdata
188         .fnend
189
190         .globl  func5b
191         .align  2
192         .type   func5b,%function
193         .fnstart
194 func5b:
195         .pad    #-0x104
196         add     sp, sp, #0x104
197         sub     sp, sp, #0x4
198         bx      lr
199         .personality __gxx_personality_v0
200         .handlerdata
201         .fnend
202
203         .globl  func5c
204         .align  2
205         .type   func5c,%function
206         .fnstart
207 func5c:
208         .pad    #-0x204
209         add     sp, sp, #0x204
210         sub     sp, sp, #0x4
211         bx      lr
212         .personality __gxx_personality_v0
213         .handlerdata
214         .fnend
215
216 @-------------------------------------------------------------------------------
217 @ The assembler should emit (0x40 | (-offset - 4)) >> 2.  When (-offset - 4)
218 @ is greater than 0x3f, then multiple 0x7f should be emitted.
219 @-------------------------------------------------------------------------------
220 @ CHECK: Section {
221 @ CHECK:   Name: .ARM.extab.TEST5
222 @ CHECK:   SectionData (
223 @ CHECK:     0000: 00000000 B0B04000 00000000 B07F4000  |......@.......@.|
224 @ CHECK:     0010: 00000000 7F7F4000                    |......@.|
225 @ CHECK:   )
226 @ CHECK: }