Skip to content

Commit 9ed930e

Browse files
MaskRaytstellar
authored andcommitted
[MC][test] Improve offset.s
(cherry picked from commit 67acc34)
1 parent 5eb2262 commit 9ed930e

File tree

1 file changed

+46
-111
lines changed

1 file changed

+46
-111
lines changed

llvm/test/MC/ELF/offset.s

Lines changed: 46 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,54 @@
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
226

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.
527

628
.data
7-
.globl sym_a
8-
.size sym_a, 42
29+
.globl a
30+
.size a, 42
931
.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:
2234

2335
.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
4940

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
7445

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
7552

7653
.globl test2_a
7754
.globl test2_b
@@ -85,48 +62,6 @@ test2_c:
8562
.long 0
8663
test2_d = test2_c
8764
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

Comments
 (0)