1 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
3 // Test that both % and @ are accepted.
12 // Test that gnu_unique_object is accepted.
13 .type zed,@gnu_unique_object
27 .type ifunc,@gnu_indirect_function
32 .type tls,@gnu_indirect_function
34 // Test that "<type>" is accepted.
37 .type tls_quoted,"tls_object"
39 // Test that "<type>" is accepted.
41 .global tls_upper_case
42 .type tls_upper_case,STT_TLS
44 // Test that .set doesnt downgrade the type:
45 // IFUNC > FUNC > OBJECT > NOTYPE
46 // TLS_OBJECT > OBJECT > NOTYPE
47 // also TLS_OBJECT is incompatible with IFUNC and FUNC
50 .type sym1, @gnu_indirect_function
53 .type alias1, @function
57 .type sym2, @gnu_indirect_function
64 .type sym3, @gnu_indirect_function
92 .type sym7, @gnu_indirect_function
95 .type alias7, @tls_object
102 .type alias8, @tls_object
106 .type sym9, @tls_object
109 .type alias9, @object
113 .type sym10, @tls_object
116 .type alias10, @notype
120 .type sym11, @tls_object
123 .type alias11, @gnu_indirect_function
127 .type sym12, @tls_object
130 .type alias12, @function
135 // CHECK-NEXT: Value: 0x0
136 // CHECK-NEXT: Size: 0
137 // CHECK-NEXT: Binding: Global
138 // CHECK-NEXT: Type: Object
139 // CHECK-NEXT: Other: 0
140 // CHECK-NEXT: Section: .text (0x1)
142 // CHECK-NEXT: Symbol {
143 // CHECK-NEXT: Name: foo
144 // CHECK-NEXT: Value: 0x0
145 // CHECK-NEXT: Size: 0
146 // CHECK-NEXT: Binding: Global
147 // CHECK-NEXT: Type: Function
148 // CHECK-NEXT: Other: 0
149 // CHECK-NEXT: Section: .text (0x1)
151 // CHECK-NEXT: Symbol {
152 // CHECK-NEXT: Name: func
153 // CHECK-NEXT: Value: 0x0
154 // CHECK-NEXT: Size: 0
155 // CHECK-NEXT: Binding: Global
156 // CHECK-NEXT: Type: Function
157 // CHECK-NEXT: Other: 0
158 // CHECK-NEXT: Section: .text (0x1)
160 // CHECK-NEXT: Symbol {
161 // CHECK-NEXT: Name: ifunc
162 // CHECK-NEXT: Value: 0x0
163 // CHECK-NEXT: Size: 0
164 // CHECK-NEXT: Binding: Global
165 // CHECK-NEXT: Type: GNU_IFunc
166 // CHECK-NEXT: Other: 0
167 // CHECK-NEXT: Section: .text (0x1)
169 // CHECK-NEXT: Symbol {
170 // CHECK-NEXT: Name: obj
171 // CHECK-NEXT: Value: 0x0
172 // CHECK-NEXT: Size: 0
173 // CHECK-NEXT: Binding: Global
174 // CHECK-NEXT: Type: Object
175 // CHECK-NEXT: Other: 0
176 // CHECK-NEXT: Section: .text (0x1)
178 // CHECK-NEXT: Symbol {
179 // CHECK-NEXT: Name: sym1
180 // CHECK-NEXT: Value: 0x0
181 // CHECK-NEXT: Size: 0
182 // CHECK-NEXT: Binding: Global (0x1)
183 // CHECK-NEXT: Type: GNU_IFunc (0xA)
184 // CHECK-NEXT: Other: 0
185 // CHECK-NEXT: Section: .text (0x1)
187 // CHECK-NEXT: Symbol {
188 // CHECK-NEXT: Name: sym10
189 // CHECK-NEXT: Value: 0x0
190 // CHECK-NEXT: Size: 0
191 // CHECK-NEXT: Binding: Global (0x1)
192 // CHECK-NEXT: Type: TLS (0x6)
193 // CHECK-NEXT: Other: 0
194 // CHECK-NEXT: Section: .text (0x1)
196 // CHECK-NEXT: Symbol {
197 // CHECK-NEXT: Name: sym11
198 // CHECK-NEXT: Value: 0x0
199 // CHECK-NEXT: Size: 0
200 // CHECK-NEXT: Binding: Global (0x1)
201 // CHECK-NEXT: Type: TLS (0x6)
202 // CHECK-NEXT: Other: 0
203 // CHECK-NEXT: Section: .text (0x1)
205 // CHECK-NEXT: Symbol {
206 // CHECK-NEXT: Name: sym12
207 // CHECK-NEXT: Value: 0x0
208 // CHECK-NEXT: Size: 0
209 // CHECK-NEXT: Binding: Global (0x1)
210 // CHECK-NEXT: Type: TLS (0x6)
211 // CHECK-NEXT: Other: 0
212 // CHECK-NEXT: Section: .text (0x1)
214 // CHECK-NEXT: Symbol {
215 // CHECK-NEXT: Name: sym2
216 // CHECK-NEXT: Value: 0x0
217 // CHECK-NEXT: Size: 0
218 // CHECK-NEXT: Binding: Global (0x1)
219 // CHECK-NEXT: Type: GNU_IFunc (0xA)
220 // CHECK-NEXT: Other: 0
221 // CHECK-NEXT: Section: .text (0x1)
223 // CHECK-NEXT: Symbol {
224 // CHECK-NEXT: Name: sym3
225 // CHECK-NEXT: Value: 0x0
226 // CHECK-NEXT: Size: 0
227 // CHECK-NEXT: Binding: Global (0x1)
228 // CHECK-NEXT: Type: GNU_IFunc (0xA)
229 // CHECK-NEXT: Other: 0
230 // CHECK-NEXT: Section: .text (0x1)
232 // CHECK-NEXT: Symbol {
233 // CHECK-NEXT: Name: sym4
234 // CHECK-NEXT: Value: 0x0
235 // CHECK-NEXT: Size: 0
236 // CHECK-NEXT: Binding: Global (0x1)
237 // CHECK-NEXT: Type: Function (0x2)
238 // CHECK-NEXT: Other: 0
239 // CHECK-NEXT: Section: .text (0x1)
241 // CHECK-NEXT: Symbol {
242 // CHECK-NEXT: Name: sym5
243 // CHECK-NEXT: Value: 0x0
244 // CHECK-NEXT: Size: 0
245 // CHECK-NEXT: Binding: Global (0x1)
246 // CHECK-NEXT: Type: Function (0x2)
247 // CHECK-NEXT: Other: 0
248 // CHECK-NEXT: Section: .text (0x1)
250 // CHECK-NEXT: Symbol {
251 // CHECK-NEXT: Name: sym6
252 // CHECK-NEXT: Value: 0x0
253 // CHECK-NEXT: Size: 0
254 // CHECK-NEXT: Binding: Global (0x1)
255 // CHECK-NEXT: Type: Object (0x1)
256 // CHECK-NEXT: Other: 0
257 // CHECK-NEXT: Section: .text (0x1)
259 // CHECK-NEXT: Symbol {
260 // CHECK-NEXT: Name: sym7
261 // CHECK-NEXT: Value: 0x0
262 // CHECK-NEXT: Size: 0
263 // CHECK-NEXT: Binding: Global (0x1)
264 // CHECK-NEXT: Type: GNU_IFunc (0xA)
265 // CHECK-NEXT: Other: 0
266 // CHECK-NEXT: Section: .text (0x1)
268 // CHECK-NEXT: Symbol {
269 // CHECK-NEXT: Name: sym8
270 // CHECK-NEXT: Value: 0x0
271 // CHECK-NEXT: Size: 0
272 // CHECK-NEXT: Binding: Global (0x1)
273 // CHECK-NEXT: Type: Function (0x2)
274 // CHECK-NEXT: Other: 0
275 // CHECK-NEXT: Section: .text (0x1)
277 // CHECK-NEXT: Symbol {
278 // CHECK-NEXT: Name: sym9
279 // CHECK-NEXT: Value: 0x0
280 // CHECK-NEXT: Size: 0
281 // CHECK-NEXT: Binding: Global (0x1)
282 // CHECK-NEXT: Type: TLS (0x6)
283 // CHECK-NEXT: Other: 0
284 // CHECK-NEXT: Section: .text (0x1)
286 // CHECK-NEXT: Symbol {
287 // CHECK-NEXT: Name: tls
288 // CHECK-NEXT: Value: 0x0
289 // CHECK-NEXT: Size: 0
290 // CHECK-NEXT: Binding: Global
291 // CHECK-NEXT: Type: TLS
292 // CHECK-NEXT: Other: 0
293 // CHECK-NEXT: Section: .text (0x1)
295 // CHECK-NEXT: Symbol {
296 // CHECK-NEXT: Name: tls_quoted
297 // CHECK-NEXT: Value: 0x0
298 // CHECK-NEXT: Size: 0
299 // CHECK-NEXT: Binding: Global
300 // CHECK-NEXT: Type: TLS
301 // CHECK-NEXT: Other: 0
302 // CHECK-NEXT: Section: .text (0x1)
304 // CHECK-NEXT: Symbol {
305 // CHECK-NEXT: Name: tls_upper_case
306 // CHECK-NEXT: Value: 0x0
307 // CHECK-NEXT: Size: 0
308 // CHECK-NEXT: Binding: Global
309 // CHECK-NEXT: Type: TLS
310 // CHECK-NEXT: Other: 0
311 // CHECK-NEXT: Section: .text (0x1)