blob: d342c61f745abbee2652709219b03c421fef7396 [file] [log] [blame]
Nico Rieckba848e32013-04-12 04:06:46 +00001// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
Rafael Espindola16145972010-11-01 14:28:48 +00002
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.
7
8 .weakref foo1, bar1
9
10 .weakref foo2, bar2
11 .long bar2
12
13 .weakref foo3, bar3
14 .long foo3
15
16 .weakref foo4, bar4
17 .long foo4
18 .long bar4
19
20 .weakref foo5, bar5
21 .long bar5
22 .long foo5
23
24bar6:
25 .weakref foo6, bar6
26
27bar7:
28 .weakref foo7, bar7
29 .long bar7
30
31bar8:
32 .weakref foo8, bar8
33 .long foo8
34
35bar9:
36 .weakref foo9, bar9
37 .long foo9
38 .long bar9
39
40bar10:
41 .global bar10
42 .weakref foo10, bar10
43 .long bar10
44 .long foo10
45
46bar11:
47 .global bar11
48 .weakref foo11, bar11
49
50bar12:
51 .global bar12
52 .weakref foo12, bar12
53 .long bar12
54
55bar13:
56 .global bar13
57 .weakref foo13, bar13
58 .long foo13
59
60bar14:
61 .global bar14
62 .weakref foo14, bar14
63 .long foo14
64 .long bar14
65
66bar15:
67 .global bar15
68 .weakref foo15, bar15
69 .long bar15
70 .long foo15
71
Nico Rieckba848e32013-04-12 04:06:46 +000072// CHECK: Symbols [
73// CHECK-NEXT: Symbol {
Rafael Espindola7c346c22013-06-05 20:33:54 +000074// 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
Rafael Espindolacfee7ef2014-03-24 05:00:34 +000080// CHECK-NEXT: Section: Undefined (0x0)
Rafael Espindola7c346c22013-06-05 20:33:54 +000081// CHECK-NEXT: }
82// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000083// CHECK-NEXT: Name: bar6
Nico Rieckba848e32013-04-12 04:06:46 +000084// CHECK-NEXT: Value: 0x18
85// CHECK-NEXT: Size: 0
86// CHECK-NEXT: Binding: Local
87// CHECK-NEXT: Type: None
88// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +000089// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +000090// CHECK-NEXT: }
91// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000092// CHECK-NEXT: Name: bar7
Nico Rieckba848e32013-04-12 04:06:46 +000093// CHECK-NEXT: Value: 0x18
94// CHECK-NEXT: Size: 0
95// CHECK-NEXT: Binding: Local
96// CHECK-NEXT: Type: None
97// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +000098// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +000099// CHECK-NEXT: }
100// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000101// CHECK-NEXT: Name: bar8
Nico Rieckba848e32013-04-12 04:06:46 +0000102// CHECK-NEXT: Value: 0x1C
103// CHECK-NEXT: Size: 0
104// CHECK-NEXT: Binding: Local
105// CHECK-NEXT: Type: None
106// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000107// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000108// CHECK-NEXT: }
109// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000110// CHECK-NEXT: Name: bar9
Nico Rieckba848e32013-04-12 04:06:46 +0000111// CHECK-NEXT: Value: 0x20
112// CHECK-NEXT: Size: 0
113// CHECK-NEXT: Binding: Local
114// CHECK-NEXT: Type: None
115// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000116// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000117// CHECK-NEXT: }
118// CHECK-NEXT: Symbol {
Rafael Espindola75d5b542015-06-03 05:14:22 +0000119// CHECK-NEXT: Name: (0)
Nico Rieckba848e32013-04-12 04:06:46 +0000120// CHECK-NEXT: Value: 0x0
121// CHECK-NEXT: Size: 0
122// CHECK-NEXT: Binding: Local
123// CHECK-NEXT: Type: Section
124// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000125// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000126// CHECK-NEXT: }
127// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000128// CHECK-NEXT: Name: bar10
Nico Rieckba848e32013-04-12 04:06:46 +0000129// CHECK-NEXT: Value: 0x28
130// CHECK-NEXT: Size: 0
131// CHECK-NEXT: Binding: Global
132// CHECK-NEXT: Type: None
133// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000134// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000135// CHECK-NEXT: }
136// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000137// CHECK-NEXT: Name: bar11
Nico Rieckba848e32013-04-12 04:06:46 +0000138// CHECK-NEXT: Value: 0x30
139// CHECK-NEXT: Size: 0
140// CHECK-NEXT: Binding: Global
141// CHECK-NEXT: Type: None
142// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000143// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000144// CHECK-NEXT: }
145// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000146// CHECK-NEXT: Name: bar12
Nico Rieckba848e32013-04-12 04:06:46 +0000147// CHECK-NEXT: Value: 0x30
148// CHECK-NEXT: Size: 0
149// CHECK-NEXT: Binding: Global
150// CHECK-NEXT: Type: None
151// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000152// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000153// CHECK-NEXT: }
154// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000155// CHECK-NEXT: Name: bar13
Nico Rieckba848e32013-04-12 04:06:46 +0000156// CHECK-NEXT: Value: 0x34
157// CHECK-NEXT: Size: 0
158// CHECK-NEXT: Binding: Global
159// CHECK-NEXT: Type: None
160// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000161// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000162// CHECK-NEXT: }
163// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000164// CHECK-NEXT: Name: bar14
Nico Rieckba848e32013-04-12 04:06:46 +0000165// CHECK-NEXT: Value: 0x38
166// CHECK-NEXT: Size: 0
167// CHECK-NEXT: Binding: Global
168// CHECK-NEXT: Type: None
169// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000170// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000171// CHECK-NEXT: }
172// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000173// CHECK-NEXT: Name: bar15
Nico Rieckba848e32013-04-12 04:06:46 +0000174// CHECK-NEXT: Value: 0x40
175// CHECK-NEXT: Size: 0
176// CHECK-NEXT: Binding: Global
177// CHECK-NEXT: Type: None
178// CHECK-NEXT: Other: 0
Rafael Espindolacad91322015-04-29 13:55:07 +0000179// CHECK-NEXT: Section: .text
Nico Rieckba848e32013-04-12 04:06:46 +0000180// CHECK-NEXT: }
181// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000182// CHECK-NEXT: Name: bar2
Nico Rieckba848e32013-04-12 04:06:46 +0000183// CHECK-NEXT: Value: 0x0
184// CHECK-NEXT: Size: 0
185// CHECK-NEXT: Binding: Global
186// CHECK-NEXT: Type: None
187// CHECK-NEXT: Other: 0
Rafael Espindolacfee7ef2014-03-24 05:00:34 +0000188// CHECK-NEXT: Section: Undefined (0x0)
Nico Rieckba848e32013-04-12 04:06:46 +0000189// CHECK-NEXT: }
190// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000191// CHECK-NEXT: Name: bar3
Nico Rieckba848e32013-04-12 04:06:46 +0000192// CHECK-NEXT: Value: 0x0
193// CHECK-NEXT: Size: 0
194// CHECK-NEXT: Binding: Weak
195// CHECK-NEXT: Type: None
196// CHECK-NEXT: Other: 0
Rafael Espindolacfee7ef2014-03-24 05:00:34 +0000197// CHECK-NEXT: Section: Undefined (0x0)
Nico Rieckba848e32013-04-12 04:06:46 +0000198// CHECK-NEXT: }
199// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000200// CHECK-NEXT: Name: bar4
Nico Rieckba848e32013-04-12 04:06:46 +0000201// CHECK-NEXT: Value: 0x0
202// CHECK-NEXT: Size: 0
203// CHECK-NEXT: Binding: Global
204// CHECK-NEXT: Type: None
205// CHECK-NEXT: Other: 0
Rafael Espindolacfee7ef2014-03-24 05:00:34 +0000206// CHECK-NEXT: Section: Undefined (0x0)
Nico Rieckba848e32013-04-12 04:06:46 +0000207// CHECK-NEXT: }
208// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +0000209// CHECK-NEXT: Name: bar5
Nico Rieckba848e32013-04-12 04:06:46 +0000210// CHECK-NEXT: Value: 0x0
211// CHECK-NEXT: Size: 0
212// CHECK-NEXT: Binding: Global
213// CHECK-NEXT: Type: None
214// CHECK-NEXT: Other: 0
Rafael Espindolacfee7ef2014-03-24 05:00:34 +0000215// CHECK-NEXT: Section: Undefined (0x0)
Nico Rieckba848e32013-04-12 04:06:46 +0000216// CHECK-NEXT: }
217// CHECK-NEXT: ]