Index: lib/DebugInfo/DWARF/DWARFDie.cpp =================================================================== --- lib/DebugInfo/DWARF/DWARFDie.cpp +++ lib/DebugInfo/DWARF/DWARFDie.cpp @@ -81,6 +81,57 @@ } } +static void dumpTagName(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: + break; + default: + dumpTagName(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; + default: + break; + } +} + static void dumpAttribute(raw_ostream &OS, const DWARFDie &Die, uint32_t *OffsetPtr, dwarf::Attribute Attr, dwarf::Form Form, unsigned Indent, @@ -138,6 +189,10 @@ if (Attr == DW_AT_specification || Attr == DW_AT_abstract_origin) { if (const char *Name = Die.getAttributeValueAsReferencedDie(Attr).getName(DINameKind::LinkageName)) 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