Index: lib/DebugInfo/DWARF/DWARFDie.cpp =================================================================== --- lib/DebugInfo/DWARF/DWARFDie.cpp +++ lib/DebugInfo/DWARF/DWARFDie.cpp @@ -81,6 +81,60 @@ } } +static void dumpTypeTagName(raw_ostream &OS, dwarf::Tag T) { + StringRef TagStr = TagString(T); + if (!TagStr.startswith("DW_TAG_") || !TagStr.endswith("_type")) + return; + OS << TagStr.substr(7, TagStr.size() - 12) << " "; +} + +static void dumpTypeName(raw_ostream &OS, const DWARFDie &Die) { + DWARFDie D = Die.getAttributeValueAsReferencedDie(DW_AT_type); + + if (!D.isValid()) + return; + + if (const char *Name = D.getName(DINameKind::LinkageName)) { + OS << Name; + return; + } + + const dwarf::Tag T = D.getTag(); + switch (T) { + case DW_TAG_array_type: + case DW_TAG_pointer_type: + case DW_TAG_ptr_to_member_type: + case DW_TAG_reference_type: + case DW_TAG_rvalue_reference_type: + break; + default: + dumpTypeTagName(OS, T); + } + + // Follow the DW_AT_type if possible. + dumpTypeName(OS, D); + + switch (T) { + case DW_TAG_array_type: + OS << "[]"; + break; + case DW_TAG_pointer_type: + OS << '*'; + break; + case DW_TAG_ptr_to_member_type: + OS << '*'; + break; + case DW_TAG_reference_type: + OS << '&'; + break; + case DW_TAG_rvalue_reference_type: + OS << "&&"; + break; + default: + break; + } +} + static void dumpAttribute(raw_ostream &OS, const DWARFDie &Die, uint32_t *OffsetPtr, dwarf::Attribute Attr, dwarf::Form Form, unsigned Indent, @@ -137,7 +191,11 @@ // interesting. These attributes are handled below. if (Attr == DW_AT_specification || Attr == DW_AT_abstract_origin) { if (const char *Name = Die.getAttributeValueAsReferencedDie(Attr).getName(DINameKind::LinkageName)) - OS << " \"" << Name << '\"'; + OS << " \"" << Name << '"'; + } else if (Attr == DW_AT_type) { + OS << " \""; + dumpTypeName(OS, Die); + OS << '"'; } else if (Attr == DW_AT_APPLE_property_attribute) { if (Optional OptVal = formValue.getAsUnsignedConstant()) dumpApplePropertyAttribute(OS, *OptVal); Index: test/DebugInfo/AMDGPU/pointer-address-space.ll =================================================================== --- test/DebugInfo/AMDGPU/pointer-address-space.ll +++ test/DebugInfo/AMDGPU/pointer-address-space.ll @@ -15,27 +15,27 @@ ; CHECK: DW_AT_name {{.*}}"FuncVar0" ; CHECK-NEXT: DW_AT_decl_file ; CHECK-NEXT: DW_AT_decl_line -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[NONE:[a-f0-9]+]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[NONE:[a-f0-9]+]]} "{{.*}}") ; CHECK: DW_AT_name {{.*}}"FuncVar1" ; CHECK-NEXT: DW_AT_decl_file ; CHECK-NEXT: DW_AT_decl_line -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[NONE]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[NONE]]} "{{.*}}") ; CHECK: DW_AT_name {{.*}}"FuncVar2" ; CHECK-NEXT: DW_AT_decl_file ; CHECK-NEXT: DW_AT_decl_line -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[LOCAL:[a-f0-9]+]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[LOCAL:[a-f0-9]+]]} "{{.*}}") ; CHECK: DW_AT_name {{.*}}"FuncVar3" ; CHECK-NEXT: DW_AT_decl_file ; CHECK-NEXT: DW_AT_decl_line -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[PRIVATE:[a-f0-9]+]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[PRIVATE:[a-f0-9]+]]} "{{.*}}") ; CHECK: DW_AT_name {{.*}}"FuncVar4" ; CHECK-NEXT: DW_AT_decl_file ; CHECK-NEXT: DW_AT_decl_line -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[NONE]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[a-f0-9]+}} => {0x[[NONE]]} "{{.*}}") ; CHECK: 0x[[NONE]]: DW_TAG_pointer_type ; CHECK-NEXT: DW_AT_type Index: test/DebugInfo/Generic/cross-cu-inlining.ll =================================================================== --- test/DebugInfo/Generic/cross-cu-inlining.ll +++ test/DebugInfo/Generic/cross-cu-inlining.ll @@ -24,7 +24,7 @@ ; CHECK: DW_TAG_compile_unit ; CHECK: DW_AT_name {{.*}} "a.cpp" ; CHECK: DW_TAG_subprogram -; CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000[[INT:.*]]) +; CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000[[INT:.*]] "{{.*}}") ; CHECK: 0x[[INLINED:[0-9a-f]*]]:{{.*}}DW_TAG_inlined_subroutine ; CHECK: DW_AT_abstract_origin {{.*}}[[ABS_FUNC:........]] "_Z4funci" ; CHECK: DW_TAG_formal_parameter Index: test/DebugInfo/Generic/enum-types.ll =================================================================== --- test/DebugInfo/Generic/enum-types.ll +++ test/DebugInfo/Generic/enum-types.ll @@ -12,7 +12,7 @@ ; CHECK: DW_TAG_subprogram ; CHECK: DW_AT_MIPS_linkage_name {{.*}} "_Z4topA2EA" ; CHECK: DW_TAG_formal_parameter -; CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[ENUM]]}) +; CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[ENUM]]} "{{.*}}") ; CHECK: DW_TAG_compile_unit ; CHECK: DW_TAG_subprogram Index: test/DebugInfo/Generic/member-pointers.ll =================================================================== --- test/DebugInfo/Generic/member-pointers.ll +++ test/DebugInfo/Generic/member-pointers.ll @@ -5,7 +5,7 @@ ; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s ; CHECK: DW_TAG_ptr_to_member_type ; CHECK: DW_TAG_ptr_to_member_type -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE:0x[0-9a-f]+]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE:0x[0-9a-f]+]]} "{{.*}}") ; CHECK: [[TYPE]]: DW_TAG_subroutine_type ; CHECK: DW_TAG_formal_parameter ; CHECK-NEXT: DW_AT_type Index: test/DebugInfo/Generic/tu-composite.ll =================================================================== --- test/DebugInfo/Generic/tu-composite.ll +++ test/DebugInfo/Generic/tu-composite.ll @@ -21,7 +21,7 @@ ; CHECK: DW_TAG_structure_type ; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "D") ; CHECK: DW_TAG_member -; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "a") +; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "a") ; Make sure we correctly handle context of a struct being a type identifier. ; CHECK: DW_TAG_structure_type ; CHECK-NEXT: DW_AT_name [DW_FORM_strp] {{.*}}= "Nested") @@ -32,21 +32,21 @@ ; CHECK-NEXT: DW_AT_name [DW_FORM_strp] {{.*}}= "virt") ; Make sure we correctly handle type of a template_type being a type identifier. ; CHECK: DW_TAG_template_type_parameter -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]} "{{.*}}") ; CHECK-NEXT: DW_AT_name [DW_FORM_strp] {{.*}}= "T") ; Make sure we correctly handle derived-from of a typedef being a type identifier. ; CHECK: DW_TAG_typedef -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]} "{{.*}}") ; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "baz2") ; Make sure we correctly handle derived-from of a pointer type being a type identifier. ; CHECK: DW_TAG_pointer_type -; CHECK: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]}) +; CHECK: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]} "{{.*}}") ; CHECK: DW_TAG_typedef -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]} "{{.*}}") ; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "baz") ; Make sure we correctly handle derived-from of an array type being a type identifier. ; CHECK: DW_TAG_array_type -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE2]]} "{{.*}}") ; IR generated from clang -g with the following source: ; struct C { ; virtual void foo(); Index: test/DebugInfo/Generic/tu-member-pointer.ll =================================================================== --- test/DebugInfo/Generic/tu-member-pointer.ll +++ test/DebugInfo/Generic/tu-member-pointer.ll @@ -3,7 +3,7 @@ ; RUN: %llc_dwarf -filetype=obj -O0 < %s > %t ; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s ; CHECK: DW_TAG_ptr_to_member_type -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE:0x[0-9a-f]+]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE:0x[0-9a-f]+]]} "{{.*}}") ; CHECK: [[TYPE]]: DW_TAG_base_type ; IR generated from clang -g with the following source: ; struct Foo { Index: test/DebugInfo/X86/default-subrange-array.ll =================================================================== --- test/DebugInfo/X86/default-subrange-array.ll +++ test/DebugInfo/X86/default-subrange-array.ll @@ -18,7 +18,7 @@ ; CHECK: DW_TAG_class_type ; CHECK: DW_TAG_member ; CHECK-NEXT: DW_AT_name {{.*}} "x" -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] {{.*}} => {[[ARRAY:0x[0-9a-f]+]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] {{.*}} => {[[ARRAY:0x[0-9a-f]+]]} "{{.*}}") ; CHECK: [[ARRAY]]: DW_TAG_array_type ; CHECK-NEXT: DW_AT_type Index: test/DebugInfo/X86/empty-array.ll =================================================================== --- test/DebugInfo/X86/empty-array.ll +++ test/DebugInfo/X86/empty-array.ll @@ -10,13 +10,13 @@ ; CHECK: DW_TAG_class_type ; CHECK: DW_TAG_member ; CHECK-NEXT: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-f]*}}] = "x") -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[ARRAY:0x[0-9a-f]*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[ARRAY:0x[0-9a-f]*]]} "{{.*}}") ; CHECK: [[ARRAY]]: DW_TAG_array_type [{{.*}}] * -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASETYPE:0x[0-9a-f]*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASETYPE:0x[0-9a-f]*]]} "{{.*}}") ; CHECK: DW_TAG_subrange_type -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASE2:0x[0-9a-f]*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASE2:0x[0-9a-f]*]]} "{{.*}}") ; CHECK-NOT: DW_AT_upper_bound ; CHECK: [[BASETYPE]]: DW_TAG_base_type Index: test/DebugInfo/X86/fission-cu.ll =================================================================== --- test/DebugInfo/X86/fission-cu.ll +++ test/DebugInfo/X86/fission-cu.ll @@ -75,7 +75,7 @@ ; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x1f1f859683d49324) ; CHECK: DW_TAG_variable ; CHECK: DW_AT_name [DW_FORM_GNU_str_index] ( indexed (00000003) string = "a") -; CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[TYPE:0x[0-9a-f]*]]}) +; CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[TYPE:0x[0-9a-f]*]]} "{{.*}}") ; CHECK: DW_AT_external [DW_FORM_flag_present] (true) ; CHECK: DW_AT_decl_file [DW_FORM_data1] (0x01) ; CHECK: DW_AT_decl_line [DW_FORM_data1] (1) Index: test/DebugInfo/X86/nondefault-subrange-array.ll =================================================================== --- test/DebugInfo/X86/nondefault-subrange-array.ll +++ test/DebugInfo/X86/nondefault-subrange-array.ll @@ -12,13 +12,13 @@ ; CHECK: DW_TAG_class_type ; CHECK: DW_TAG_member ; CHECK-NEXT: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-f]*}}] = "x") -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[ARRAY:0x[0-9a-f]*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[ARRAY:0x[0-9a-f]*]]} "{{.*}}") ; CHECK: [[ARRAY]]: DW_TAG_array_type [{{.*}}] * -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASE:0x[0-9a-f]*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASE:0x[0-9a-f]*]]} "{{.*}}") ; CHECK: DW_TAG_subrange_type -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASE2:0x[0-9a-f]*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[BASE2:0x[0-9a-f]*]]} "{{.*}}") ; CHECK-NEXT: DW_AT_lower_bound [DW_FORM_data8] (0xfffffffffffffffd) ; CHECK-NEXT: DW_AT_count [DW_FORM_data1] (0x2a) Index: test/DebugInfo/X86/ref_addr_relocation.ll =================================================================== --- test/DebugInfo/X86/ref_addr_relocation.ll +++ test/DebugInfo/X86/ref_addr_relocation.ll @@ -57,11 +57,11 @@ ; CHECK-DWARF: 0x[[ADDR:.*]]: DW_TAG_structure_type ; CHECK-DWARF: DW_TAG_compile_unit ; CHECK-DWARF: DW_TAG_variable -; CHECK-DWARF: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[ADDR]]) +; CHECK-DWARF: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[ADDR]] "{{.*}}") ; CHECK-DWARF2: DW_TAG_compile_unit ; CHECK-DWARF2: DW_TAG_variable -; CHECK-DWARF2: DW_AT_type [DW_FORM_ref4] {{.*}} => {[[ADDR:.*]]}) +; CHECK-DWARF2: DW_AT_type [DW_FORM_ref4] {{.*}} => {[[ADDR:.*]]} "{{.*}}") ; CHECK-DWARF2: [[ADDR]]: DW_TAG_structure_type source_filename = "test/DebugInfo/X86/ref_addr_relocation.ll" Index: test/DebugInfo/X86/subrange-type.ll =================================================================== --- test/DebugInfo/X86/subrange-type.ll +++ test/DebugInfo/X86/subrange-type.ll @@ -3,7 +3,7 @@ ; Make sure that the base type from the subrange type has a name. ; CHECK: DW_TAG_subrange_type -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]+}} => {[[SUBTYPE:0x[0-9a-f]*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{[0-9a-f]+}} => {[[SUBTYPE:0x[0-9a-f]*]]} "{{.*}}") ; CHECK: [[SUBTYPE]]: DW_TAG_base_type ; CHECK-NEXT: DW_AT_name Index: test/DebugInfo/dwarfdump-type-units.test =================================================================== --- test/DebugInfo/dwarfdump-type-units.test +++ test/DebugInfo/dwarfdump-type-units.test @@ -6,11 +6,11 @@ CHECK: DW_TAG_variable CHECK-NEXT: DW_AT_name {{.*}}"f" -CHECK: DW_AT_type [DW_FORM_ref_sig8] ([[FOO_SIG:0x[0-9a-f]*]]) +CHECK: DW_AT_type [DW_FORM_ref_sig8] ([[FOO_SIG:0x[0-9a-f]*]] "{{.*}}") CHECK: DW_TAG_variable CHECK-NEXT: DW_AT_name {{.*}}"b" -CHECK: DW_AT_type [DW_FORM_ref_sig8] ([[BAR_SIG:0x[0-9a-f]*]]) +CHECK: DW_AT_type [DW_FORM_ref_sig8] ([[BAR_SIG:0x[0-9a-f]*]] "{{.*}}") CHECK: debug_types contents: Index: test/Linker/Inputs/type-unique-simple2-a.ll =================================================================== --- test/Linker/Inputs/type-unique-simple2-a.ll +++ test/Linker/Inputs/type-unique-simple2-a.ll @@ -8,9 +8,9 @@ ; CHECK: DW_TAG_compile_unit ; CHECK: DW_TAG_formal_parameter -; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[INT]]) +; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[INT]] "{{.*}}") ; CHECK: DW_TAG_variable -; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[BASE]]) +; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[BASE]] "{{.*}}") ; Make sure llvm-link only generates a single copy of the struct. ; LINK: DW_TAG_structure_type @@ -22,13 +22,13 @@ ; Base *b; ; }; ; Content of foo.cpp: -; +; ; #include "a.hpp" ; void f(int a) { ; Base t; ; } ; Content of bar.cpp: -; +; ; #include "a.hpp" ; void f(int); ; void g(int a) { Index: test/Linker/type-unique-simple-a.ll =================================================================== --- test/Linker/type-unique-simple-a.ll +++ test/Linker/type-unique-simple-a.ll @@ -15,9 +15,9 @@ ; CHECK: DW_TAG_compile_unit ; CHECK: DW_TAG_formal_parameter -; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[INT]]) +; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[INT]] "{{.*}}") ; CHECK: DW_TAG_variable -; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[BASE]]) +; CHECK: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[BASE]] "{{.*}}") ; Make sure llvm-link only generates a single copy of the struct. ; LINK: DW_TAG_structure_type @@ -27,13 +27,13 @@ ; int a; ; }; ; Content of foo.cpp: -; +; ; #include "a.hpp" ; void f(int a) { ; Base t; ; } ; Content of bar.cpp: -; +; ; #include "a.hpp" ; void f(int); ; void g(int a) { Index: test/Linker/type-unique-type-array-a.ll =================================================================== --- test/Linker/type-unique-type-array-a.ll +++ test/Linker/type-unique-type-array-a.ll @@ -8,13 +8,13 @@ ; 1 struct SA { ; 2 int a; ; 3 }; -; 4 +; 4 ; 5 class A { ; 6 public: ; 7 void testA(SA a) { ; 8 } ; 9 }; -; 10 +; 10 ; 11 void topA(A *a, SA sa) { ; 12 a->testA(sa); ; 13 } @@ -26,7 +26,7 @@ ; CHECK: DW_AT_name {{.*}} "testA" ; CHECK: DW_TAG_formal_parameter ; CHECK: DW_TAG_formal_parameter -; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[STRUCT:.*]]}) +; CHECK-NEXT: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[STRUCT:.*]]} "{{.*}}") ; CHECK: 0x[[STRUCT]]: DW_TAG_structure_type ; CHECK-NEXT: DW_AT_name {{.*}} "SA" Index: test/tools/dsymutil/X86/basic-linking-x86.test =================================================================== --- test/tools/dsymutil/X86/basic-linking-x86.test +++ test/tools/dsymutil/X86/basic-linking-x86.test @@ -26,7 +26,7 @@ CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c") CHECK: DW_AT_decl_line [DW_FORM_data1] (23) CHECK: DW_AT_prototyped [DW_FORM_flag] (0x01) -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063} "{{.*}}") CHECK: DW_AT_external [DW_FORM_flag] (0x01) CHECK: DW_AT_accessibility [DW_FORM_data1] (DW_ACCESS_public) CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000ea0) @@ -36,13 +36,13 @@ CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000056] = "argc") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c") CHECK: DW_AT_decl_line [DW_FORM_data1] (23) -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063} "{{.*}}") CHECK: DW_AT_location [DW_FORM_block1] (<0x02> 91 78 ) CHECK: DW_TAG_formal_parameter [3] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000005b] = "argv") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c") CHECK: DW_AT_decl_line [DW_FORM_data1] (23) -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006a => {0x0000006a} "{{.*}}") CHECK: DW_AT_location [DW_FORM_block1] (<0x02> 91 70 ) CHECK: NULL CHECK: DW_TAG_base_type [4] @@ -50,11 +50,11 @@ CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) CHECK: DW_AT_byte_size [DW_FORM_data1] (0x04) CHECK: DW_TAG_pointer_type [5] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006f => {0x0000006f}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006f => {0x0000006f} "{{.*}}") CHECK: DW_TAG_pointer_type [5] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0074 => {0x00000074}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0074 => {0x00000074} "{{.*}}") CHECK: DW_TAG_const_type [6] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0079 => {0x00000079}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0079 => {0x00000079} "{{.*}}") CHECK: DW_TAG_base_type [4] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000064] = "char") CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) @@ -73,30 +73,30 @@ CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int") CHECK: DW_TAG_variable [7] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000072] = "private_int") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7} "{{.*}}") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c") BASIC: DW_AT_location [DW_FORM_block1] (<0x09> 03 08 10 00 00 01 00 00 00 ) ARCHIVE: DW_AT_location [DW_FORM_block1] (<0x09> 03 04 10 00 00 01 00 00 00 ) CHECK: DW_TAG_variable [7] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007e] = "baz") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7} "{{.*}}") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c") CHECK: DW_AT_location [DW_FORM_block1] (<0x09> 03 00 10 00 00 01 00 00 00 ) CHECK: DW_TAG_subprogram [2] * CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000082] = "foo") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7} "{{.*}}") CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000ed0) CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f19) CHECK: DW_AT_frame_base [DW_FORM_block1] (<0x01> 56 ) CHECK: DW_TAG_formal_parameter [3] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7} "{{.*}}") CHECK: DW_AT_location [DW_FORM_block1] (<0x02> 91 7c ) CHECK: NULL CHECK: DW_TAG_subprogram [8] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x000000a7} "{{.*}}") CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f20) CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f37) CHECK: DW_AT_frame_base [DW_FORM_block1] (<0x01> 56 ) @@ -112,28 +112,28 @@ CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40) CHECK: DW_TAG_variable [9] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000097] = "val") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x00000162}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x00000162} "{{.*}}") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic3.c") BASIC: DW_AT_location [DW_FORM_block1] (<0x09> 03 04 10 00 00 01 00 00 00 ) ARCHIVE: DW_AT_location [DW_FORM_block1] (<0x09> 03 08 10 00 00 01 00 00 00 ) CHECK: DW_TAG_volatile_type [10] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167} "{{.*}}") CHECK: DW_TAG_base_type [4] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "int") CHECK: DW_TAG_subprogram [2] * CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009b] = "bar") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167} "{{.*}}") CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40) CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f84) CHECK: DW_AT_frame_base [DW_FORM_block1] (<0x01> 56 ) CHECK: DW_TAG_formal_parameter [3] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167} "{{.*}}") CHECK: DW_AT_location [DW_FORM_block1] (<0x02> 91 78 ) CHECK: NULL CHECK: DW_TAG_subprogram [8] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000167} "{{.*}}") CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90) CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000fa9) CHECK: DW_AT_frame_base [DW_FORM_block1] (<0x01> 56 ) Index: test/tools/dsymutil/X86/basic-lto-dw4-linking-x86.test =================================================================== --- test/tools/dsymutil/X86/basic-lto-dw4-linking-x86.test +++ test/tools/dsymutil/X86/basic-lto-dw4-linking-x86.test @@ -20,23 +20,23 @@ CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000027] = "main") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c") CHECK: DW_AT_prototyped [DW_FORM_flag_present] (true) -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000000000a1) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000000000a1 "{{.*}}") CHECK: DW_AT_external [DW_FORM_flag_present] (true) -CHECK: DW_TAG_formal_parameter [3] +CHECK: DW_TAG_formal_parameter [3] CHECK: DW_AT_location [DW_FORM_exprloc] (<0x3> 55 93 04 ) CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000002c] = "argc") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000000000a1) -CHECK: DW_TAG_formal_parameter [4] +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x00000000000000a1 "{{.*}}") +CHECK: DW_TAG_formal_parameter [4] CHECK: DW_AT_location [DW_FORM_exprloc] (<0x1> 54 ) CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000031] = "argv") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "{{.*}}") CHECK: NULL CHECK: DW_TAG_pointer_type [5] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0065 => {0x00000065}) -CHECK: DW_TAG_pointer_type [5] -CHECK: DW_TAG_const_type [6] -CHECK: DW_TAG_base_type [7] +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0065 => {0x00000065} "{{.*}}") +CHECK: DW_TAG_pointer_type [5] +CHECK: DW_TAG_const_type [6] +CHECK: DW_TAG_base_type [7] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000036] = "char") CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) CHECK: DW_AT_byte_size [DW_FORM_data1] (0x01) @@ -51,18 +51,18 @@ CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000044) CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50) CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000037) -CHECK: DW_TAG_base_type [7] +CHECK: DW_TAG_base_type [7] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000044] = "int") -CHECK: DW_TAG_variable [8] +CHECK: DW_TAG_variable [8] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000048] = "baz") CHECK: DW_AT_location [DW_FORM_exprloc] (<0x9> 03 00 10 00 00 01 00 00 00 ) -CHECK: DW_TAG_variable [8] +CHECK: DW_TAG_variable [8] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000004c] = "private_int") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c") CHECK: DW_AT_location [DW_FORM_exprloc] (<0x9> 03 08 10 00 00 01 00 00 00 ) -CHECK: DW_TAG_subprogram [9] +CHECK: DW_TAG_subprogram [9] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000058] = "inc") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1} "{{.*}}") CHECK: DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) CHECK: DW_TAG_subprogram [10] * CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50) @@ -71,12 +71,12 @@ CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000005c] = "foo") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c") CHECK: DW_AT_prototyped [DW_FORM_flag_present] (true) -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1} "{{.*}}") CHECK: DW_TAG_formal_parameter [11] CHECK: DW_AT_location [DW_FORM_sec_offset] (0x00000000) CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "arg") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1}) -CHECK: DW_TAG_inlined_subroutine [12] +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x002a => {0x000000a1} "{{.*}}") +CHECK: DW_TAG_inlined_subroutine [12] CHECK: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x005b => {0x000000d2} "inc") CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f61) CHECK: DW_AT_high_pc [DW_FORM_data4] (0x0000000f) @@ -91,12 +91,12 @@ CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000009a) CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90) CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000024) -CHECK: DW_TAG_variable [13] +CHECK: DW_TAG_variable [13] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000006d] = "val") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic3.c") CHECK: DW_AT_location [DW_FORM_exprloc] (<0x9> 03 04 10 00 00 01 00 00 00 ) -CHECK: DW_TAG_volatile_type [14] -CHECK: DW_TAG_subprogram [15] +CHECK: DW_TAG_volatile_type [14] +CHECK: DW_TAG_subprogram [15] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000058] = "inc") CHECK: DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) CHECK: DW_TAG_subprogram [2] * @@ -107,7 +107,7 @@ CHECK: DW_TAG_formal_parameter [16] CHECK: DW_AT_location [DW_FORM_sec_offset] (0x00000025) CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000060] = "arg") -CHECK: DW_TAG_inlined_subroutine [17] +CHECK: DW_TAG_inlined_subroutine [17] CHECK: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0044 => {0x0000015f} "inc") CHECK: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 CHECK: [0x0000000100000f94 - 0x0000000100000f9a) @@ -124,11 +124,11 @@ CHECK-NEXT: {{^$}} CHECK-NEXT: 0x00000025: Beginning address offset: 0x0000000000000000 CHECK-NEXT: Ending address offset: 0x000000000000000f -CHECK-NEXT: Location description: 55 93 04 +CHECK-NEXT: Location description: 55 93 04 CHECK-NEXT: {{^$}} CHECK-NEXT: Beginning address offset: 0x0000000000000019 CHECK-NEXT: Ending address offset: 0x000000000000001d -CHECK-NEXT: Location description: 55 93 04 +CHECK-NEXT: Location description: 55 93 04 CHECK: .debug_aranges contents: CHECK-NEXT: Address Range Header: length = 0x0000002c, version = 0x0002, cu_offset = 0x00000000, addr_size = 0x08, seg_size = 0x00 @@ -146,7 +146,7 @@ CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- CHECK-NEXT: 0x0000000100000f40 26 0 1 0 0 is_stmt CHECK-NEXT: 0x0000000100000f44 27 10 1 0 0 is_stmt prologue_end -CHECK-NEXT: 0x0000000100000f49 27 3 1 0 0 +CHECK-NEXT: 0x0000000100000f49 27 3 1 0 0 CHECK-NEXT: 0x0000000100000f4b 27 3 1 0 0 end_sequence CHECK: Dir Mod Time File Len File Name @@ -156,13 +156,13 @@ CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- CHECK-NEXT: 0x0000000100000f50 19 0 1 0 0 is_stmt CHECK-NEXT: 0x0000000100000f54 20 18 1 0 0 is_stmt prologue_end -CHECK-NEXT: 0x0000000100000f5a 20 17 1 0 0 -CHECK-NEXT: 0x0000000100000f5c 20 10 1 0 0 +CHECK-NEXT: 0x0000000100000f5a 20 17 1 0 0 +CHECK-NEXT: 0x0000000100000f5c 20 10 1 0 0 CHECK-NEXT: 0x0000000100000f61 15 10 1 0 0 is_stmt CHECK-NEXT: 0x0000000100000f70 20 23 1 0 0 is_stmt -CHECK-NEXT: 0x0000000100000f74 20 36 1 0 0 -CHECK-NEXT: 0x0000000100000f83 20 31 1 0 0 -CHECK-NEXT: 0x0000000100000f85 20 3 1 0 0 +CHECK-NEXT: 0x0000000100000f74 20 36 1 0 0 +CHECK-NEXT: 0x0000000100000f83 20 31 1 0 0 +CHECK-NEXT: 0x0000000100000f85 20 3 1 0 0 CHECK-NEXT: 0x0000000100000f87 20 3 1 0 0 end_sequence CHECK: Dir Mod Time File Len File Name @@ -176,7 +176,7 @@ CHECK-NEXT: 0x0000000100000f9f 12 10 1 0 0 is_stmt CHECK-NEXT: 0x0000000100000fa7 20 1 1 0 0 is_stmt CHECK-NEXT: 0x0000000100000fa9 19 18 1 0 0 is_stmt -CHECK-NEXT: 0x0000000100000fab 19 10 1 0 0 +CHECK-NEXT: 0x0000000100000fab 19 10 1 0 0 CHECK-NEXT: 0x0000000100000fb2 20 1 1 0 0 is_stmt CHECK-NEXT: 0x0000000100000fb4 20 1 1 0 0 is_stmt end_sequence Index: test/tools/dsymutil/X86/basic-lto-linking-x86.test =================================================================== --- test/tools/dsymutil/X86/basic-lto-linking-x86.test +++ test/tools/dsymutil/X86/basic-lto-linking-x86.test @@ -19,7 +19,7 @@ CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic1.c") CHECK: DW_AT_decl_line [DW_FORM_data1] (23) CHECK: DW_AT_prototyped [DW_FORM_flag] (0x01) -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063} "{{.*}}") CHECK: DW_AT_external [DW_FORM_flag] (0x01) CHECK: DW_AT_accessibility [DW_FORM_data1] (DW_ACCESS_public) CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f40) @@ -27,11 +27,11 @@ CHECK: DW_AT_frame_base [DW_FORM_block1] (<0x01> 56 ) CHECK: DW_TAG_formal_parameter [3] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000056] = "argc") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0063 => {0x00000063} "{{.*}}") CHECK: DW_AT_location [DW_FORM_block1] (<0x03> 55 93 04 ) CHECK: DW_TAG_formal_parameter [3] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000005b] = "argv") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006a => {0x0000006a} "{{.*}}") CHECK: DW_AT_location [DW_FORM_block1] (<0x01> 54 ) CHECK: NULL CHECK: DW_TAG_base_type [4] @@ -39,11 +39,11 @@ CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) CHECK: DW_AT_byte_size [DW_FORM_data1] (0x04) CHECK: DW_TAG_pointer_type [5] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006f => {0x0000006f}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x006f => {0x0000006f} "{{.*}}") CHECK: DW_TAG_pointer_type [5] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0074 => {0x00000074}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0074 => {0x00000074} "{{.*}}") CHECK: DW_TAG_const_type [6] -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0079 => {0x00000079}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x0079 => {0x00000079} "{{.*}}") CHECK: DW_TAG_base_type [4] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000064] = "char") CHECK: DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) @@ -60,22 +60,22 @@ CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50) CHECK: DW_TAG_variable [7] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000072] = "private_int") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic2.c") CHECK: DW_AT_location [DW_FORM_block1] (<0x09> 03 08 10 00 00 01 00 00 00 ) CHECK: DW_TAG_variable [7] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007e] = "baz") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_AT_location [DW_FORM_block1] (<0x09> 03 00 10 00 00 01 00 00 00 ) CHECK: DW_TAG_subprogram [8] * CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000082] = "foo") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f50) CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000f89) CHECK: DW_AT_frame_base [DW_FORM_block1] (<0x01> 56 ) CHECK: DW_TAG_formal_parameter [9] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_AT_location [DW_FORM_data4] (0x00000000) CHECK: DW_TAG_inlined_subroutine [10] CHECK: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x00a7 => {0x00000128} "inc") @@ -85,7 +85,7 @@ CHECK: NULL CHECK: DW_TAG_subprogram [11] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) CHECK: NULL @@ -99,20 +99,20 @@ CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90) CHECK: DW_TAG_variable [12] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000097] = "val") -CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x00000176}) +CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x00000176} "{{.*}}") CHECK: DW_AT_decl_file [DW_FORM_data1] ("/Inputs{{[/\\]}}basic3.c") CHECK: DW_AT_location [DW_FORM_block1] (<0x09> 03 04 10 00 00 01 00 00 00 ) CHECK: DW_TAG_volatile_type [13] -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_TAG_subprogram [8] * CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009b] = "bar") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f90) CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000100000fb4) CHECK: DW_AT_frame_base [DW_FORM_block1] (<0x01> 56 ) CHECK: DW_TAG_formal_parameter [9] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000086] = "arg") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: DW_AT_location [DW_FORM_data4] (0x00000025) CHECK: DW_TAG_lexical_block [14] * CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000100000f94) @@ -126,21 +126,21 @@ CHECK: NULL CHECK: DW_TAG_subprogram [11] CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008a] = "inc") -CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063) +CHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000063 "{{.*}}") CHECK: NULL CHECK:.debug_loc contents: CHECK-NEXT: 0x00000000: Beginning address offset: 0x0000000000000000 CHECK-NEXT: Ending address offset: 0x000000000000000e -CHECK-NEXT: Location description: 55 93 04 +CHECK-NEXT: Location description: 55 93 04 CHECK-NEXT: {{^$}} CHECK-NEXT: 0x00000025: Beginning address offset: 0x0000000000000000 CHECK-NEXT: Ending address offset: 0x000000000000000f -CHECK-NEXT: Location description: 55 93 04 +CHECK-NEXT: Location description: 55 93 04 CHECK-NEXT: {{^$}} CHECK-NEXT: Beginning address offset: 0x0000000000000019 CHECK-NEXT: Ending address offset: 0x000000000000001d -CHECK-NEXT: Location description: 55 93 04 +CHECK-NEXT: Location description: 55 93 04 CHECK: .debug_aranges contents: CHECK-NEXT: Address Range Header: length = 0x0000002c, version = 0x0002, cu_offset = 0x00000000, addr_size = 0x08, seg_size = 0x00 Index: test/tools/dsymutil/X86/modules.m =================================================================== --- test/tools/dsymutil/X86/modules.m +++ test/tools/dsymutil/X86/modules.m @@ -61,7 +61,7 @@ // CHECK-NOT: DW_TAG // CHECK: 0x0[[BARTD:.*]]: DW_TAG_typedef // CHECK-NOT: DW_TAG -// CHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[BAR]]) +// CHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[BAR]] "{{.*}}") // CHECK: DW_TAG_structure_type // CHECK-NEXT: DW_AT_name{{.*}}"S" // CHECK-NOT: DW_TAG @@ -116,7 +116,7 @@ // CHECK: DW_AT_type {{.*}}{0x{{0*}}[[PTR:.*]]} // // CHECK: 0x{{0*}}[[PTR]]: DW_TAG_pointer_type -// CHECK-NEXT DW_AT_type [DW_FORM_ref_addr] {0x{{0*}}[[INTERFACE]]) +// CHECK-NEXT DW_AT_type [DW_FORM_ref_addr] {0x{{0*}}[[INTERFACE]] {{.*}}) extern int odr_violation; @import Foo; @@ -134,9 +134,9 @@ // CHECK: DW_AT_name {{.*}}"odr_violation.c" // CHECK: DW_TAG_variable // CHECK: DW_AT_name {{.*}}"odr_violation" -// CHECK: DW_AT_type [DW_FORM_ref4] ({{.*}}{0x{{0*}}[[BAR2:.*]]}) +// CHECK: DW_AT_type [DW_FORM_ref4] ({{.*}}{0x{{0*}}[[BAR2:.*]]} {{.*}}) // CHECK: 0x{{0*}}[[BAR2]]: DW_TAG_typedef -// CHECK: DW_AT_type [DW_FORM_ref4] ({{.*}}{0x{{0*}}[[BAR3:.*]]}) +// CHECK: DW_AT_type [DW_FORM_ref4] ({{.*}}{0x{{0*}}[[BAR3:.*]]} {{.*}}) // CHECK: DW_AT_name {{.*}}"Bar" // CHECK: 0x{{0*}}[[BAR3]]: DW_TAG_structure_type // CHECK-NEXT: DW_AT_name {{.*}}"Bar" Index: test/tools/dsymutil/X86/odr-member-functions.cpp =================================================================== --- test/tools/dsymutil/X86/odr-member-functions.cpp +++ test/tools/dsymutil/X86/odr-member-functions.cpp @@ -61,7 +61,7 @@ // CHECK-NOT: DW_TAG // CHECK: DW_AT_name {{.*}}"s" // CHECK-NOT: DW_TAG -// CHECK: DW_AT_type {{.*}}[[S]]) +// CHECK: DW_AT_type {{.*}}[[S]] "{{.*}}") // CHECK: DW_TAG_inlined_subroutine // CHECK-NEXT: DW_AT_abstract_origin{{.*}}[[FOO_SUB]] // CHECK-NOT: DW_TAG Index: test/tools/llvm-dwarfdump/X86/verify_type_names.s =================================================================== --- /dev/null +++ test/tools/llvm-dwarfdump/X86/verify_type_names.s @@ -0,0 +1,472 @@ +# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \ +# RUN: | llvm-dwarfdump -debug-dump=info - \ +# RUN: | FileCheck %s +# +# Compile with: clang++ -g -S verify_type_names.cpp +# struct Struct { +# int i; +# }; +# +# int F(const Struct& s) { +# int arr[3] = {1,2,3}; +# int* p = arr; +# return s.i + arr[1] + *p; +# } +# +# CHECK: DW_TAG_subprogram +# CHECK: DW_AT_type {{.*}} "int" +# CHECK: DW_TAG_formal_parameter +# CHECK: DW_AT_type {{.*}} "const Struct&" +# CHECK: DW_TAG_variable +# CHECK: DW_AT_type {{.*}} "int[]" +# CHECK: DW_TAG_variable +# CHECK: DW_AT_type {{.*}} "int*" +# CHECK: DW_TAG_reference_type +# CHECK: DW_AT_type {{.*}} "const Struct" +# CHECK: DW_TAG_const_type +# CHECK: DW_AT_type {{.*}} "Struct" +# CHECK: DW_TAG_array_type +# CHECK: DW_AT_type {{.*}} "int" +# CHECK: DW_TAG_subrange_type +# CHECK: DW_AT_type {{.*}} "sizetype" +# CHECK: DW_TAG_pointer_type +# CHECK: DW_AT_type {{.*}} "int" + + + .section __TEXT,__text,regular,pure_instructions + .macosx_version_min 10, 12 + .globl __Z1FRK6Struct + .p2align 4, 0x90 +__Z1FRK6Struct: ## @_Z1FRK6Struct +Lfunc_begin0: + .file 1 "verify_type_names.cpp" + .loc 1 5 0 ## verify_type_names.cpp:5:0 + .cfi_startproc +## BB#0: + pushq %rbp +Lcfi0: + .cfi_def_cfa_offset 16 +Lcfi1: + .cfi_offset %rbp, -16 + movq %rsp, %rbp +Lcfi2: + .cfi_def_cfa_register %rbp + subq $48, %rsp + leaq -20(%rbp), %rax + movq ___stack_chk_guard@GOTPCREL(%rip), %rcx + movq (%rcx), %rcx + movq %rcx, -8(%rbp) + movq %rdi, -32(%rbp) +Ltmp0: + ##DEBUG_VALUE: F:arr <- [%RAX+0] + .loc 1 6 7 prologue_end ## verify_type_names.cpp:6:7 + movq l__ZZ1FRK6StructE3arr(%rip), %rcx + movq %rcx, -20(%rbp) + movl l__ZZ1FRK6StructE3arr+8(%rip), %edx + movl %edx, -12(%rbp) + .loc 1 7 8 ## verify_type_names.cpp:7:8 + movq %rax, -40(%rbp) + .loc 1 8 10 ## verify_type_names.cpp:8:10 + movq -32(%rbp), %rax +Ltmp1: + .loc 1 8 12 is_stmt 0 ## verify_type_names.cpp:8:12 + movl (%rax), %edx + .loc 1 8 14 ## verify_type_names.cpp:8:14 + addl -16(%rbp), %edx + .loc 1 8 26 ## verify_type_names.cpp:8:26 + movq -40(%rbp), %rax + .loc 1 8 23 ## verify_type_names.cpp:8:23 + addl (%rax), %edx + movq ___stack_chk_guard@GOTPCREL(%rip), %rax + movq (%rax), %rax + movq -8(%rbp), %rcx + cmpq %rcx, %rax + movl %edx, -44(%rbp) ## 4-byte Spill + jne LBB0_2 +## BB#1: + .loc 1 8 3 ## verify_type_names.cpp:8:3 + movl -44(%rbp), %eax ## 4-byte Reload + addq $48, %rsp + popq %rbp + retq +LBB0_2: + .loc 1 0 0 ## verify_type_names.cpp:0:0 + callq ___stack_chk_fail +Ltmp2: +Lfunc_end0: + .cfi_endproc + + .section __TEXT,__const + .p2align 2 ## @_ZZ1FRK6StructE3arr +l__ZZ1FRK6StructE3arr: + .long 1 ## 0x1 + .long 2 ## 0x2 + .long 3 ## 0x3 + + .section __DWARF,__debug_str,regular,debug +Linfo_string: + .asciz "Apple LLVM version 9.0.0 (clang-900.0.37)" ## string offset=0 + .asciz "verify_type_names.cpp" ## string offset=42 + .asciz "/private/tmp" ## string offset=64 + .asciz "F" ## string offset=77 + .asciz "_Z1FRK6Struct" ## string offset=79 + .asciz "int" ## string offset=93 + .asciz "s" ## string offset=97 + .asciz "Struct" ## string offset=99 + .asciz "i" ## string offset=106 + .asciz "arr" ## string offset=108 + .asciz "sizetype" ## string offset=112 + .asciz "p" ## string offset=121 + .section __DWARF,__debug_loc,regular,debug +Lsection_debug_loc: + .section __DWARF,__debug_abbrev,regular,debug +Lsection_abbrev: + .byte 1 ## Abbreviation Code + .byte 17 ## DW_TAG_compile_unit + .byte 1 ## DW_CHILDREN_yes + .byte 37 ## DW_AT_producer + .byte 14 ## DW_FORM_strp + .byte 19 ## DW_AT_language + .byte 5 ## DW_FORM_data2 + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 16 ## DW_AT_stmt_list + .byte 23 ## DW_FORM_sec_offset + .byte 27 ## DW_AT_comp_dir + .byte 14 ## DW_FORM_strp + .byte 17 ## DW_AT_low_pc + .byte 1 ## DW_FORM_addr + .byte 18 ## DW_AT_high_pc + .byte 6 ## DW_FORM_data4 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 2 ## Abbreviation Code + .byte 46 ## DW_TAG_subprogram + .byte 1 ## DW_CHILDREN_yes + .byte 17 ## DW_AT_low_pc + .byte 1 ## DW_FORM_addr + .byte 18 ## DW_AT_high_pc + .byte 6 ## DW_FORM_data4 + .byte 64 ## DW_AT_frame_base + .byte 24 ## DW_FORM_exprloc + .byte 110 ## DW_AT_linkage_name + .byte 14 ## DW_FORM_strp + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 58 ## DW_AT_decl_file + .byte 11 ## DW_FORM_data1 + .byte 59 ## DW_AT_decl_line + .byte 11 ## DW_FORM_data1 + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 63 ## DW_AT_external + .byte 25 ## DW_FORM_flag_present + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 3 ## Abbreviation Code + .byte 5 ## DW_TAG_formal_parameter + .byte 0 ## DW_CHILDREN_no + .byte 2 ## DW_AT_location + .byte 24 ## DW_FORM_exprloc + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 58 ## DW_AT_decl_file + .byte 11 ## DW_FORM_data1 + .byte 59 ## DW_AT_decl_line + .byte 11 ## DW_FORM_data1 + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 4 ## Abbreviation Code + .byte 52 ## DW_TAG_variable + .byte 0 ## DW_CHILDREN_no + .byte 2 ## DW_AT_location + .byte 24 ## DW_FORM_exprloc + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 58 ## DW_AT_decl_file + .byte 11 ## DW_FORM_data1 + .byte 59 ## DW_AT_decl_line + .byte 11 ## DW_FORM_data1 + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 5 ## Abbreviation Code + .byte 36 ## DW_TAG_base_type + .byte 0 ## DW_CHILDREN_no + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 62 ## DW_AT_encoding + .byte 11 ## DW_FORM_data1 + .byte 11 ## DW_AT_byte_size + .byte 11 ## DW_FORM_data1 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 6 ## Abbreviation Code + .byte 16 ## DW_TAG_reference_type + .byte 0 ## DW_CHILDREN_no + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 7 ## Abbreviation Code + .byte 38 ## DW_TAG_const_type + .byte 0 ## DW_CHILDREN_no + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 8 ## Abbreviation Code + .byte 19 ## DW_TAG_structure_type + .byte 1 ## DW_CHILDREN_yes + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 11 ## DW_AT_byte_size + .byte 11 ## DW_FORM_data1 + .byte 58 ## DW_AT_decl_file + .byte 11 ## DW_FORM_data1 + .byte 59 ## DW_AT_decl_line + .byte 11 ## DW_FORM_data1 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 9 ## Abbreviation Code + .byte 13 ## DW_TAG_member + .byte 0 ## DW_CHILDREN_no + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 58 ## DW_AT_decl_file + .byte 11 ## DW_FORM_data1 + .byte 59 ## DW_AT_decl_line + .byte 11 ## DW_FORM_data1 + .byte 56 ## DW_AT_data_member_location + .byte 11 ## DW_FORM_data1 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 10 ## Abbreviation Code + .byte 1 ## DW_TAG_array_type + .byte 1 ## DW_CHILDREN_yes + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 11 ## Abbreviation Code + .byte 33 ## DW_TAG_subrange_type + .byte 0 ## DW_CHILDREN_no + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 55 ## DW_AT_count + .byte 11 ## DW_FORM_data1 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 12 ## Abbreviation Code + .byte 36 ## DW_TAG_base_type + .byte 0 ## DW_CHILDREN_no + .byte 3 ## DW_AT_name + .byte 14 ## DW_FORM_strp + .byte 11 ## DW_AT_byte_size + .byte 11 ## DW_FORM_data1 + .byte 62 ## DW_AT_encoding + .byte 11 ## DW_FORM_data1 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 13 ## Abbreviation Code + .byte 15 ## DW_TAG_pointer_type + .byte 0 ## DW_CHILDREN_no + .byte 73 ## DW_AT_type + .byte 19 ## DW_FORM_ref4 + .byte 0 ## EOM(1) + .byte 0 ## EOM(2) + .byte 0 ## EOM(3) + .section __DWARF,__debug_info,regular,debug +Lsection_info: +Lcu_begin0: + .long 173 ## Length of Unit + .short 4 ## DWARF version number +Lset0 = Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section + .long Lset0 + .byte 8 ## Address Size (in bytes) + .byte 1 ## Abbrev [1] 0xb:0xa6 DW_TAG_compile_unit + .long 0 ## DW_AT_producer + .short 4 ## DW_AT_language + .long 42 ## DW_AT_name +Lset1 = Lline_table_start0-Lsection_line ## DW_AT_stmt_list + .long Lset1 + .long 64 ## DW_AT_comp_dir + .quad Lfunc_begin0 ## DW_AT_low_pc +Lset2 = Lfunc_end0-Lfunc_begin0 ## DW_AT_high_pc + .long Lset2 + .byte 2 ## Abbrev [2] 0x2a:0x48 DW_TAG_subprogram + .quad Lfunc_begin0 ## DW_AT_low_pc +Lset3 = Lfunc_end0-Lfunc_begin0 ## DW_AT_high_pc + .long Lset3 + .byte 1 ## DW_AT_frame_base + .byte 86 + .long 79 ## DW_AT_linkage_name + .long 77 ## DW_AT_name + .byte 1 ## DW_AT_decl_file + .byte 5 ## DW_AT_decl_line + .long 114 ## DW_AT_type + ## DW_AT_external + .byte 3 ## Abbrev [3] 0x47:0xe DW_TAG_formal_parameter + .byte 2 ## DW_AT_location + .byte 145 + .byte 96 + .long 97 ## DW_AT_name + .byte 1 ## DW_AT_decl_file + .byte 5 ## DW_AT_decl_line + .long 121 ## DW_AT_type + .byte 4 ## Abbrev [4] 0x55:0xe DW_TAG_variable + .byte 2 ## DW_AT_location + .byte 145 + .byte 108 + .long 108 ## DW_AT_name + .byte 1 ## DW_AT_decl_file + .byte 6 ## DW_AT_decl_line + .long 152 ## DW_AT_type + .byte 4 ## Abbrev [4] 0x63:0xe DW_TAG_variable + .byte 2 ## DW_AT_location + .byte 145 + .byte 88 + .long 121 ## DW_AT_name + .byte 1 ## DW_AT_decl_file + .byte 7 ## DW_AT_decl_line + .long 171 ## DW_AT_type + .byte 0 ## End Of Children Mark + .byte 5 ## Abbrev [5] 0x72:0x7 DW_TAG_base_type + .long 93 ## DW_AT_name + .byte 5 ## DW_AT_encoding + .byte 4 ## DW_AT_byte_size + .byte 6 ## Abbrev [6] 0x79:0x5 DW_TAG_reference_type + .long 126 ## DW_AT_type + .byte 7 ## Abbrev [7] 0x7e:0x5 DW_TAG_const_type + .long 131 ## DW_AT_type + .byte 8 ## Abbrev [8] 0x83:0x15 DW_TAG_structure_type + .long 99 ## DW_AT_name + .byte 4 ## DW_AT_byte_size + .byte 1 ## DW_AT_decl_file + .byte 1 ## DW_AT_decl_line + .byte 9 ## Abbrev [9] 0x8b:0xc DW_TAG_member + .long 106 ## DW_AT_name + .long 114 ## DW_AT_type + .byte 1 ## DW_AT_decl_file + .byte 2 ## DW_AT_decl_line + .byte 0 ## DW_AT_data_member_location + .byte 0 ## End Of Children Mark + .byte 10 ## Abbrev [10] 0x98:0xc DW_TAG_array_type + .long 114 ## DW_AT_type + .byte 11 ## Abbrev [11] 0x9d:0x6 DW_TAG_subrange_type + .long 164 ## DW_AT_type + .byte 3 ## DW_AT_count + .byte 0 ## End Of Children Mark + .byte 12 ## Abbrev [12] 0xa4:0x7 DW_TAG_base_type + .long 112 ## DW_AT_name + .byte 8 ## DW_AT_byte_size + .byte 7 ## DW_AT_encoding + .byte 13 ## Abbrev [13] 0xab:0x5 DW_TAG_pointer_type + .long 114 ## DW_AT_type + .byte 0 ## End Of Children Mark + .section __DWARF,__debug_ranges,regular,debug +Ldebug_range: + .section __DWARF,__debug_macinfo,regular,debug +Ldebug_macinfo: +Lcu_macro_begin0: + .byte 0 ## End Of Macro List Mark + .section __DWARF,__apple_names,regular,debug +Lnames_begin: + .long 1212240712 ## Header Magic + .short 1 ## Header Version + .short 0 ## Header Hash Function + .long 2 ## Header Bucket Count + .long 2 ## Header Hash Count + .long 12 ## Header Data Length + .long 0 ## HeaderData Die Offset Base + .long 1 ## HeaderData Atom Count + .short 1 ## DW_ATOM_die_offset + .short 6 ## DW_FORM_data4 + .long -1 ## Bucket 0 + .long 0 ## Bucket 1 + .long 177643 ## Hash in Bucket 1 + .long 1181694541 ## Hash in Bucket 1 + .long LNames0-Lnames_begin ## Offset in Bucket 1 + .long LNames1-Lnames_begin ## Offset in Bucket 1 +LNames0: + .long 77 ## F + .long 1 ## Num DIEs + .long 42 + .long 0 +LNames1: + .long 79 ## _Z1FRK6Struct + .long 1 ## Num DIEs + .long 42 + .long 0 + .section __DWARF,__apple_objc,regular,debug +Lobjc_begin: + .long 1212240712 ## Header Magic + .short 1 ## Header Version + .short 0 ## Header Hash Function + .long 1 ## Header Bucket Count + .long 0 ## Header Hash Count + .long 12 ## Header Data Length + .long 0 ## HeaderData Die Offset Base + .long 1 ## HeaderData Atom Count + .short 1 ## DW_ATOM_die_offset + .short 6 ## DW_FORM_data4 + .long -1 ## Bucket 0 + .section __DWARF,__apple_namespac,regular,debug +Lnamespac_begin: + .long 1212240712 ## Header Magic + .short 1 ## Header Version + .short 0 ## Header Hash Function + .long 1 ## Header Bucket Count + .long 0 ## Header Hash Count + .long 12 ## Header Data Length + .long 0 ## HeaderData Die Offset Base + .long 1 ## HeaderData Atom Count + .short 1 ## DW_ATOM_die_offset + .short 6 ## DW_FORM_data4 + .long -1 ## Bucket 0 + .section __DWARF,__apple_types,regular,debug +Ltypes_begin: + .long 1212240712 ## Header Magic + .short 1 ## Header Version + .short 0 ## Header Hash Function + .long 2 ## Header Bucket Count + .long 2 ## Header Hash Count + .long 20 ## Header Data Length + .long 0 ## HeaderData Die Offset Base + .long 3 ## HeaderData Atom Count + .short 1 ## DW_ATOM_die_offset + .short 6 ## DW_FORM_data4 + .short 3 ## DW_ATOM_die_tag + .short 5 ## DW_FORM_data2 + .short 4 ## DW_ATOM_type_flags + .short 11 ## DW_FORM_data1 + .long 0 ## Bucket 0 + .long -1 ## Bucket 1 + .long 193495088 ## Hash in Bucket 0 + .long -772878966 ## Hash in Bucket 0 + .long Ltypes1-Ltypes_begin ## Offset in Bucket 0 + .long Ltypes0-Ltypes_begin ## Offset in Bucket 0 +Ltypes1: + .long 93 ## int + .long 1 ## Num DIEs + .long 114 + .short 36 + .byte 0 + .long 0 +Ltypes0: + .long 99 ## Struct + .long 1 ## Num DIEs + .long 131 + .short 19 + .byte 0 + .long 0 + +.subsections_via_symbols + .section __DWARF,__debug_line,regular,debug +Lsection_line: +Lline_table_start0: