ELF: Parse types in directives like binutils gas
[oota-llvm.git] / test / MC / ELF / type.s
1 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
2
3 // Test that both % and @ are accepted.
4         .global foo
5         .type foo,%function
6 foo:
7
8         .global bar
9         .type bar,@object
10 bar:
11
12 // Test that gnu_unique_object is accepted.
13         .type zed,@gnu_unique_object
14
15 obj:
16         .global obj
17         .type obj,@object
18         .type obj,@notype
19
20 func:
21         .global func
22         .type func,@function
23         .type func,@object
24
25 ifunc:
26         .global ifunc
27         .type ifunc,@gnu_indirect_function
28
29 tls:
30         .global tls
31         .type tls,@tls_object
32         .type tls,@gnu_indirect_function
33
34 // Test that "<type>" is accepted.
35 tls_quoted:
36         .global tls_quoted
37         .type tls_quoted,"tls_object"
38
39 // Test that "<type>" is accepted.
40 tls_upper_case:
41         .global tls_upper_case
42         .type tls_upper_case,STT_TLS
43
44 // CHECK:        Symbol {
45 // CHECK:          Name: bar
46 // CHECK-NEXT:     Value: 0x0
47 // CHECK-NEXT:     Size: 0
48 // CHECK-NEXT:     Binding: Global
49 // CHECK-NEXT:     Type: Object
50 // CHECK-NEXT:     Other: 0
51 // CHECK-NEXT:     Section: .text (0x1)
52 // CHECK-NEXT:   }
53 // CHECK-NEXT:   Symbol {
54 // CHECK-NEXT:     Name: foo
55 // CHECK-NEXT:     Value: 0x0
56 // CHECK-NEXT:     Size: 0
57 // CHECK-NEXT:     Binding: Global
58 // CHECK-NEXT:     Type: Function
59 // CHECK-NEXT:     Other: 0
60 // CHECK-NEXT:     Section: .text (0x1)
61 // CHECK-NEXT:   }
62 // CHECK-NEXT:   Symbol {
63 // CHECK-NEXT:     Name: func
64 // CHECK-NEXT:     Value: 0x0
65 // CHECK-NEXT:     Size: 0
66 // CHECK-NEXT:     Binding: Global
67 // CHECK-NEXT:     Type: Function
68 // CHECK-NEXT:     Other: 0
69 // CHECK-NEXT:     Section: .text (0x1)
70 // CHECK-NEXT:   }
71 // CHECK-NEXT:   Symbol {
72 // CHECK-NEXT:     Name: ifunc
73 // CHECK-NEXT:     Value: 0x0
74 // CHECK-NEXT:     Size: 0
75 // CHECK-NEXT:     Binding: Global
76 // CHECK-NEXT:     Type: GNU_IFunc
77 // CHECK-NEXT:     Other: 0
78 // CHECK-NEXT:     Section: .text (0x1)
79 // CHECK-NEXT:   }
80 // CHECK-NEXT:   Symbol {
81 // CHECK-NEXT:     Name: obj
82 // CHECK-NEXT:     Value: 0x0
83 // CHECK-NEXT:     Size: 0
84 // CHECK-NEXT:     Binding: Global
85 // CHECK-NEXT:     Type: Object
86 // CHECK-NEXT:     Other: 0
87 // CHECK-NEXT:     Section: .text (0x1)
88 // CHECK-NEXT:   }
89 // CHECK-NEXT:   Symbol {
90 // CHECK-NEXT:     Name: tls
91 // CHECK-NEXT:     Value: 0x0
92 // CHECK-NEXT:     Size: 0
93 // CHECK-NEXT:     Binding: Global
94 // CHECK-NEXT:     Type: TLS
95 // CHECK-NEXT:     Other: 0
96 // CHECK-NEXT:     Section: .text (0x1)
97 // CHECK-NEXT:   }
98 // CHECK-NEXT:   Symbol {
99 // CHECK-NEXT:     Name: tls_quoted
100 // CHECK-NEXT:     Value: 0x0
101 // CHECK-NEXT:     Size: 0
102 // CHECK-NEXT:     Binding: Global
103 // CHECK-NEXT:     Type: TLS
104 // CHECK-NEXT:     Other: 0
105 // CHECK-NEXT:     Section: .text (0x1)
106 // CHECK-NEXT:   }
107 // CHECK-NEXT:   Symbol {
108 // CHECK-NEXT:     Name: tls_upper_case
109 // CHECK-NEXT:     Value: 0x0
110 // CHECK-NEXT:     Size: 0
111 // CHECK-NEXT:     Binding: Global
112 // CHECK-NEXT:     Type: TLS
113 // CHECK-NEXT:     Other: 0
114 // CHECK-NEXT:     Section: .text (0x1)
115 // CHECK-NEXT:   }