1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t - | FileCheck %s 2 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 6 .data 7 .globl sym_a 8 .size sym_a, 42 9 .byte 42 10 .type sym_a, @object 11sym_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: } 22 23 .long 42 24 .globl sym_b 25sym_b: 26 .globl sym_c 27sym_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 39sym_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: } 49 50 .globl sym_e 51sym_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 64sym_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: } 74 75 76 .globl test2_a 77 .globl test2_b 78 .globl test2_c 79 .globl test2_d 80 .globl test2_e 81test2_a: 82 .long 0 83test2_b = test2_a 84test2_c: 85 .long 0 86test2_d = test2_c 87test2_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: } 133