| // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t - | FileCheck %s |
| |
| // Test that a variable declared with "var = other_var + cst" is in the same |
| // section as other_var and its value is the value of other_var + cst. |
| |
| .data |
| .globl sym_a |
| .size sym_a, 42 |
| .byte 42 |
| .type sym_a, @object |
| sym_a: |
| |
| // CHECK: Symbol { |
| // CHECK: Name: sym_a |
| // CHECK-NEXT: Value: 0x1 |
| // CHECK-NEXT: Size: 42 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: Object |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| |
| .long 42 |
| .globl sym_b |
| sym_b: |
| .globl sym_c |
| sym_c = sym_a |
| // CHECK: Symbol { |
| // CHECK: Name: sym_c |
| // CHECK-NEXT: Value: 0x1 |
| // CHECK-NEXT: Size: 42 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: Object |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| |
| .globl sym_d |
| sym_d = sym_a + 1 |
| // CHECK: Symbol { |
| // CHECK: Name: sym_d |
| // CHECK-NEXT: Value: 0x2 |
| // CHECK-NEXT: Size: 42 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: Object |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| |
| .globl sym_e |
| sym_e = sym_a + (sym_b - sym_a) * 3 |
| // CHECK: Symbol { |
| // CHECK: Name: sym_e |
| // CHECK-NEXT: Value: 0xD |
| // CHECK-NEXT: Size: 42 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: Object |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| |
| |
| .globl sym_f |
| sym_f = sym_a + (1 - 1) |
| // CHECK: Symbol { |
| // CHECK: Name: sym_f |
| // CHECK-NEXT: Value: 0x1 |
| // CHECK-NEXT: Size: 42 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: Object |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| |
| |
| .globl test2_a |
| .globl test2_b |
| .globl test2_c |
| .globl test2_d |
| .globl test2_e |
| test2_a: |
| .long 0 |
| test2_b = test2_a |
| test2_c: |
| .long 0 |
| test2_d = test2_c |
| test2_e = test2_d - test2_b |
| // CHECK: Symbol { |
| // CHECK: Name: test2_a |
| // CHECK-NEXT: Value: 0x5 |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: test2_b |
| // CHECK-NEXT: Value: 0x5 |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: test2_c |
| // CHECK-NEXT: Value: 0x9 |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: test2_d |
| // CHECK-NEXT: Value: 0x9 |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: .data |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: test2_e |
| // CHECK-NEXT: Value: 0x4 |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other: 0 |
| // CHECK-NEXT: Section: Absolute |
| // CHECK-NEXT: } |