Fixed some bugs.
[llvm/zpu.git] / test / MC / ELF / weakref.s
blob212e2c3c52f4ae2a0c9ae5b95c91b799ae9f17aa
1 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | 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.
8 .weakref foo1, bar1
10 .weakref foo2, bar2
11 .long bar2
13 .weakref foo3, bar3
14 .long foo3
16 .weakref foo4, bar4
17 .long foo4
18 .long bar4
20 .weakref foo5, bar5
21 .long bar5
22 .long foo5
24 bar6:
25 .weakref foo6, bar6
27 bar7:
28 .weakref foo7, bar7
29 .long bar7
31 bar8:
32 .weakref foo8, bar8
33 .long foo8
35 bar9:
36 .weakref foo9, bar9
37 .long foo9
38 .long bar9
40 bar10:
41 .global bar10
42 .weakref foo10, bar10
43 .long bar10
44 .long foo10
46 bar11:
47 .global bar11
48 .weakref foo11, bar11
50 bar12:
51 .global bar12
52 .weakref foo12, bar12
53 .long bar12
55 bar13:
56 .global bar13
57 .weakref foo13, bar13
58 .long foo13
60 bar14:
61 .global bar14
62 .weakref foo14, bar14
63 .long foo14
64 .long bar14
66 bar15:
67 .global bar15
68 .weakref foo15, bar15
69 .long bar15
70 .long foo15
72 // CHECK: # Symbol 0x00000000
73 // CHECK-NEXT: (('st_name', 0x00000000) # ''
74 // CHECK-NEXT: ('st_bind', 0x00000000)
75 // CHECK-NEXT: ('st_type', 0x00000000)
76 // CHECK-NEXT: ('st_other', 0x00000000)
77 // CHECK-NEXT: ('st_shndx', 0x00000000)
78 // CHECK-NEXT: ('st_value', 0x00000000)
79 // CHECK-NEXT: ('st_size', 0x00000000)
80 // CHECK-NEXT: ),
81 // CHECK-NEXT: # Symbol 0x00000001
82 // CHECK-NEXT: (('st_name', 0x00000015) # 'bar6'
83 // CHECK-NEXT: ('st_bind', 0x00000000)
84 // CHECK-NEXT: ('st_type', 0x00000000)
85 // CHECK-NEXT: ('st_other', 0x00000000)
86 // CHECK-NEXT: ('st_shndx', 0x00000001)
87 // CHECK-NEXT: ('st_value', 0x00000018)
88 // CHECK-NEXT: ('st_size', 0x00000000)
89 // CHECK-NEXT: ),
90 // CHECK-NEXT: # Symbol 0x00000002
91 // CHECK-NEXT: (('st_name', 0x0000001a) # 'bar7'
92 // CHECK-NEXT: ('st_bind', 0x00000000)
93 // CHECK-NEXT: ('st_type', 0x00000000)
94 // CHECK-NEXT: ('st_other', 0x00000000)
95 // CHECK-NEXT: ('st_shndx', 0x00000001)
96 // CHECK-NEXT: ('st_value', 0x00000018)
97 // CHECK-NEXT: ('st_size', 0x00000000)
98 // CHECK-NEXT: ),
99 // CHECK-NEXT: # Symbol 0x00000003
100 // CHECK-NEXT: (('st_name', 0x0000001f) # 'bar8'
101 // CHECK-NEXT: ('st_bind', 0x00000000)
102 // CHECK-NEXT: ('st_type', 0x00000000)
103 // CHECK-NEXT: ('st_other', 0x00000000)
104 // CHECK-NEXT: ('st_shndx', 0x00000001)
105 // CHECK-NEXT: ('st_value', 0x0000001c)
106 // CHECK-NEXT: ('st_size', 0x00000000)
107 // CHECK-NEXT: ),
108 // CHECK-NEXT: # Symbol 0x00000004
109 // CHECK-NEXT: (('st_name', 0x00000024) # 'bar9'
110 // CHECK-NEXT: ('st_bind', 0x00000000)
111 // CHECK-NEXT: ('st_type', 0x00000000)
112 // CHECK-NEXT: ('st_other', 0x00000000)
113 // CHECK-NEXT: ('st_shndx', 0x00000001)
114 // CHECK-NEXT: ('st_value', 0x00000020)
115 // CHECK-NEXT: ('st_size', 0x00000000)
116 // CHECK-NEXT: ),
117 // CHECK-NEXT: # Symbol 0x00000005
118 // CHECK-NEXT: (('st_name', 0x00000000) # ''
119 // CHECK-NEXT: ('st_bind', 0x00000000)
120 // CHECK-NEXT: ('st_type', 0x00000003)
121 // CHECK-NEXT: ('st_other', 0x00000000)
122 // CHECK-NEXT: ('st_shndx', 0x00000001)
123 // CHECK-NEXT: ('st_value', 0x00000000)
124 // CHECK-NEXT: ('st_size', 0x00000000)
125 // CHECK-NEXT: ),
126 // CHECK-NEXT: # Symbol 0x00000006
127 // CHECK-NEXT: (('st_name', 0x00000000) # ''
128 // CHECK-NEXT: ('st_bind', 0x00000000)
129 // CHECK-NEXT: ('st_type', 0x00000003)
130 // CHECK-NEXT: ('st_other', 0x00000000)
131 // CHECK-NEXT: ('st_shndx', 0x00000002)
132 // CHECK-NEXT: ('st_value', 0x00000000)
133 // CHECK-NEXT: ('st_size', 0x00000000)
134 // CHECK-NEXT: ),
135 // CHECK-NEXT: # Symbol 0x00000007
136 // CHECK-NEXT: (('st_name', 0x00000000) # ''
137 // CHECK-NEXT: ('st_bind', 0x00000000)
138 // CHECK-NEXT: ('st_type', 0x00000003)
139 // CHECK-NEXT: ('st_other', 0x00000000)
140 // CHECK-NEXT: ('st_shndx', 0x00000003)
141 // CHECK-NEXT: ('st_value', 0x00000000)
142 // CHECK-NEXT: ('st_size', 0x00000000)
143 // CHECK-NEXT: ),
144 // CHECK-NEXT: # Symbol 0x00000008
145 // CHECK-NEXT: (('st_name', 0x00000029) # 'bar10'
146 // CHECK-NEXT: ('st_bind', 0x00000001)
147 // CHECK-NEXT: ('st_type', 0x00000000)
148 // CHECK-NEXT: ('st_other', 0x00000000)
149 // CHECK-NEXT: ('st_shndx', 0x00000001)
150 // CHECK-NEXT: ('st_value', 0x00000028)
151 // CHECK-NEXT: ('st_size', 0x00000000)
152 // CHECK-NEXT: ),
153 // CHECK-NEXT: # Symbol 0x00000009
154 // CHECK-NEXT: (('st_name', 0x0000002f) # 'bar11'
155 // CHECK-NEXT: ('st_bind', 0x00000001)
156 // CHECK-NEXT: ('st_type', 0x00000000)
157 // CHECK-NEXT: ('st_other', 0x00000000)
158 // CHECK-NEXT: ('st_shndx', 0x00000001)
159 // CHECK-NEXT: ('st_value', 0x00000030)
160 // CHECK-NEXT: ('st_size', 0x00000000)
161 // CHECK-NEXT: ),
162 // CHECK-NEXT: # Symbol 0x0000000a
163 // CHECK-NEXT: (('st_name', 0x00000035) # 'bar12'
164 // CHECK-NEXT: ('st_bind', 0x00000001)
165 // CHECK-NEXT: ('st_type', 0x00000000)
166 // CHECK-NEXT: ('st_other', 0x00000000)
167 // CHECK-NEXT: ('st_shndx', 0x00000001)
168 // CHECK-NEXT: ('st_value', 0x00000030)
169 // CHECK-NEXT: ('st_size', 0x00000000)
170 // CHECK-NEXT: ),
171 // CHECK-NEXT: # Symbol 0x0000000b
172 // CHECK-NEXT: (('st_name', 0x0000003b) # 'bar13'
173 // CHECK-NEXT: ('st_bind', 0x00000001)
174 // CHECK-NEXT: ('st_type', 0x00000000)
175 // CHECK-NEXT: ('st_other', 0x00000000)
176 // CHECK-NEXT: ('st_shndx', 0x00000001)
177 // CHECK-NEXT: ('st_value', 0x00000034)
178 // CHECK-NEXT: ('st_size', 0x00000000)
179 // CHECK-NEXT: ),
180 // CHECK-NEXT: # Symbol 0x0000000c
181 // CHECK-NEXT: (('st_name', 0x00000041) # 'bar14'
182 // CHECK-NEXT: ('st_bind', 0x00000001)
183 // CHECK-NEXT: ('st_type', 0x00000000)
184 // CHECK-NEXT: ('st_other', 0x00000000)
185 // CHECK-NEXT: ('st_shndx', 0x00000001)
186 // CHECK-NEXT: ('st_value', 0x00000038)
187 // CHECK-NEXT: ('st_size', 0x00000000)
188 // CHECK-NEXT: ),
189 // CHECK-NEXT: # Symbol 0x0000000d
190 // CHECK-NEXT: (('st_name', 0x00000047) # 'bar15'
191 // CHECK-NEXT: ('st_bind', 0x00000001)
192 // CHECK-NEXT: ('st_type', 0x00000000)
193 // CHECK-NEXT: ('st_other', 0x00000000)
194 // CHECK-NEXT: ('st_shndx', 0x00000001)
195 // CHECK-NEXT: ('st_value', 0x00000040)
196 // CHECK-NEXT: ('st_size', 0x00000000)
197 // CHECK-NEXT: ),
198 // CHECK-NEXT: # Symbol 0x0000000e
199 // CHECK-NEXT: (('st_name', 0x00000001) # 'bar2'
200 // CHECK-NEXT: ('st_bind', 0x00000001)
201 // CHECK-NEXT: ('st_type', 0x00000000)
202 // CHECK-NEXT: ('st_other', 0x00000000)
203 // CHECK-NEXT: ('st_shndx', 0x00000000)
204 // CHECK-NEXT: ('st_value', 0x00000000)
205 // CHECK-NEXT: ('st_size', 0x00000000)
206 // CHECK-NEXT: ),
207 // CHECK-NEXT: # Symbol 0x0000000f
208 // CHECK-NEXT: (('st_name', 0x00000006) # 'bar3'
209 // CHECK-NEXT: ('st_bind', 0x00000002)
210 // CHECK-NEXT: ('st_type', 0x00000000)
211 // CHECK-NEXT: ('st_other', 0x00000000)
212 // CHECK-NEXT: ('st_shndx', 0x00000000)
213 // CHECK-NEXT: ('st_value', 0x00000000)
214 // CHECK-NEXT: ('st_size', 0x00000000)
215 // CHECK-NEXT: ),
216 // CHECK-NEXT: # Symbol 0x00000010
217 // CHECK-NEXT: (('st_name', 0x0000000b) # 'bar4'
218 // CHECK-NEXT: ('st_bind', 0x00000001)
219 // CHECK-NEXT: ('st_type', 0x00000000)
220 // CHECK-NEXT: ('st_other', 0x00000000)
221 // CHECK-NEXT: ('st_shndx', 0x00000000)
222 // CHECK-NEXT: ('st_value', 0x00000000)
223 // CHECK-NEXT: ('st_size', 0x00000000)
224 // CHECK-NEXT: ),
225 // CHECK-NEXT: # Symbol 0x00000011
226 // CHECK-NEXT: (('st_name', 0x00000010) # 'bar5'
227 // CHECK-NEXT: ('st_bind', 0x00000001)
228 // CHECK-NEXT: ('st_type', 0x00000000)
229 // CHECK-NEXT: ('st_other', 0x00000000)
230 // CHECK-NEXT: ('st_shndx', 0x00000000)
231 // CHECK-NEXT: ('st_value', 0x00000000)
232 // CHECK-NEXT: ('st_size', 0x00000000)
233 // CHECK-NEXT: ),
234 // CHECK-NEXT: ])