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