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 foo:
      4 bar = foo
      5 
      6         .globl	foo2
      7 foo2 = bar2
      8 
      9 foo3:
     10 	.globl	bar3
     11 bar3 = foo3
     12 
     13 
     14 // Test that bar4  and bar 5 are also functions and have the same value as foo4.
     15 	.byte 0
     16 	.type	foo4,@function
     17 foo4:
     18 bar4 = foo4
     19 bar5 = bar4
     20 
     21         .long foo2
     22 
     23 // Test that bar6 is a function that doesn't have the same value as foo4.
     24 bar6 = bar5
     25 bar6:
     26 
     27 // Test that indirect local aliases do not appear as symbols.
     28 .data
     29 .Llocal:
     30 
     31 .text
     32 leaq .Llocal1(%rip), %rdi
     33 .Llocal1 = .Llocal2
     34 .Llocal2 = .Llocal
     35 
     36 // CHECK:      Symbols [
     37 // CHECK-NEXT:   Symbol {
     38 // CHECK-NEXT:     Name:  (0)
     39 // CHECK-NEXT:     Value: 0x0
     40 // CHECK-NEXT:     Size: 0
     41 // CHECK-NEXT:     Binding: Local (0x0)
     42 // CHECK-NEXT:     Type: None (0x0)
     43 // CHECK-NEXT:     Other: 0
     44 // CHECK-NEXT:     Section: Undefined (0x0)
     45 // CHECK-NEXT:   }
     46 // CHECK-NEXT:   Symbol {
     47 // CHECK-NEXT:     Name: bar
     48 // CHECK-NEXT:     Value: 0x0
     49 // CHECK-NEXT:     Size: 0
     50 // CHECK-NEXT:     Binding: Local
     51 // CHECK-NEXT:     Type: None
     52 // CHECK-NEXT:     Other: 0
     53 // CHECK-NEXT:     Section: .text
     54 // CHECK-NEXT:   }
     55 // CHECK-NEXT:   Symbol {
     56 // CHECK-NEXT:     Name: bar4
     57 // CHECK-NEXT:     Value: 0x1
     58 // CHECK-NEXT:     Size: 0
     59 // CHECK-NEXT:     Binding: Local
     60 // CHECK-NEXT:     Type: Function
     61 // CHECK-NEXT:     Other: 0
     62 // CHECK-NEXT:     Section: .text
     63 // CHECK-NEXT:   }
     64 // CHECK-NEXT:   Symbol {
     65 // CHECK-NEXT:     Name: bar5
     66 // CHECK-NEXT:     Value: 0x1
     67 // CHECK-NEXT:     Size: 0
     68 // CHECK-NEXT:     Binding: Local
     69 // CHECK-NEXT:     Type: Function
     70 // CHECK-NEXT:     Other: 0
     71 // CHECK-NEXT:     Section: .text
     72 // CHECK-NEXT:   }
     73 // CHECK-NEXT:   Symbol {
     74 // CHECK-NEXT:     Name: bar6
     75 // CHECK-NEXT:     Value: 0x5
     76 // CHECK-NEXT:     Size: 0
     77 // CHECK-NEXT:     Binding: Local
     78 // CHECK-NEXT:     Type: None
     79 // CHECK-NEXT:     Other: 0
     80 // CHECK-NEXT:     Section: .text
     81 // CHECK-NEXT:   }
     82 // CHECK-NEXT:   Symbol {
     83 // CHECK-NEXT:     Name: foo
     84 // CHECK-NEXT:     Value: 0x0
     85 // CHECK-NEXT:     Size: 0
     86 // CHECK-NEXT:     Binding: Local
     87 // CHECK-NEXT:     Type: None
     88 // CHECK-NEXT:     Other: 0
     89 // CHECK-NEXT:     Section: .text
     90 // CHECK-NEXT:   }
     91 // CHECK-NEXT:   Symbol {
     92 // CHECK-NEXT:     Name: foo3
     93 // CHECK-NEXT:     Value: 0x0
     94 // CHECK-NEXT:     Size: 0
     95 // CHECK-NEXT:     Binding: Local
     96 // CHECK-NEXT:     Type: None
     97 // CHECK-NEXT:     Other: 0
     98 // CHECK-NEXT:     Section: .text
     99 // CHECK-NEXT:   }
    100 // CHECK-NEXT:   Symbol {
    101 // CHECK-NEXT:     Name: foo4
    102 // CHECK-NEXT:     Value: 0x1
    103 // CHECK-NEXT:     Size: 0
    104 // CHECK-NEXT:     Binding: Local
    105 // CHECK-NEXT:     Type: Function
    106 // CHECK-NEXT:     Other: 0
    107 // CHECK-NEXT:     Section: .text
    108 // CHECK-NEXT:   }
    109 // CHECK-NEXT:   Symbol {
    110 // CHECK-NEXT:     Name: (0)
    111 // CHECK-NOT: Symbol {
    112 // CHECK:        }
    113 // CHECK-NEXT:   Symbol {
    114 // CHECK-NEXT:     Name: bar2
    115 // CHECK-NEXT:     Value: 0x0
    116 // CHECK-NEXT:     Size: 0
    117 // CHECK-NEXT:     Binding: Global
    118 // CHECK-NEXT:     Type: None
    119 // CHECK-NEXT:     Other: 0
    120 // CHECK-NEXT:     Section: Undefined (0x0)
    121 // CHECK-NEXT:   }
    122 // CHECK-NEXT:   Symbol {
    123 // CHECK-NEXT:     Name: bar3
    124 // CHECK-NEXT:     Value: 0x0
    125 // CHECK-NEXT:     Size: 0
    126 // CHECK-NEXT:     Binding: Global
    127 // CHECK-NEXT:     Type: None
    128 // CHECK-NEXT:     Other: 0
    129 // CHECK-NEXT:     Section: .text
    130 // CHECK-NEXT:   }
    131 // CHECK-NEXT: ]
    132