475 lines
16 KiB
C++
475 lines
16 KiB
C++
/* 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
|