| /* Compile with: |
| clang -g -c odr-uniquing.cpp -o odr-uniquing/1.o |
| cp odr-uniquing/1.o odr-uniquing/2.o |
| The aim of these test is to check that all the 'type types' that |
| should be uniqued through the ODR really are. |
| |
| The resulting object file is linked against itself using a fake |
| debug map. The end result is: |
| - with ODR uniquing: all types in second and third CUs should point back |
| to the types of the first CU(except types from anonymous namespace). |
| - without ODR uniquing: all types are re-emited in the second CU. |
| */ |
| |
| /* Check by llvm-dwarfdump --verify */ |
| // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ |
| // RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump --verify - | \ |
| // RUN: FileCheck -check-prefixes=VERIFY %s |
| // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ |
| // RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump --verify - | \ |
| // RUN: FileCheck -check-prefixes=VERIFY %s |
| |
| /* Check for llvm-dwarfdump -a output */ |
| // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ |
| // RUN: -y %p/../dummy-debug-map.map -o - | llvm-dwarfdump -v -a - | \ |
| // RUN: FileCheck -check-prefixes=CHECK %s |
| // RUN: dsymutil --linker=parallel -f -oso-prepend-path=%p/../../Inputs/odr-uniquing \ |
| // RUN: -y %p/../dummy-debug-map.map -no-odr -o - | llvm-dwarfdump -v -a - | \ |
| // RUN: FileCheck -check-prefixes=CHECK-NOODR %s |
| |
| struct S { |
| struct Nested {}; |
| }; |
| |
| namespace N { |
| class C {}; |
| } // namespace N |
| |
| union U { |
| class C { |
| } C; |
| struct S { |
| } S; |
| }; |
| |
| typedef S AliasForS; |
| |
| namespace { |
| class AnonC {}; |
| } // namespace |
| |
| // This function is only here to hold objects that refer to the above types. |
| void foo() { |
| AliasForS s; |
| S::Nested n; |
| N::C nc; |
| AnonC ac; |
| U u; |
| } |
| |
| // VERIFY: Verifying .debug_abbrev... |
| // VERIFY: Verifying .debug_info Unit Header Chain... |
| // VERIFY: Verifying .debug_types Unit Header Chain... |
| // VERIFY: Verifying .apple_names... |
| // VERIFY: Verifying .apple_types... |
| // VERIFY: Verifying .apple_namespaces... |
| // VERIFY: Verifying .apple_objc... |
| // VERIFY: No errors. |
| |
| // The first compile unit contains all the types: |
| // CHECK: .debug_info contents |
| // CHECK: DW_TAG_compile_unit |
| // CHECK: DW_AT_language{{.*}} (DW_LANG_C_plus_plus) |
| // CHECK: DW_AT_name{{.*}}"__artificial_type_unit") |
| // CHECK: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]]) |
| |
| // CHECK:0x[[N_NAMESPACE:[0-9a-f]*]]:{{.*}}DW_TAG_namespace |
| // CHECK:DW_AT_name{{.*}}"N" |
| |
| // CHECK:0x[[C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type |
| // CHECK:DW_AT_name{{.*}}"C" |
| // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01) |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (35) |
| |
| // CHECK:0x[[S_STRUCTURE:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type |
| // CHECK:DW_AT_name{{.*}}"S" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (22) |
| |
| // CHECK:0x[[S_STRUCTURE_NESTED:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type |
| // CHECK:DW_AT_name{{.*}}"Nested" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp") |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (23) |
| |
| // CHECK:0x[[TYPEDEF_ALIASFORS:[0-9a-f]*]]:{{.*}}DW_TAG_typedef |
| // CHECK:DW_AT_name{{.*}}"AliasForS" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (58) |
| |
| // CHECK:0x[[U_UNION:[0-9a-f]*]]:{{.*}}DW_TAG_union_type |
| // CHECK:DW_AT_name{{.*}}"U" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (45) |
| |
| // CHECK:0x[[U_C_CLASS:[0-9a-f]*]]:{{.*}}DW_TAG_class_type |
| // CHECK:DW_AT_name{{.*}}"C" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46) |
| |
| // CHECK:0x[[U_C_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member |
| // CHECK:DW_AT_name{{.*}}"C" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (46) |
| |
| // CHECK:0x[[U_S_MEMBER:[0-9a-f]*]]:{{.*}}DW_TAG_member |
| // CHECK:DW_AT_name{{.*}}"S" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47) |
| |
| // CHECK:0x[[U_S_STRUCT:[0-9a-f]*]]:{{.*}}DW_TAG_structure_type |
| // CHECK:DW_AT_name{{.*}}"S" |
| // CHECK-DAG:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK-DAG:DW_AT_decl_line [DW_FORM_data1] (47) |
| |
| // The second compile unit contains subprogram and its variables: |
| // CHECK:DW_TAG_compile_unit |
| // CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp" |
| // CHECK-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]]) |
| |
| // CHECK:DW_TAG_subprogram |
| // CHECK:DW_AT_low_pc |
| // CHECK:DW_AT_high_pc |
| // CHECK:DW_AT_frame_base |
| // CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" |
| // CHECK:DW_AT_name{{.*}}"foo" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (74) |
| // CHECK:DW_AT_external |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"s" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (75) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"n" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (76) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"nc" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (77) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C" |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"ac" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (78) |
| // CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS1:[0-9a-f]*]]} "(anonymous namespace)::AnonC") |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"u" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (79) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U" |
| |
| // CHECK:0x[[ANON_NAMESPACE1:[0-9a-f]*]]:{{.*}}DW_TAG_namespace |
| // CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp" |
| |
| // CHECK:0x[[ANON_CLASS1]]:{{.*}}DW_TAG_class_type |
| // CHECK:DW_AT_name{{.*}}"AnonC" |
| // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01) |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (65) |
| |
| // The third compile unit contains subprogram and its variables: |
| // CHECK:DW_TAG_compile_unit |
| // CHECK:DW_AT_name{{.*}}"odr-uniquing.cpp" |
| // CHECK-NEXT:DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF3:[0-9a-f]*]]) |
| |
| // CHECK:DW_TAG_subprogram |
| // CHECK:DW_AT_low_pc |
| // CHECK:DW_AT_high_pc |
| // CHECK:DW_AT_frame_base |
| // CHECK:DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" |
| // CHECK:DW_AT_name{{.*}}"foo" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (74) |
| // CHECK:DW_AT_external |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"s" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (75) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[TYPEDEF_ALIASFORS]] "AliasForS |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"n" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (76) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[S_STRUCTURE_NESTED]] "S::Neste |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"nc" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (77) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[C_CLASS]] "N::C" |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"ac" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (78) |
| // CHECK:DW_AT_type [DW_FORM_ref4]{{.*}} {0x[[ANON_CLASS2:[0-9a-f]*]]} "(anonymous namespace)::AnonC") |
| |
| // CHECK:DW_TAG_variable |
| // CHECK:DW_AT_name{{.*}}"u" |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (79) |
| // CHECK:DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[U_UNION]] "U" |
| |
| // CHECK:0x[[ANON_NAMESPACE2:[0-9a-f]*]]:{{.*}}DW_TAG_namespace |
| // CHECK-NEXT:DW_AT_decl_file{{.*}}"{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp" |
| |
| // CHECK:0x[[ANON_CLASS2]]:{{.*}}DW_TAG_class_type |
| // CHECK:DW_AT_name{{.*}}"AnonC" |
| // CHECK:DW_AT_byte_size [DW_FORM_data1] (0x01) |
| // CHECK:DW_AT_decl_file [DW_FORM_data1] ("{{[\\/]}}tmp{{[\\/]}}odr-uniquing.cpp |
| // CHECK:DW_AT_decl_line [DW_FORM_data1] (65) |
| |
| // CHECK:.debug_aranges contents |
| |
| // CHECK:debug_line[0x[[LINE_TABLE_OFF1]]] |
| |
| // CHECK:debug_line[0x[[LINE_TABLE_OFF2]]] |
| |
| // CHECK:debug_line[0x[[LINE_TABLE_OFF3]]] |
| |
| // CHECK:.debug_str contents: |
| // CHECK:0x00000000: "" |
| // CHECK:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)" |
| // CHECK:0x00000038: "odr-uniquing.cpp" |
| // CHECK:0x00000049: "/tmp" |
| // CHECK:0x0000004e: "_Z3foov" |
| // CHECK:0x00000056: "foo" |
| // CHECK:0x0000005a: "s" |
| // CHECK:0x0000005c: "n" |
| // CHECK:0x0000005e: "nc" |
| // CHECK:0x00000061: "ac" |
| // CHECK:0x00000064: "u" |
| // CHECK:0x00000066: "AnonC" |
| // CHECK:0x0000006c: "(anonymous namespace)" |
| // CHECK:0x00000082: "llvm DWARFLinkerParallel library version " |
| // CHECK:0x000000ac: "__artificial_type_unit" |
| // CHECK:0x000000c3: "" |
| // CHECK:0x000000c4: "AliasForS" |
| // CHECK:0x000000ce: "C" |
| // CHECK:0x000000d0: "N" |
| // CHECK:0x000000d2: "Nested" |
| // CHECK:0x000000d9: "S" |
| // CHECK:0x000000db: "U" |
| |
| |
| // CHECK:.apple_names |
| // CHECK: Bucket count: 2 |
| // CHECK: String: {{.*}} "foo" |
| // CHECK: String: {{.*}} "_Z3foov" |
| |
| // CHECK:.apple_types |
| // CHECK: Bucket count: 6 |
| // CHECK: String: {{.*}} "AnonC" |
| // CHECK: String: {{.*}} "Nested" |
| // CHECK: String: {{.*}} "S" |
| // CHECK: String: {{.*}} "C" |
| // CHECK: String: {{.*}} "U" |
| // CHECK: String: {{.*}} "AliasForS" |
| |
| // CHECK:.apple_namespaces |
| // CHECK: Bucket count: 2 |
| // CHECK: String: {{.*}} "(anonymous namespace)" |
| // CHECK: String: {{.*}} "N" |
| |
| // CHECK:.apple_objc |
| // CHECK:Bucket count: 1 |
| |
| // CHECK-NOODR: .debug_info contents |
| |
| // CHECK-NOODR: DW_TAG_compile_unit |
| // CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp" |
| // CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF1:[0-9a-f]*]]) |
| // CHECK-NOODR: DW_AT_low_pc{{.*}}(0x{{0*}}[[LOW_PC1:[0-9a-f]*]]) |
| // CHECK-NOODR-NEXT: DW_AT_high_pc{{.*}}(0x{{0*}}[[HIGH_PC1:[0-9a-f]*]]) |
| |
| // CHECK-NOODR: DW_TAG_structure_type |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S" |
| |
| // CHECK-NOODR: DW_TAG_structure_type |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"Nested" |
| |
| // CHECK-NOODR: DW_TAG_namespace |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"N" |
| |
| // CHECK-NOODR: DW_TAG_class_type |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C" |
| |
| // CHECK-NOODR: DW_TAG_union_type |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"U" |
| |
| // CHECK-NOODR: DW_TAG_member |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C" |
| |
| // CHECK-NOODR: DW_TAG_class_type |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"C" |
| |
| // CHECK-NOODR: DW_TAG_member |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S" |
| |
| // CHECK-NOODR: DW_TAG_structure_type |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"S" |
| |
| // CHECK-NOODR: DW_TAG_subprogram |
| // CHECK-NOODR-NEXT: DW_AT_low_pc |
| // CHECK-NOODR-NEXT: DW_AT_high_pc |
| // CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" |
| // CHECK-NOODR-NEXT: DW_AT_name{{.*}}"foo" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"s" |
| // CHECK-NOODR: DW_AT_type{{.*}}"AliasForS" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"n" |
| // CHECK-NOODR: DW_AT_type{{.*}}"S::Nested" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"nc" |
| // CHECK-NOODR: DW_AT_type{{.*}}"N::C" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"ac" |
| // CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"u" |
| // CHECK-NOODR: DW_AT_type{{.*}}"U" |
| |
| // CHECK-NOODR: DW_TAG_typedef |
| // CHECK-NOODR: DW_AT_type{{.*}}"S" |
| // CHECK-NOODR: DW_AT_name{{.*}}"AliasForS" |
| |
| // CHECK-NOODR: DW_TAG_namespace |
| |
| // CHECK-NOODR: DW_TAG_class_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"AnonC" |
| |
| // CHECK-NOODR: DW_TAG_compile_unit |
| // CHECK-NOODR: DW_AT_name{{.*}}"odr-uniquing.cpp" |
| // CHECK-NOODR-NEXT: DW_AT_stmt_list{{.*}}(0x[[LINE_TABLE_OFF2:[0-9a-f]*]]) |
| // CHECK-NOODR: DW_AT_low_pc |
| // CHECK-NOODR: DW_AT_high_pc |
| |
| // CHECK-NOODR: DW_TAG_structure_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"S" |
| |
| // CHECK-NOODR: DW_TAG_structure_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"Nested" |
| |
| // CHECK-NOODR: DW_TAG_namespace |
| // CHECK-NOODR: DW_AT_name{{.*}}"N" |
| |
| // CHECK-NOODR: DW_TAG_class_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"C" |
| |
| // CHECK-NOODR: DW_TAG_union_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"U" |
| |
| // CHECK-NOODR: DW_TAG_member |
| // CHECK-NOODR: DW_AT_name{{.*}}"C" |
| // CHECK-NOODR: DW_AT_type{{.*}}"U::C" |
| |
| // CHECK-NOODR: DW_TAG_class_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"C" |
| |
| // CHECK-NOODR: DW_TAG_member |
| // CHECK-NOODR: DW_AT_name{{.*}}"S" |
| // CHECK-NOODR: DW_AT_type{{.*}}"U::S" |
| |
| // CHECK-NOODR: DW_TAG_structure_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"S" |
| |
| // CHECK-NOODR: DW_TAG_subprogram |
| // CHECK-NOODR: DW_AT_low_pc |
| // CHECK-NOODR: DW_AT_high_pc |
| // CHECK-NOODR: DW_AT_MIPS_linkage_name{{.*}}"_Z3foov" |
| // CHECK-NOODR: DW_AT_name{{.*}}"foo" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"s" |
| // CHECK-NOODR: DW_AT_type{{.*}}"AliasForS" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"n" |
| // CHECK-NOODR: DW_AT_type{{.*}}"S::Nested" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"nc" |
| // CHECK-NOODR: DW_AT_type{{.*}} "N::C" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"ac" |
| // CHECK-NOODR: DW_AT_type{{.*}}"(anonymous namespace)::AnonC" |
| |
| // CHECK-NOODR: DW_TAG_variable |
| // CHECK-NOODR: DW_AT_name{{.*}}"u" |
| // CHECK-NOODR: DW_AT_type{{.*}}"U" |
| |
| // CHECK-NOODR: DW_TAG_typedef |
| // CHECK-NOODR: DW_AT_type{{.*}}"S" |
| // CHECK-NOODR: DW_AT_name{{.*}}"AliasForS" |
| |
| // CHECK-NOODR: DW_TAG_namespace |
| |
| // CHECK-NOODR: DW_TAG_class_type |
| // CHECK-NOODR: DW_AT_name{{.*}}"AnonC" |
| |
| // CHECK-NOODR:.debug_aranges contents |
| |
| // CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF1]]] |
| |
| // CHECK-NOODR:debug_line[0x[[LINE_TABLE_OFF2]]] |
| |
| // CHECK-NOODR:.debug_str contents: |
| // CHECK-NOODR:0x00000000: "" |
| // CHECK-NOODR:0x00000001: "clang version 3.8.0 (trunk 244290) (llvm/trunk 244270)" |
| // CHECK-NOODR:0x00000038: "odr-uniquing.cpp" |
| // CHECK-NOODR:0x00000049: "/tmp" |
| // CHECK-NOODR:0x0000004e: "S" |
| // CHECK-NOODR:0x00000050: "Nested" |
| // CHECK-NOODR:0x00000057: "N" |
| // CHECK-NOODR:0x00000059: "C" |
| // CHECK-NOODR:0x0000005b: "U" |
| // CHECK-NOODR:0x0000005d: "_Z3foov" |
| // CHECK-NOODR:0x00000065: "foo" |
| // CHECK-NOODR:0x00000069: "s" |
| // CHECK-NOODR:0x0000006b: "n" |
| // CHECK-NOODR:0x0000006d: "nc" |
| // CHECK-NOODR:0x00000070: "ac" |
| // CHECK-NOODR:0x00000073: "u" |
| // CHECK-NOODR:0x00000075: "AliasForS" |
| // CHECK-NOODR:0x0000007f: "AnonC" |
| // CHECK-NOODR:0x00000085: "(anonymous namespace)" |
| |
| // CHECK-NOODR: .apple_names |
| // CHECK-NOODR: Bucket count: 2 |
| // CHECK-NOODR: String: {{.*}} "foo" |
| // CHECK-NOODR: String: {{.*}} "_Z3foov" |
| |
| // CHECK-NOODR: .apple_types |
| // CHECK-NOODR: Bucket count: 6 |
| // CHECK-NOODR: String: {{.*}} "AnonC" |
| // CHECK-NOODR: String: {{.*}} "Nested" |
| // CHECK-NOODR: String: {{.*}} "S" |
| // CHECK-NOODR: String: {{.*}} "C" |
| // CHECK-NOODR: String: {{.*}} "U" |
| // CHECK-NOODR: String: {{.*}} "AliasForS" |
| |
| // CHECK-NOODR: .apple_namespaces |
| // CHECK-NOODR: Bucket count: 2 |
| // CHECK-NOODR: String: {{.*}} "(anonymous namespace)" |
| // CHECK-NOODR: String: {{.*}} "N" |
| |
| // CHECK-NOODR: .apple_objc |
| // CHECK-NOODR:Bucket count: 1 |