1
- // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj --symbols - | FileCheck %s
1
+ # RUN: llvm-mc -filetype=obj -triple x86_64 %s -o %t
2
+ # RUN: llvm-readelf -s %t | FileCheck %s
3
+
4
+ ## Test that a variable declared with "var = other_var + cst" is in the same
5
+ ## section as other_var and its value is the value of other_var + cst.
6
+ ## In addition, its st_size inherits from other_var.
7
+
8
+ # CHECK: 0: {{.*}}
9
+ # CHECK-NEXT: 0000000000000001 42 OBJECT GLOBAL DEFAULT [[#A:]] a
10
+ # CHECK-NEXT: 0000000000000005 0 NOTYPE GLOBAL DEFAULT [[#A]] b
11
+ # CHECK-NEXT: 0000000000000001 42 OBJECT GLOBAL DEFAULT [[#A]] a1
12
+ # CHECK-NEXT: 0000000000000002 42 OBJECT GLOBAL DEFAULT [[#A]] c
13
+ # CHECK-NEXT: 000000000000000d 42 OBJECT GLOBAL DEFAULT [[#A]] d
14
+ # CHECK-NEXT: 000000000000000d 42 OBJECT GLOBAL DEFAULT [[#A]] d1
15
+ # CHECK-NEXT: 000000000000000d 42 OBJECT GLOBAL DEFAULT [[#A]] d2
16
+ # CHECK-NEXT: 0000000000000001 41 OBJECT GLOBAL DEFAULT [[#A]] e
17
+ # CHECK-NEXT: 0000000000000001 42 OBJECT GLOBAL DEFAULT [[#A]] e1
18
+ # CHECK-NEXT: 0000000000000001 42 OBJECT GLOBAL DEFAULT [[#A]] e2
19
+ # CHECK-NEXT: 0000000000000002 42 OBJECT GLOBAL DEFAULT [[#A]] e3
20
+ # CHECK-NEXT: 0000000000000005 0 NOTYPE GLOBAL DEFAULT [[#A]] test2_a
21
+ # CHECK-NEXT: 0000000000000005 0 NOTYPE GLOBAL DEFAULT [[#A]] test2_b
22
+ # CHECK-NEXT: 0000000000000009 0 NOTYPE GLOBAL DEFAULT [[#A]] test2_c
23
+ # CHECK-NEXT: 0000000000000009 0 NOTYPE GLOBAL DEFAULT [[#A]] test2_d
24
+ # CHECK-NEXT: 0000000000000004 0 NOTYPE GLOBAL DEFAULT ABS test2_e
25
+ # CHECK-NEXT: 0000000000000001 42 OBJECT GLOBAL DEFAULT [[#A]] e@v1
2
26
3
- // Test that a variable declared with "var = other_var + cst" is in the same
4
- // section as other_var and its value is the value of other_var + cst.
5
27
6
28
.data
7
- .globl sym_a
8
- .size sym_a , 42
29
+ .globl a
30
+ .size a , 42
9
31
.byte 42
10
- .type sym_a, @object
11
- sym_a:
12
-
13
- // CHECK: Symbol {
14
- // CHECK: Name: sym_a
15
- // CHECK-NEXT: Value: 0x1
16
- // CHECK-NEXT: Size: 42
17
- // CHECK-NEXT: Binding: Global
18
- // CHECK-NEXT: Type: Object
19
- // CHECK-NEXT: Other: 0
20
- // CHECK-NEXT: Section: .data
21
- // CHECK-NEXT: }
32
+ .type a, @object
33
+ a:
22
34
23
35
.long 42
24
- .globl sym_b
25
- sym_b:
26
- .globl sym_c
27
- sym_c = sym_a
28
- // CHECK: Symbol {
29
- // CHECK: Name: sym_c
30
- // CHECK-NEXT: Value: 0x1
31
- // CHECK-NEXT: Size: 42
32
- // CHECK-NEXT: Binding: Global
33
- // CHECK-NEXT: Type: Object
34
- // CHECK-NEXT: Other: 0
35
- // CHECK-NEXT: Section: .data
36
- // CHECK-NEXT: }
37
-
38
- .globl sym_d
39
- sym_d = sym_a + 1
40
- // CHECK: Symbol {
41
- // CHECK: Name: sym_d
42
- // CHECK-NEXT: Value: 0x2
43
- // CHECK-NEXT: Size: 42
44
- // CHECK-NEXT: Binding: Global
45
- // CHECK-NEXT: Type: Object
46
- // CHECK-NEXT: Other: 0
47
- // CHECK-NEXT: Section: .data
48
- // CHECK-NEXT: }
36
+ .globl b, a1, c, d, d1, d2, e, e1, e2, e3
37
+ b:
38
+ a1 = a
39
+ c = a + 1
49
40
50
- .globl sym_e
51
- sym_e = sym_a + (sym_b - sym_a) * 3
52
- // CHECK: Symbol {
53
- // CHECK: Name: sym_e
54
- // CHECK-NEXT: Value: 0xD
55
- // CHECK-NEXT: Size: 42
56
- // CHECK-NEXT: Binding: Global
57
- // CHECK-NEXT: Type: Object
58
- // CHECK-NEXT: Other: 0
59
- // CHECK-NEXT: Section: .data
60
- // CHECK-NEXT: }
61
-
62
-
63
- .globl sym_f
64
- sym_f = sym_a + (1 - 1 )
65
- // CHECK: Symbol {
66
- // CHECK: Name: sym_f
67
- // CHECK-NEXT: Value: 0x1
68
- // CHECK-NEXT: Size: 42
69
- // CHECK-NEXT: Binding: Global
70
- // CHECK-NEXT: Type: Object
71
- // CHECK-NEXT: Other: 0
72
- // CHECK-NEXT: Section: .data
73
- // CHECK-NEXT: }
41
+ ## These st_size fields inherit from a.
42
+ d = a + (b - a) * 3
43
+ .set d1, d
44
+ d2 = d1
74
45
46
+ e = a + (1 - 1 )
47
+ .size e, 41
48
+ ## FIXME These st_size fields inherit from e instead of a.
49
+ .set e1, e
50
+ .set e2, e1
51
+ e3 = e1 + 1
75
52
76
53
.globl test2_a
77
54
.globl test2_b
@@ -85,48 +62,6 @@ test2_c:
85
62
.long 0
86
63
test2_d = test2_c
87
64
test2_e = test2_d - test2_b
88
- // CHECK: Symbol {
89
- // CHECK: Name: test2_a
90
- // CHECK-NEXT: Value: 0x5
91
- // CHECK-NEXT: Size: 0
92
- // CHECK-NEXT: Binding: Global
93
- // CHECK-NEXT: Type: None
94
- // CHECK-NEXT: Other: 0
95
- // CHECK-NEXT: Section: .data
96
- // CHECK-NEXT: }
97
- // CHECK-NEXT: Symbol {
98
- // CHECK-NEXT: Name: test2_b
99
- // CHECK-NEXT: Value: 0x5
100
- // CHECK-NEXT: Size: 0
101
- // CHECK-NEXT: Binding: Global
102
- // CHECK-NEXT: Type: None
103
- // CHECK-NEXT: Other: 0
104
- // CHECK-NEXT: Section: .data
105
- // CHECK-NEXT: }
106
- // CHECK-NEXT: Symbol {
107
- // CHECK-NEXT: Name: test2_c
108
- // CHECK-NEXT: Value: 0x9
109
- // CHECK-NEXT: Size: 0
110
- // CHECK-NEXT: Binding: Global
111
- // CHECK-NEXT: Type: None
112
- // CHECK-NEXT: Other: 0
113
- // CHECK-NEXT: Section: .data
114
- // CHECK-NEXT: }
115
- // CHECK-NEXT: Symbol {
116
- // CHECK-NEXT: Name: test2_d
117
- // CHECK-NEXT: Value: 0x9
118
- // CHECK-NEXT: Size: 0
119
- // CHECK-NEXT: Binding: Global
120
- // CHECK-NEXT: Type: None
121
- // CHECK-NEXT: Other: 0
122
- // CHECK-NEXT: Section: .data
123
- // CHECK-NEXT: }
124
- // CHECK-NEXT: Symbol {
125
- // CHECK-NEXT: Name: test2_e
126
- // CHECK-NEXT: Value: 0x4
127
- // CHECK-NEXT: Size: 0
128
- // CHECK-NEXT: Binding: Global
129
- // CHECK-NEXT: Type: None
130
- // CHECK-NEXT: Other: 0
131
- // CHECK-NEXT: Section: Absolute
132
- // CHECK-NEXT: }
65
+
66
+ ## e@v1's st_size equals e's st_size.
67
+ .symver e, e@v1
0 commit comments