1 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
3 // This is a long test that checks that the aliases created by weakref are
4 // never in the symbol table and that the only case it causes a symbol to
5 // be output as a weak undefined symbol is if that variable is not defined
6 // in this file and all the references to it are done via the alias.
73 // CHECK-NEXT: Symbol {
74 // CHECK-NEXT: Name: (0)
75 // CHECK-NEXT: Value: 0x0
76 // CHECK-NEXT: Size: 0
77 // CHECK-NEXT: Binding: Local (0x0)
78 // CHECK-NEXT: Type: None (0x0)
79 // CHECK-NEXT: Other: 0
80 // CHECK-NEXT: Section: (0x0)
82 // CHECK-NEXT: Symbol {
83 // CHECK-NEXT: Name: bar6 (21)
84 // CHECK-NEXT: Value: 0x18
85 // CHECK-NEXT: Size: 0
86 // CHECK-NEXT: Binding: Local
87 // CHECK-NEXT: Type: None
88 // CHECK-NEXT: Other: 0
89 // CHECK-NEXT: Section: .text (0x1)
91 // CHECK-NEXT: Symbol {
92 // CHECK-NEXT: Name: bar7 (26)
93 // CHECK-NEXT: Value: 0x18
94 // CHECK-NEXT: Size: 0
95 // CHECK-NEXT: Binding: Local
96 // CHECK-NEXT: Type: None
97 // CHECK-NEXT: Other: 0
98 // CHECK-NEXT: Section: .text (0x1)
100 // CHECK-NEXT: Symbol {
101 // CHECK-NEXT: Name: bar8 (31)
102 // CHECK-NEXT: Value: 0x1C
103 // CHECK-NEXT: Size: 0
104 // CHECK-NEXT: Binding: Local
105 // CHECK-NEXT: Type: None
106 // CHECK-NEXT: Other: 0
107 // CHECK-NEXT: Section: .text (0x1)
109 // CHECK-NEXT: Symbol {
110 // CHECK-NEXT: Name: bar9 (36)
111 // CHECK-NEXT: Value: 0x20
112 // CHECK-NEXT: Size: 0
113 // CHECK-NEXT: Binding: Local
114 // CHECK-NEXT: Type: None
115 // CHECK-NEXT: Other: 0
116 // CHECK-NEXT: Section: .text (0x1)
118 // CHECK-NEXT: Symbol {
119 // CHECK-NEXT: Name: .text (0)
120 // CHECK-NEXT: Value: 0x0
121 // CHECK-NEXT: Size: 0
122 // CHECK-NEXT: Binding: Local
123 // CHECK-NEXT: Type: Section
124 // CHECK-NEXT: Other: 0
125 // CHECK-NEXT: Section: .text (0x1)
127 // CHECK-NEXT: Symbol {
128 // CHECK-NEXT: Name: .data (0)
129 // CHECK-NEXT: Value: 0x0
130 // CHECK-NEXT: Size: 0
131 // CHECK-NEXT: Binding: Local
132 // CHECK-NEXT: Type: Section
133 // CHECK-NEXT: Other: 0
134 // CHECK-NEXT: Section: .data (0x3)
136 // CHECK-NEXT: Symbol {
137 // CHECK-NEXT: Name: .bss (0)
138 // CHECK-NEXT: Value: 0x0
139 // CHECK-NEXT: Size: 0
140 // CHECK-NEXT: Binding: Local
141 // CHECK-NEXT: Type: Section
142 // CHECK-NEXT: Other: 0
143 // CHECK-NEXT: Section: .bss (0x4)
145 // CHECK-NEXT: Symbol {
146 // CHECK-NEXT: Name: bar10 (41)
147 // CHECK-NEXT: Value: 0x28
148 // CHECK-NEXT: Size: 0
149 // CHECK-NEXT: Binding: Global
150 // CHECK-NEXT: Type: None
151 // CHECK-NEXT: Other: 0
152 // CHECK-NEXT: Section: .text (0x1)
154 // CHECK-NEXT: Symbol {
155 // CHECK-NEXT: Name: bar11 (47)
156 // CHECK-NEXT: Value: 0x30
157 // CHECK-NEXT: Size: 0
158 // CHECK-NEXT: Binding: Global
159 // CHECK-NEXT: Type: None
160 // CHECK-NEXT: Other: 0
161 // CHECK-NEXT: Section: .text (0x1)
163 // CHECK-NEXT: Symbol {
164 // CHECK-NEXT: Name: bar12 (53)
165 // CHECK-NEXT: Value: 0x30
166 // CHECK-NEXT: Size: 0
167 // CHECK-NEXT: Binding: Global
168 // CHECK-NEXT: Type: None
169 // CHECK-NEXT: Other: 0
170 // CHECK-NEXT: Section: .text (0x1)
172 // CHECK-NEXT: Symbol {
173 // CHECK-NEXT: Name: bar13 (59)
174 // CHECK-NEXT: Value: 0x34
175 // CHECK-NEXT: Size: 0
176 // CHECK-NEXT: Binding: Global
177 // CHECK-NEXT: Type: None
178 // CHECK-NEXT: Other: 0
179 // CHECK-NEXT: Section: .text (0x1)
181 // CHECK-NEXT: Symbol {
182 // CHECK-NEXT: Name: bar14 (65)
183 // CHECK-NEXT: Value: 0x38
184 // CHECK-NEXT: Size: 0
185 // CHECK-NEXT: Binding: Global
186 // CHECK-NEXT: Type: None
187 // CHECK-NEXT: Other: 0
188 // CHECK-NEXT: Section: .text (0x1)
190 // CHECK-NEXT: Symbol {
191 // CHECK-NEXT: Name: bar15 (71)
192 // CHECK-NEXT: Value: 0x40
193 // CHECK-NEXT: Size: 0
194 // CHECK-NEXT: Binding: Global
195 // CHECK-NEXT: Type: None
196 // CHECK-NEXT: Other: 0
197 // CHECK-NEXT: Section: .text (0x1)
199 // CHECK-NEXT: Symbol {
200 // CHECK-NEXT: Name: bar2 (1)
201 // CHECK-NEXT: Value: 0x0
202 // CHECK-NEXT: Size: 0
203 // CHECK-NEXT: Binding: Global
204 // CHECK-NEXT: Type: None
205 // CHECK-NEXT: Other: 0
206 // CHECK-NEXT: Section: (0x0)
208 // CHECK-NEXT: Symbol {
209 // CHECK-NEXT: Name: bar3 (6)
210 // CHECK-NEXT: Value: 0x0
211 // CHECK-NEXT: Size: 0
212 // CHECK-NEXT: Binding: Weak
213 // CHECK-NEXT: Type: None
214 // CHECK-NEXT: Other: 0
215 // CHECK-NEXT: Section: (0x0)
217 // CHECK-NEXT: Symbol {
218 // CHECK-NEXT: Name: bar4 (11)
219 // CHECK-NEXT: Value: 0x0
220 // CHECK-NEXT: Size: 0
221 // CHECK-NEXT: Binding: Global
222 // CHECK-NEXT: Type: None
223 // CHECK-NEXT: Other: 0
224 // CHECK-NEXT: Section: (0x0)
226 // CHECK-NEXT: Symbol {
227 // CHECK-NEXT: Name: bar5 (16)
228 // CHECK-NEXT: Value: 0x0
229 // CHECK-NEXT: Size: 0
230 // CHECK-NEXT: Binding: Global
231 // CHECK-NEXT: Type: None
232 // CHECK-NEXT: Other: 0
233 // CHECK-NEXT: Section: (0x0)