2 clang -g -c odr-uniquing.cpp -o odr-uniquing/1.o
3 cp odr-uniquing/1.o odr-uniquing/2.o
4 The aim of these test is to check that all the 'type types' that
5 should be uniqued through the ODR really are.
7 The resulting object file is linked against itself using a fake
8 debug map. The end result is:
9 - with ODR uniquing: all types in second and third CUs should point back
10 to the types of the first CU(except types from anonymous namespace).
11 - without ODR uniquing: all types are re-emited in the second CU.
14 /* Check by llvm-dwarfdump --verify */
15 // RUN: dsymutil --linker=llvm -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \
16 // RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump --verify - | \
17 // RUN: FileCheck -check-prefixes=VERIFY %s
18 // RUN: dsymutil --linker=llvm -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \
19 // RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump --verify - | \
20 // RUN: FileCheck -check-prefixes=VERIFY %s
22 /* Check for llvm-dwarfdump -a output */
23 // RUN: dsymutil --linker=llvm -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \
24 // RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump -v -a - | \
25 // RUN: FileCheck -check-prefixes=CHECK %s
26 // RUN: dsymutil --linker=llvm -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \
27 // RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump -v -a - | \
28 // RUN: FileCheck -check-prefixes=CHECK-NOODR %s
51 // This function is only here to hold objects that refer to the above types.
60 // VERIFY: Verifying .debug_abbrev...
61 // VERIFY: Verifying .debug_info Unit Header Chain...
62 // VERIFY: Verifying .debug_types Unit Header Chain...
63 // VERIFY: Verifying .apple_names...
64 // VERIFY: Verifying .apple_types...
65 // VERIFY: Verifying .apple_namespaces...
66 // VERIFY: Verifying .apple_objc...
69 // The first compile unit contains all the types:
70 // CHECK: .debug_info contents
71 // CHECK: DW_TAG_compile_unit
72 // CHECK: DW_AT_language{{.*}} (DW_LANG_C_plus_plus)
73 // CHECK: DW_AT_name{{.*}}"__artificial_type_unit")
74 // CHECK: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]])
76 // CHECK:0x[[N_NAMESPACE:[0-9a-f]*]]:{{.*}}DW_TAG_namespace
77 // CHECK:DW_AT_name{{.*}}"N"
79 // CHECK:0x[[C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type
80 // CHECK:DW_AT_name{{.*}}"C"
81 // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01)
82 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
83 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (35)
85 // CHECK:0x[[S_STRUCTURE:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type
86 // CHECK:DW_AT_name{{.*}}"S"
87 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
88 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (22)
90 // CHECK:0x[[S_STRUCTURE_NESTED:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type
91 // CHECK:DW_AT_name{{.*}}"Nested"
92 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp")
93 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (23)
95 // CHECK:0x[[TYPEDEF_ALIASFORS:[0-9a-f]*]]:{{.*}}DW_TAG_typedef
96 // CHECK:DW_AT_name{{.*}}"AliasForS"
97 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
98 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (58)
100 // CHECK:0x[[U_UNION:[0-9a-f]*]]:{{.*}}DW_TAG_union_type
101 // CHECK:DW_AT_name{{.*}}"U"
102 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
103 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (45)
105 // CHECK:0x[[U_C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type
106 // CHECK:DW_AT_name{{.*}}"C"
107 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
108 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46)
110 // CHECK:0x[[U_C_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member
111 // CHECK:DW_AT_name{{.*}}"C"
112 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
113 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46)
115 // CHECK:0x[[U_S_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member
116 // CHECK:DW_AT_name{{.*}}"S"
117 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
118 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47)
120 // CHECK:0x[[U_S_STRUCT:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type
121 // CHECK:DW_AT_name{{.*}}"S"
122 // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
123 // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47)
125 // The second compile unit contains subprogram and its variables:
126 // CHECK:DW_TAG_compile_unit
127 // CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp"
128 // CHECK-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]])
130 // CHECK:DW_TAG_subprogram
131 // CHECK:DW_AT_low_pc
132 // CHECK:DW_AT_high_pc
133 // CHECK:DW_AT_frame_base
134 // CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"
135 // CHECK:DW_AT_name{{.*}}"foo"
136 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
137 // CHECK:DW_AT_decl_line [DW_FORM_data1] (74)
138 // CHECK:DW_AT_external
140 // CHECK:DW_TAG_variable
141 // CHECK:DW_AT_name{{.*}}"s"
142 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
143 // CHECK:DW_AT_decl_line [DW_FORM_data1] (75)
144 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS
146 // CHECK:DW_TAG_variable
147 // CHECK:DW_AT_name{{.*}}"n"
148 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
149 // CHECK:DW_AT_decl_line [DW_FORM_data1] (76)
150 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste
152 // CHECK:DW_TAG_variable
153 // CHECK:DW_AT_name{{.*}}"nc"
154 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
155 // CHECK:DW_AT_decl_line [DW_FORM_data1] (77)
156 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C"
158 // CHECK:DW_TAG_variable
159 // CHECK:DW_AT_name{{.*}}"ac"
160 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
161 // CHECK:DW_AT_decl_line [DW_FORM_data1] (78)
162 // CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS1:[0-9a-f]*]]} "(anonymous namespace)::AnonC")
164 // CHECK:DW_TAG_variable
165 // CHECK:DW_AT_name{{.*}}"u"
166 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
167 // CHECK:DW_AT_decl_line [DW_FORM_data1] (79)
168 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U"
170 // CHECK:0x[[ANON_NAMESPACE1:[0-9a-f]*]]:{{.*}}DW_TAG_namespace
171 // CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp"
173 // CHECK:0x[[ANON_CLASS1]]:{{.*}}DW_TAG_class_type
174 // CHECK:DW_AT_name{{.*}}"AnonC"
175 // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01)
176 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
177 // CHECK:DW_AT_decl_line [DW_FORM_data1] (65)
179 // The third compile unit contains subprogram and its variables:
180 // CHECK:DW_TAG_compile_unit
181 // CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp"
182 // CHECK-NEXT:DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF3:[0-9a-f]*]])
184 // CHECK:DW_TAG_subprogram
185 // CHECK:DW_AT_low_pc
186 // CHECK:DW_AT_high_pc
187 // CHECK:DW_AT_frame_base
188 // CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"
189 // CHECK:DW_AT_name{{.*}}"foo"
190 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
191 // CHECK:DW_AT_decl_line [DW_FORM_data1] (74)
192 // CHECK:DW_AT_external
194 // CHECK:DW_TAG_variable
195 // CHECK:DW_AT_name{{.*}}"s"
196 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
197 // CHECK:DW_AT_decl_line [DW_FORM_data1] (75)
198 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS
200 // CHECK:DW_TAG_variable
201 // CHECK:DW_AT_name{{.*}}"n"
202 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
203 // CHECK:DW_AT_decl_line [DW_FORM_data1] (76)
204 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste
206 // CHECK:DW_TAG_variable
207 // CHECK:DW_AT_name{{.*}}"nc"
208 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
209 // CHECK:DW_AT_decl_line [DW_FORM_data1] (77)
210 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C"
212 // CHECK:DW_TAG_variable
213 // CHECK:DW_AT_name{{.*}}"ac"
214 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
215 // CHECK:DW_AT_decl_line [DW_FORM_data1] (78)
216 // CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS2:[0-9a-f]*]]} "(anonymous namespace)::AnonC")
218 // CHECK:DW_TAG_variable
219 // CHECK:DW_AT_name{{.*}}"u"
220 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
221 // CHECK:DW_AT_decl_line [DW_FORM_data1] (79)
222 // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U"
224 // CHECK:0x[[ANON_NAMESPACE2:[0-9a-f]*]]:{{.*}}DW_TAG_namespace
225 // CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp"
227 // CHECK:0x[[ANON_CLASS2]]:{{.*}}DW_TAG_class_type
228 // CHECK:DW_AT_name{{.*}}"AnonC"
229 // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01)
230 // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp
231 // CHECK:DW_AT_decl_line [DW_FORM_data1] (65)
233 // CHECK:.debug_aranges contents
235 // CHECK:debug_line[0x[[LINE_TABLE_OFF1]]]
237 // CHECK:debug_line[0x[[LINE_TABLE_OFF2]]]
239 // CHECK:debug_line[0x[[LINE_TABLE_OFF3]]]
241 // CHECK:.debug_str contents:
242 // CHECK:0x00000000: ""
243 // CHECK:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)"
244 // CHECK:0x00000038: "odr-uniquing.cpp"
245 // CHECK:0x00000049: "/tmp"
246 // CHECK:0x0000004e: "_Z3foov"
247 // CHECK:0x00000056: "foo"
248 // CHECK:0x0000005a: "s"
249 // CHECK:0x0000005c: "n"
250 // CHECK:0x0000005e: "nc"
251 // CHECK:0x00000061: "ac"
252 // CHECK:0x00000064: "u"
253 // CHECK:0x00000066: "AnonC"
254 // CHECK:0x0000006c: "(anonymous namespace)"
255 // CHECK:0x00000082: "llvm DWARFLinkerParallel library version "
256 // CHECK:0x000000ac: "__artificial_type_unit"
257 // CHECK:0x000000c3: ""
258 // CHECK:0x000000c4: "AliasForS"
259 // CHECK:0x000000ce: "C"
260 // CHECK:0x000000d0: "N"
261 // CHECK:0x000000d2: "Nested"
262 // CHECK:0x000000d9: "S"
263 // CHECK:0x000000db: "U"
266 // CHECK:.apple_names
267 // CHECK: Bucket count: 2
268 // CHECK: String: {{.*}} "foo"
269 // CHECK: String: {{.*}} "_Z3foov"
271 // CHECK:.apple_types
272 // CHECK: Bucket count: 6
273 // CHECK: String: {{.*}} "AnonC"
274 // CHECK: String: {{.*}} "Nested"
275 // CHECK: String: {{.*}} "S"
276 // CHECK: String: {{.*}} "C"
277 // CHECK: String: {{.*}} "U"
278 // CHECK: String: {{.*}} "AliasForS"
280 // CHECK:.apple_namespaces
281 // CHECK: Bucket count: 2
282 // CHECK: String: {{.*}} "(anonymous namespace)"
283 // CHECK: String: {{.*}} "N"
286 // CHECK:Bucket count: 1
288 // CHECK-NOODR: .debug_info contents
290 // CHECK-NOODR: DW_TAG_compile_unit
291 // CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp"
292 // CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]])
293 // CHECK-NOODR: DW_AT_low_pc{{.*}}(0x{{0*}}[[LOW_PC1:[0-9a-f]*]])
294 // CHECK-NOODR-NEXT: DW_AT_high_pc{{.*}}(0x{{0*}}[[HIGH_PC1:[0-9a-f]*]])
296 // CHECK-NOODR: DW_TAG_structure_type
297 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S"
299 // CHECK-NOODR: DW_TAG_structure_type
300 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"Nested"
302 // CHECK-NOODR: DW_TAG_namespace
303 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"N"
305 // CHECK-NOODR: DW_TAG_class_type
306 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C"
308 // CHECK-NOODR: DW_TAG_union_type
309 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"U"
311 // CHECK-NOODR: DW_TAG_member
312 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C"
314 // CHECK-NOODR: DW_TAG_class_type
315 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C"
317 // CHECK-NOODR: DW_TAG_member
318 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S"
320 // CHECK-NOODR: DW_TAG_structure_type
321 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S"
323 // CHECK-NOODR: DW_TAG_subprogram
324 // CHECK-NOODR-NEXT: DW_AT_low_pc
325 // CHECK-NOODR-NEXT: DW_AT_high_pc
326 // CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"
327 // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"foo"
329 // CHECK-NOODR: DW_TAG_variable
330 // CHECK-NOODR: DW_AT_name{{.*}}"s"
331 // CHECK-NOODR: DW_AT_type{{.*}}"AliasForS"
333 // CHECK-NOODR: DW_TAG_variable
334 // CHECK-NOODR: DW_AT_name{{.*}}"n"
335 // CHECK-NOODR: DW_AT_type{{.*}}"S::Nested"
337 // CHECK-NOODR: DW_TAG_variable
338 // CHECK-NOODR: DW_AT_name{{.*}}"nc"
339 // CHECK-NOODR: DW_AT_type{{.*}}"N::C"
341 // CHECK-NOODR: DW_TAG_variable
342 // CHECK-NOODR: DW_AT_name{{.*}}"ac"
343 // CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC"
345 // CHECK-NOODR: DW_TAG_variable
346 // CHECK-NOODR: DW_AT_name{{.*}}"u"
347 // CHECK-NOODR: DW_AT_type{{.*}}"U"
349 // CHECK-NOODR: DW_TAG_typedef
350 // CHECK-NOODR: DW_AT_type{{.*}}"S"
351 // CHECK-NOODR: DW_AT_name{{.*}}"AliasForS"
353 // CHECK-NOODR: DW_TAG_namespace
355 // CHECK-NOODR: DW_TAG_class_type
356 // CHECK-NOODR: DW_AT_name{{.*}}"AnonC"
358 // CHECK-NOODR: DW_TAG_compile_unit
359 // CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp"
360 // CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]])
361 // CHECK-NOODR: DW_AT_low_pc
362 // CHECK-NOODR: DW_AT_high_pc
364 // CHECK-NOODR: DW_TAG_structure_type
365 // CHECK-NOODR: DW_AT_name{{.*}}"S"
367 // CHECK-NOODR: DW_TAG_structure_type
368 // CHECK-NOODR: DW_AT_name{{.*}}"Nested"
370 // CHECK-NOODR: DW_TAG_namespace
371 // CHECK-NOODR: DW_AT_name{{.*}}"N"
373 // CHECK-NOODR: DW_TAG_class_type
374 // CHECK-NOODR: DW_AT_name{{.*}}"C"
376 // CHECK-NOODR: DW_TAG_union_type
377 // CHECK-NOODR: DW_AT_name{{.*}}"U"
379 // CHECK-NOODR: DW_TAG_member
380 // CHECK-NOODR: DW_AT_name{{.*}}"C"
381 // CHECK-NOODR: DW_AT_type{{.*}}"U::C"
383 // CHECK-NOODR: DW_TAG_class_type
384 // CHECK-NOODR: DW_AT_name{{.*}}"C"
386 // CHECK-NOODR: DW_TAG_member
387 // CHECK-NOODR: DW_AT_name{{.*}}"S"
388 // CHECK-NOODR: DW_AT_type{{.*}}"U::S"
390 // CHECK-NOODR: DW_TAG_structure_type
391 // CHECK-NOODR: DW_AT_name{{.*}}"S"
393 // CHECK-NOODR: DW_TAG_subprogram
394 // CHECK-NOODR: DW_AT_low_pc
395 // CHECK-NOODR: DW_AT_high_pc
396 // CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov"
397 // CHECK-NOODR: DW_AT_name{{.*}}"foo"
399 // CHECK-NOODR: DW_TAG_variable
400 // CHECK-NOODR: DW_AT_name{{.*}}"s"
401 // CHECK-NOODR: DW_AT_type{{.*}}"AliasForS"
403 // CHECK-NOODR: DW_TAG_variable
404 // CHECK-NOODR: DW_AT_name{{.*}}"n"
405 // CHECK-NOODR: DW_AT_type{{.*}}"S::Nested"
407 // CHECK-NOODR: DW_TAG_variable
408 // CHECK-NOODR: DW_AT_name{{.*}}"nc"
409 // CHECK-NOODR: DW_AT_type{{.*}} "N::C"
411 // CHECK-NOODR: DW_TAG_variable
412 // CHECK-NOODR: DW_AT_name{{.*}}"ac"
413 // CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC"
415 // CHECK-NOODR: DW_TAG_variable
416 // CHECK-NOODR: DW_AT_name{{.*}}"u"
417 // CHECK-NOODR: DW_AT_type{{.*}}"U"
419 // CHECK-NOODR: DW_TAG_typedef
420 // CHECK-NOODR: DW_AT_type{{.*}}"S"
421 // CHECK-NOODR: DW_AT_name{{.*}}"AliasForS"
423 // CHECK-NOODR: DW_TAG_namespace
425 // CHECK-NOODR: DW_TAG_class_type
426 // CHECK-NOODR: DW_AT_name{{.*}}"AnonC"
428 // CHECK-NOODR:.debug_aranges contents
430 // CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF1]]]
432 // CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF2]]]
434 // CHECK-NOODR:.debug_str contents:
435 // CHECK-NOODR:0x00000000: ""
436 // CHECK-NOODR:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)"
437 // CHECK-NOODR:0x00000038: "odr-uniquing.cpp"
438 // CHECK-NOODR:0x00000049: "/tmp"
439 // CHECK-NOODR:0x0000004e: "S"
440 // CHECK-NOODR:0x00000050: "Nested"
441 // CHECK-NOODR:0x00000057: "N"
442 // CHECK-NOODR:0x00000059: "C"
443 // CHECK-NOODR:0x0000005b: "U"
444 // CHECK-NOODR:0x0000005d: "_Z3foov"
445 // CHECK-NOODR:0x00000065: "foo"
446 // CHECK-NOODR:0x00000069: "s"
447 // CHECK-NOODR:0x0000006b: "n"
448 // CHECK-NOODR:0x0000006d: "nc"
449 // CHECK-NOODR:0x00000070: "ac"
450 // CHECK-NOODR:0x00000073: "u"
451 // CHECK-NOODR:0x00000075: "AliasForS"
452 // CHECK-NOODR:0x0000007f: "AnonC"
453 // CHECK-NOODR:0x00000085: "(anonymous namespace)"
455 // CHECK-NOODR: .apple_names
456 // CHECK-NOODR: Bucket count: 2
457 // CHECK-NOODR: String: {{.*}} "foo"
458 // CHECK-NOODR: String: {{.*}} "_Z3foov"
460 // CHECK-NOODR: .apple_types
461 // CHECK-NOODR: Bucket count: 6
462 // CHECK-NOODR: String: {{.*}} "AnonC"
463 // CHECK-NOODR: String: {{.*}} "Nested"
464 // CHECK-NOODR: String: {{.*}} "S"
465 // CHECK-NOODR: String: {{.*}} "C"
466 // CHECK-NOODR: String: {{.*}} "U"
467 // CHECK-NOODR: String: {{.*}} "AliasForS"
469 // CHECK-NOODR: .apple_namespaces
470 // CHECK-NOODR: Bucket count: 2
471 // CHECK-NOODR: String: {{.*}} "(anonymous namespace)"
472 // CHECK-NOODR: String: {{.*}} "N"
474 // CHECK-NOODR: .apple_objc
475 // CHECK-NOODR:Bucket count: 1