Add support for the .symver directive. This is really ugly, but most of it is
[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 // CHECK:      # Symbol 0x00000001
21 // CHECK-NEXT: (('st_name', 0x00000013) # 'bar1@zed'
22 // CHECK-NEXT:  ('st_bind', 0x00000000)
23 // CHECK-NEXT:  ('st_type', 0x00000000)
24 // CHECK-NEXT:  ('st_other', 0x00000000)
25 // CHECK-NEXT:  ('st_shndx', 0x00000001)
26 // CHECK-NEXT:  ('st_value', 0x00000000)
27 // CHECK-NEXT:  ('st_size', 0x00000000)
28 // CHECK-NEXT: ),
29 // CHECK-NEXT: # Symbol 0x00000002
30 // CHECK-NEXT: (('st_name', 0x00000025) # 'bar3@@zed'
31 // CHECK-NEXT:  ('st_bind', 0x00000000)
32 // CHECK-NEXT:  ('st_type', 0x00000000)
33 // CHECK-NEXT:  ('st_other', 0x00000000)
34 // CHECK-NEXT:  ('st_shndx', 0x00000001)
35 // CHECK-NEXT:  ('st_value', 0x00000000)
36 // CHECK-NEXT:  ('st_size', 0x00000000)
37 // CHECK-NEXT: ),
38 // CHECK-NEXT: # Symbol 0x00000003
39 // CHECK-NEXT: (('st_name', 0x0000002f) # 'bar5@@zed'
40 // CHECK-NEXT:  ('st_bind', 0x00000000)
41 // CHECK-NEXT:  ('st_type', 0x00000000)
42 // CHECK-NEXT:  ('st_other', 0x00000000)
43 // CHECK-NEXT:  ('st_shndx', 0x00000001)
44 // CHECK-NEXT:  ('st_value', 0x00000000)
45 // CHECK-NEXT:  ('st_size', 0x00000000)
46 // CHECK-NEXT: ),
47 // CHECK-NEXT: # Symbol 0x00000004
48 // CHECK-NEXT: (('st_name', 0x00000001) # 'defined1'
49 // CHECK-NEXT:  ('st_bind', 0x00000000)
50 // CHECK-NEXT:  ('st_type', 0x00000000)
51 // CHECK-NEXT:  ('st_other', 0x00000000)
52 // CHECK-NEXT:  ('st_shndx', 0x00000001)
53 // CHECK-NEXT:  ('st_value', 0x00000000)
54 // CHECK-NEXT:  ('st_size', 0x00000000)
55 // CHECK-NEXT: ),
56 // CHECK-NEXT: # Symbol 0x00000005
57 // CHECK-NEXT: (('st_name', 0x0000000a) # 'defined2'
58 // CHECK-NEXT:  ('st_bind', 0x00000000)
59 // CHECK-NEXT:  ('st_type', 0x00000000)
60 // CHECK-NEXT:  ('st_other', 0x00000000)
61 // CHECK-NEXT:  ('st_shndx', 0x00000001)
62 // CHECK-NEXT:  ('st_value', 0x00000000)
63 // CHECK-NEXT:  ('st_size', 0x00000000)
64 // CHECK-NEXT: ),
65 // CHECK-NEXT: # Symbol 0x00000006
66 // CHECK-NEXT: (('st_name', 0x00000000) # ''
67 // CHECK-NEXT:  ('st_bind', 0x00000000)
68 // CHECK-NEXT:  ('st_type', 0x00000003)
69 // CHECK-NEXT:  ('st_other', 0x00000000)
70 // CHECK-NEXT:  ('st_shndx', 0x00000001)
71 // CHECK-NEXT:  ('st_value', 0x00000000)
72 // CHECK-NEXT:  ('st_size', 0x00000000)
73 // CHECK-NEXT: ),
74 // CHECK-NEXT: # Symbol 0x00000007
75 // CHECK-NEXT: (('st_name', 0x00000000) # ''
76 // CHECK-NEXT:  ('st_bind', 0x00000000)
77 // CHECK-NEXT:  ('st_type', 0x00000003)
78 // CHECK-NEXT:  ('st_other', 0x00000000)
79 // CHECK-NEXT:  ('st_shndx', 0x00000002)
80 // CHECK-NEXT:  ('st_value', 0x00000000)
81 // CHECK-NEXT:  ('st_size', 0x00000000)
82 // CHECK-NEXT: ),
83 // CHECK-NEXT: # Symbol 0x00000008
84 // CHECK-NEXT: (('st_name', 0x00000000) # ''
85 // CHECK-NEXT:  ('st_bind', 0x00000000)
86 // CHECK-NEXT:  ('st_type', 0x00000003)
87 // CHECK-NEXT:  ('st_other', 0x00000000)
88 // CHECK-NEXT:  ('st_shndx', 0x00000003)
89 // CHECK-NEXT:  ('st_value', 0x00000000)
90 // CHECK-NEXT:  ('st_size', 0x00000000)
91 // CHECK-NEXT: ),
92 // CHECK-NEXT: # Symbol 0x00000009
93 // CHECK-NEXT: (('st_name', 0x0000001c) # 'bar2@zed'
94 // CHECK-NEXT:  ('st_bind', 0x00000001)
95 // CHECK-NEXT:  ('st_type', 0x00000000)
96 // CHECK-NEXT:  ('st_other', 0x00000000)
97 // CHECK-NEXT:  ('st_shndx', 0x00000000)
98 // CHECK-NEXT:  ('st_value', 0x00000000)
99 // CHECK-NEXT:  ('st_size', 0x00000000)
100 // CHECK-NEXT: ),
101 // CHECK-NEXT: # Symbol 0x0000000a
102 // CHECK-NEXT: (('st_name', 0x00000039) # 'bar6@zed'
103 // CHECK-NEXT:  ('st_bind', 0x00000001)
104 // CHECK-NEXT:  ('st_type', 0x00000000)
105 // CHECK-NEXT:  ('st_other', 0x00000000)
106 // CHECK-NEXT:  ('st_shndx', 0x00000000)
107 // CHECK-NEXT:  ('st_value', 0x00000000)
108 // CHECK-NEXT:  ('st_size', 0x00000000)
109 // CHECK-NEXT: ),
110 // CHECK-NEXT:])
111
112 // CHECK:      # Relocation 0x00000000
113 // CHECK-NEXT: (('r_offset', 0x00000000)
114 // CHECK-NEXT:  ('r_sym', 0x00000006)
115 // CHECK-NEXT:  ('r_type', 0x0000000a)
116 // CHECK-NEXT:  ('r_addend', 0x00000000)
117 // CHECK-NEXT: ),
118 // CHECK-NEXT: # Relocation 0x00000001
119 // CHECK-NEXT: (('r_offset', 0x00000004)
120 // CHECK-NEXT:  ('r_sym', 0x00000009)
121 // CHECK-NEXT:  ('r_type', 0x0000000a)
122 // CHECK-NEXT:  ('r_addend', 0x00000000)
123 // CHECK-NEXT: ),
124 // CHECK-NEXT: # Relocation 0x00000002
125 // CHECK-NEXT: (('r_offset', 0x00000008)
126 // CHECK-NEXT:  ('r_sym', 0x00000006)
127 // CHECK-NEXT:  ('r_type', 0x0000000a)
128 // CHECK-NEXT:  ('r_addend', 0x00000000)
129 // CHECK-NEXT: ),
130 // CHECK-NEXT: # Relocation 0x00000003
131 // CHECK-NEXT: (('r_offset', 0x0000000c)
132 // CHECK-NEXT:  ('r_sym', 0x00000006)
133 // CHECK-NEXT:  ('r_type', 0x0000000a)
134 // CHECK-NEXT:  ('r_addend', 0x00000000)
135 // CHECK-NEXT: ),
136 // CHECK-NEXT: # Relocation 0x00000004
137 // CHECK-NEXT: (('r_offset', 0x00000010)
138 // CHECK-NEXT:  ('r_sym', 0x0000000a)
139 // CHECK-NEXT:  ('r_type', 0x0000000a)
140 // CHECK-NEXT:  ('r_addend', 0x00000000)
141 // CHECK-NEXT: ),
142 // CHECK-NEXT:])