Don't special case undefined symbol when deciding the symbol order.
[oota-llvm.git] / test / MC / ELF / alias.s
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: .text (0)
111 // CHECK-NOT: Symbol {
112 // CHECK:        }
113 // CHECK-NEXT:   Symbol {
114 // CHECK-NEXT:     Name: .data (0)
115 // CHECK-NOT: Symbol {
116 // CHECK:        }
117 // CHECK-NEXT:   Symbol {
118 // CHECK-NEXT:     Name: .bss (0)
119 // CHECK-NOT: Symbol {
120 // CHECK:        }
121 // CHECK-NEXT:   Symbol {
122 // CHECK-NEXT:     Name: bar2
123 // CHECK-NEXT:     Value: 0x0
124 // CHECK-NEXT:     Size: 0
125 // CHECK-NEXT:     Binding: Global
126 // CHECK-NEXT:     Type: None
127 // CHECK-NEXT:     Other: 0
128 // CHECK-NEXT:     Section: Undefined (0x0)
129 // CHECK-NEXT:   }
130 // CHECK-NEXT:   Symbol {
131 // CHECK-NEXT:     Name: bar3
132 // CHECK-NEXT:     Value: 0x0
133 // CHECK-NEXT:     Size: 0
134 // CHECK-NEXT:     Binding: Global
135 // CHECK-NEXT:     Type: None
136 // CHECK-NEXT:     Other: 0
137 // CHECK-NEXT:     Section: .text
138 // CHECK-NEXT:   }
139 // CHECK-NEXT: ]