xref: /aosp_15_r20/external/llvm/test/MC/ELF/offset.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker// Test that a variable declared with "var = other_var + cst" is in the same
4*9880d681SAndroid Build Coastguard Worker// section as other_var and its value is the value of other_var + cst.
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker        .data
7*9880d681SAndroid Build Coastguard Worker        .globl	sym_a
8*9880d681SAndroid Build Coastguard Worker        .size sym_a, 42
9*9880d681SAndroid Build Coastguard Worker        .byte 42
10*9880d681SAndroid Build Coastguard Worker        .type sym_a, @object
11*9880d681SAndroid Build Coastguard Workersym_a:
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker// CHECK:       Symbol {
14*9880d681SAndroid Build Coastguard Worker// CHECK:         Name: sym_a
15*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Value: 0x1
16*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Size: 42
17*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Binding: Global
18*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Type: Object
19*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Other: 0
20*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Section: .data
21*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:  }
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker        .long 42
24*9880d681SAndroid Build Coastguard Worker        .globl sym_b
25*9880d681SAndroid Build Coastguard Workersym_b:
26*9880d681SAndroid Build Coastguard Worker        .globl sym_c
27*9880d681SAndroid Build Coastguard Workersym_c = sym_a
28*9880d681SAndroid Build Coastguard Worker// CHECK:       Symbol {
29*9880d681SAndroid Build Coastguard Worker// CHECK:         Name: sym_c
30*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Value: 0x1
31*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Size: 42
32*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Binding: Global
33*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Type: Object
34*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Other: 0
35*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Section: .data
36*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:  }
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker        .globl sym_d
39*9880d681SAndroid Build Coastguard Workersym_d = sym_a + 1
40*9880d681SAndroid Build Coastguard Worker// CHECK:       Symbol {
41*9880d681SAndroid Build Coastguard Worker// CHECK:         Name: sym_d
42*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Value: 0x2
43*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Size: 42
44*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Binding: Global
45*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Type: Object
46*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Other: 0
47*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Section: .data
48*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:  }
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker        .globl sym_e
51*9880d681SAndroid Build Coastguard Workersym_e = sym_a + (sym_b - sym_a) * 3
52*9880d681SAndroid Build Coastguard Worker// CHECK:       Symbol {
53*9880d681SAndroid Build Coastguard Worker// CHECK:         Name: sym_e
54*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Value: 0xD
55*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Size: 42
56*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Binding: Global
57*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Type: Object
58*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Other: 0
59*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Section: .data
60*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:  }
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker        .globl sym_f
64*9880d681SAndroid Build Coastguard Workersym_f = sym_a + (1 - 1)
65*9880d681SAndroid Build Coastguard Worker// CHECK:       Symbol {
66*9880d681SAndroid Build Coastguard Worker// CHECK:         Name: sym_f
67*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Value: 0x1
68*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Size: 42
69*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Binding: Global
70*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Type: Object
71*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Other: 0
72*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:    Section: .data
73*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:  }
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker        .globl test2_a
77*9880d681SAndroid Build Coastguard Worker        .globl test2_b
78*9880d681SAndroid Build Coastguard Worker        .globl test2_c
79*9880d681SAndroid Build Coastguard Worker        .globl test2_d
80*9880d681SAndroid Build Coastguard Worker        .globl test2_e
81*9880d681SAndroid Build Coastguard Workertest2_a:
82*9880d681SAndroid Build Coastguard Worker    .long 0
83*9880d681SAndroid Build Coastguard Workertest2_b = test2_a
84*9880d681SAndroid Build Coastguard Workertest2_c:
85*9880d681SAndroid Build Coastguard Worker    .long 0
86*9880d681SAndroid Build Coastguard Workertest2_d = test2_c
87*9880d681SAndroid Build Coastguard Workertest2_e = test2_d - test2_b
88*9880d681SAndroid Build Coastguard Worker// CHECK:      Symbol {
89*9880d681SAndroid Build Coastguard Worker// CHECK:        Name: test2_a
90*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Value: 0x5
91*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Size: 0
92*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Binding: Global
93*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Type: None
94*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Other: 0
95*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Section: .data
96*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: }
97*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol {
98*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Name: test2_b
99*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Value: 0x5
100*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Size: 0
101*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Binding: Global
102*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Type: None
103*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Other: 0
104*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Section: .data
105*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: }
106*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol {
107*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Name: test2_c
108*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Value: 0x9
109*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Size: 0
110*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Binding: Global
111*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Type: None
112*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Other: 0
113*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Section: .data
114*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: }
115*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol {
116*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Name: test2_d
117*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Value: 0x9
118*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Size: 0
119*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Binding: Global
120*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Type: None
121*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Other: 0
122*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Section: .data
123*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: }
124*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol {
125*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Name: test2_e
126*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Value: 0x4
127*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Size: 0
128*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Binding: Global
129*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Type: None
130*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Other: 0
131*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:   Section: Absolute
132*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: }
133