Aliases defined with .symver should copy the binding of the symbols they alias.
[oota-llvm.git] / test / MC / ELF / symref.s
1 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump  | FileCheck %s
2
3 defined1:
4 defined2:
5 defined3:
6         .symver defined1, bar1@zed
7         .symver undefined1, bar2@zed
8
9         .symver defined2, bar3@@zed
10
11         .symver defined3, bar5@@@zed
12         .symver undefined3, bar6@@@zed
13
14         .long defined1
15         .long undefined1
16         .long defined2
17         .long defined3
18         .long undefined3
19
20         .global global1
21         .symver global1, g1@@zed
22 global1:
23
24
25 // CHECK:      # Symbol 0x00000001
26 // CHECK-NEXT: (('st_name', 0x00000013) # 'bar1@zed'
27 // CHECK-NEXT:  ('st_bind', 0x00000000)
28 // CHECK-NEXT:  ('st_type', 0x00000000)
29 // CHECK-NEXT:  ('st_other', 0x00000000)
30 // CHECK-NEXT:  ('st_shndx', 0x00000001)
31 // CHECK-NEXT:  ('st_value', 0x00000000)
32 // CHECK-NEXT:  ('st_size', 0x00000000)
33 // CHECK-NEXT: ),
34 // CHECK-NEXT: # Symbol 0x00000002
35 // CHECK-NEXT: (('st_name', 0x00000025) # 'bar3@@zed'
36 // CHECK-NEXT:  ('st_bind', 0x00000000)
37 // CHECK-NEXT:  ('st_type', 0x00000000)
38 // CHECK-NEXT:  ('st_other', 0x00000000)
39 // CHECK-NEXT:  ('st_shndx', 0x00000001)
40 // CHECK-NEXT:  ('st_value', 0x00000000)
41 // CHECK-NEXT:  ('st_size', 0x00000000)
42 // CHECK-NEXT: ),
43 // CHECK-NEXT: # Symbol 0x00000003
44 // CHECK-NEXT: (('st_name', 0x0000002f) # 'bar5@@zed'
45 // CHECK-NEXT:  ('st_bind', 0x00000000)
46 // CHECK-NEXT:  ('st_type', 0x00000000)
47 // CHECK-NEXT:  ('st_other', 0x00000000)
48 // CHECK-NEXT:  ('st_shndx', 0x00000001)
49 // CHECK-NEXT:  ('st_value', 0x00000000)
50 // CHECK-NEXT:  ('st_size', 0x00000000)
51 // CHECK-NEXT: ),
52 // CHECK-NEXT: # Symbol 0x00000004
53 // CHECK-NEXT: (('st_name', 0x00000001) # 'defined1'
54 // CHECK-NEXT:  ('st_bind', 0x00000000)
55 // CHECK-NEXT:  ('st_type', 0x00000000)
56 // CHECK-NEXT:  ('st_other', 0x00000000)
57 // CHECK-NEXT:  ('st_shndx', 0x00000001)
58 // CHECK-NEXT:  ('st_value', 0x00000000)
59 // CHECK-NEXT:  ('st_size', 0x00000000)
60 // CHECK-NEXT: ),
61 // CHECK-NEXT: # Symbol 0x00000005
62 // CHECK-NEXT: (('st_name', 0x0000000a) # 'defined2'
63 // CHECK-NEXT:  ('st_bind', 0x00000000)
64 // CHECK-NEXT:  ('st_type', 0x00000000)
65 // CHECK-NEXT:  ('st_other', 0x00000000)
66 // CHECK-NEXT:  ('st_shndx', 0x00000001)
67 // CHECK-NEXT:  ('st_value', 0x00000000)
68 // CHECK-NEXT:  ('st_size', 0x00000000)
69 // CHECK-NEXT: ),
70 // CHECK-NEXT: # Symbol 0x00000006
71 // CHECK-NEXT: (('st_name', 0x00000000) # ''
72 // CHECK-NEXT:  ('st_bind', 0x00000000)
73 // CHECK-NEXT:  ('st_type', 0x00000003)
74 // CHECK-NEXT:  ('st_other', 0x00000000)
75 // CHECK-NEXT:  ('st_shndx', 0x00000001)
76 // CHECK-NEXT:  ('st_value', 0x00000000)
77 // CHECK-NEXT:  ('st_size', 0x00000000)
78 // CHECK-NEXT: ),
79 // CHECK-NEXT: # Symbol 0x00000007
80 // CHECK-NEXT: (('st_name', 0x00000000) # ''
81 // CHECK-NEXT:  ('st_bind', 0x00000000)
82 // CHECK-NEXT:  ('st_type', 0x00000003)
83 // CHECK-NEXT:  ('st_other', 0x00000000)
84 // CHECK-NEXT:  ('st_shndx', 0x00000002)
85 // CHECK-NEXT:  ('st_value', 0x00000000)
86 // CHECK-NEXT:  ('st_size', 0x00000000)
87 // CHECK-NEXT: ),
88 // CHECK-NEXT: # Symbol 0x00000008
89 // CHECK-NEXT: (('st_name', 0x00000000) # ''
90 // CHECK-NEXT:  ('st_bind', 0x00000000)
91 // CHECK-NEXT:  ('st_type', 0x00000003)
92 // CHECK-NEXT:  ('st_other', 0x00000000)
93 // CHECK-NEXT:  ('st_shndx', 0x00000003)
94 // CHECK-NEXT:  ('st_value', 0x00000000)
95 // CHECK-NEXT:  ('st_size', 0x00000000)
96 // CHECK-NEXT: ),
97 // CHECK-NEXT: # Symbol 0x00000009
98 // CHECK-NEXT: (('st_name', 0x0000004a) # 'g1@@zed'
99 // CHECK-NEXT:  ('st_bind', 0x00000001)
100 // CHECK-NEXT:  ('st_type', 0x00000000)
101 // CHECK-NEXT:  ('st_other', 0x00000000)
102 // CHECK-NEXT:  ('st_shndx', 0x00000001)
103 // CHECK-NEXT:  ('st_value', 0x00000014)
104 // CHECK-NEXT:  ('st_size', 0x00000000)
105 // CHECK-NEXT: ),
106 // CHECK-NEXT: # Symbol 0x0000000a
107 // CHECK-NEXT: (('st_name', 0x00000042) # 'global1'
108 // CHECK-NEXT:  ('st_bind', 0x00000001)
109 // CHECK-NEXT:  ('st_type', 0x00000000)
110 // CHECK-NEXT:  ('st_other', 0x00000000)
111 // CHECK-NEXT:  ('st_shndx', 0x00000001)
112 // CHECK-NEXT:  ('st_value', 0x00000014)
113 // CHECK-NEXT:  ('st_size', 0x00000000)
114 // CHECK-NEXT: ),
115 // CHECK-NEXT: # Symbol 0x0000000b
116 // CHECK-NEXT: (('st_name', 0x0000001c) # 'bar2@zed'
117 // CHECK-NEXT:  ('st_bind', 0x00000001)
118 // CHECK-NEXT:  ('st_type', 0x00000000)
119 // CHECK-NEXT:  ('st_other', 0x00000000)
120 // CHECK-NEXT:  ('st_shndx', 0x00000000)
121 // CHECK-NEXT:  ('st_value', 0x00000000)
122 // CHECK-NEXT:  ('st_size', 0x00000000)
123 // CHECK-NEXT: ),
124 // CHECK-NEXT: # Symbol 0x0000000c
125 // CHECK-NEXT: (('st_name', 0x00000039) # 'bar6@zed'
126 // CHECK-NEXT:  ('st_bind', 0x00000001)
127 // CHECK-NEXT:  ('st_type', 0x00000000)
128 // CHECK-NEXT:  ('st_other', 0x00000000)
129 // CHECK-NEXT:  ('st_shndx', 0x00000000)
130 // CHECK-NEXT:  ('st_value', 0x00000000)
131 // CHECK-NEXT:  ('st_size', 0x00000000)
132 // CHECK-NEXT: ),
133 // CHECK-NEXT:])
134
135 // CHECK:      # Relocation 0x00000000
136 // CHECK-NEXT: (('r_offset', 0x00000000)
137 // CHECK-NEXT:  ('r_sym', 0x00000006)
138 // CHECK-NEXT:  ('r_type', 0x0000000a)
139 // CHECK-NEXT:  ('r_addend', 0x00000000)
140 // CHECK-NEXT: ),
141 // CHECK-NEXT: # Relocation 0x00000001
142 // CHECK-NEXT: (('r_offset', 0x00000004)
143 // CHECK-NEXT:  ('r_sym', 0x0000000b)
144 // CHECK-NEXT:  ('r_type', 0x0000000a)
145 // CHECK-NEXT:  ('r_addend', 0x00000000)
146 // CHECK-NEXT: ),
147 // CHECK-NEXT: # Relocation 0x00000002
148 // CHECK-NEXT: (('r_offset', 0x00000008)
149 // CHECK-NEXT:  ('r_sym', 0x00000006)
150 // CHECK-NEXT:  ('r_type', 0x0000000a)
151 // CHECK-NEXT:  ('r_addend', 0x00000000)
152 // CHECK-NEXT: ),
153 // CHECK-NEXT: # Relocation 0x00000003
154 // CHECK-NEXT: (('r_offset', 0x0000000c)
155 // CHECK-NEXT:  ('r_sym', 0x00000006)
156 // CHECK-NEXT:  ('r_type', 0x0000000a)
157 // CHECK-NEXT:  ('r_addend', 0x00000000)
158 // CHECK-NEXT: ),
159 // CHECK-NEXT: # Relocation 0x00000004
160 // CHECK-NEXT: (('r_offset', 0x00000010)
161 // CHECK-NEXT:  ('r_sym', 0x0000000c)
162 // CHECK-NEXT:  ('r_type', 0x0000000a)
163 // CHECK-NEXT:  ('r_addend', 0x00000000)
164 // CHECK-NEXT: ),
165 // CHECK-NEXT:])