Home | History | Annotate | Download | only in ELF
      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
     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:  }
     22 
     23         .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:  }
     49 
     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:  }
     74 
     75 
     76         .globl test2_a
     77         .globl test2_b
     78         .globl test2_c
     79         .globl test2_d
     80         .globl test2_e
     81 test2_a:
     82     .long 0
     83 test2_b = test2_a
     84 test2_c:
     85     .long 0
     86 test2_d = test2_c
     87 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: }
    133