MC: Label definitions are permitted after .set directives
[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 // CHECK:      Symbols [
28 // CHECK-NEXT:   Symbol {
29 // CHECK-NEXT:     Name:  (0)
30 // CHECK-NEXT:     Value: 0x0
31 // CHECK-NEXT:     Size: 0
32 // CHECK-NEXT:     Binding: Local (0x0)
33 // CHECK-NEXT:     Type: None (0x0)
34 // CHECK-NEXT:     Other: 0
35 // CHECK-NEXT:     Section: Undefined (0x0)
36 // CHECK-NEXT:   }
37 // CHECK-NEXT:   Symbol {
38 // CHECK-NEXT:     Name: bar
39 // CHECK-NEXT:     Value: 0x0
40 // CHECK-NEXT:     Size: 0
41 // CHECK-NEXT:     Binding: Local
42 // CHECK-NEXT:     Type: None
43 // CHECK-NEXT:     Other: 0
44 // CHECK-NEXT:     Section: .text
45 // CHECK-NEXT:   }
46 // CHECK-NEXT:   Symbol {
47 // CHECK-NEXT:     Name: bar4
48 // CHECK-NEXT:     Value: 0x1
49 // CHECK-NEXT:     Size: 0
50 // CHECK-NEXT:     Binding: Local
51 // CHECK-NEXT:     Type: Function
52 // CHECK-NEXT:     Other: 0
53 // CHECK-NEXT:     Section: .text
54 // CHECK-NEXT:   }
55 // CHECK-NEXT:   Symbol {
56 // CHECK-NEXT:     Name: bar5
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: bar6
66 // CHECK-NEXT:     Value: 0x5
67 // CHECK-NEXT:     Size: 0
68 // CHECK-NEXT:     Binding: Local
69 // CHECK-NEXT:     Type: None
70 // CHECK-NEXT:     Other: 0
71 // CHECK-NEXT:     Section: .text
72 // CHECK-NEXT:   }
73 // CHECK-NEXT:   Symbol {
74 // CHECK-NEXT:     Name: foo
75 // CHECK-NEXT:     Value: 0x0
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: foo3
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: foo4
93 // CHECK-NEXT:     Value: 0x1
94 // CHECK-NEXT:     Size: 0
95 // CHECK-NEXT:     Binding: Local
96 // CHECK-NEXT:     Type: Function
97 // CHECK-NEXT:     Other: 0
98 // CHECK-NEXT:     Section: .text
99 // CHECK-NEXT:   }
100 // CHECK-NEXT:   Symbol {
101 // CHECK-NEXT:     Name: .text (0)
102 // CHECK:        }
103 // CHECK-NEXT:   Symbol {
104 // CHECK-NEXT:     Name: .data (0)
105 // CHECK:        }
106 // CHECK-NEXT:   Symbol {
107 // CHECK-NEXT:     Name: .bss (0)
108 // CHECK:        }
109 // CHECK-NEXT:   Symbol {
110 // CHECK-NEXT:     Name: bar3
111 // CHECK-NEXT:     Value: 0x0
112 // CHECK-NEXT:     Size: 0
113 // CHECK-NEXT:     Binding: Global
114 // CHECK-NEXT:     Type: None
115 // CHECK-NEXT:     Other: 0
116 // CHECK-NEXT:     Section: .text
117 // CHECK-NEXT:   }
118 // CHECK-NEXT:   Symbol {
119 // CHECK-NEXT:     Name: bar2
120 // CHECK-NEXT:     Value: 0x0
121 // CHECK-NEXT:     Size: 0
122 // CHECK-NEXT:     Binding: Global
123 // CHECK-NEXT:     Type: None
124 // CHECK-NEXT:     Other: 0
125 // CHECK-NEXT:     Section: Undefined (0x0)
126 // CHECK-NEXT:   }
127 // CHECK-NEXT: ]