[llvm] 5bfe520 - llvm-dwarfdump: Pretty print names qualified/with scopes
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 19 16:36:38 PDT 2021
Author: David Blaikie
Date: 2021-09-19T16:36:01-07:00
New Revision: 5bfe5207ef283194a76616e5693a67a14c158ae3
URL: https://github.com/llvm/llvm-project/commit/5bfe5207ef283194a76616e5693a67a14c158ae3
DIFF: https://github.com/llvm/llvm-project/commit/5bfe5207ef283194a76616e5693a67a14c158ae3.diff
LOG: llvm-dwarfdump: Pretty print names qualified/with scopes
Added:
Modified:
llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
Removed:
################################################################################
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
index 075ce40dd7eb4..fe7377b080271 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
@@ -186,7 +186,7 @@ struct DWARFTypePrinter {
}
void appendPointerLikeTypeBefore(DWARFDie D, DWARFDie Inner, StringRef Ptr) {
- appendUnqualifiedNameBefore(Inner);
+ appendQualifiedNameBefore(Inner);
if (Word)
OS << ' ';
if (needsParens(Inner))
@@ -214,7 +214,7 @@ struct DWARFTypePrinter {
break;
}
case DW_TAG_subroutine_type: {
- appendUnqualifiedNameBefore(Inner);
+ appendQualifiedNameBefore(Inner);
if (Word) {
OS << ' ';
}
@@ -222,7 +222,7 @@ struct DWARFTypePrinter {
break;
}
case DW_TAG_array_type: {
- appendUnqualifiedNameBefore(Inner);
+ appendQualifiedNameBefore(Inner);
if (Word)
OS << ' ';
Word = false;
@@ -235,14 +235,14 @@ struct DWARFTypePrinter {
appendPointerLikeTypeBefore(D, Inner, "&&");
break;
case DW_TAG_ptr_to_member_type: {
- appendUnqualifiedNameBefore(Inner);
+ appendQualifiedNameBefore(Inner);
if (needsParens(Inner))
OS << '(';
else if (Word)
OS << ' ';
if (DWARFDie Cont =
D.getAttributeValueAsReferencedDie(DW_AT_containing_type)) {
- appendUnqualifiedName(Cont);
+ appendQualifiedName(Cont);
OS << "::";
}
OS << "*";
@@ -253,9 +253,16 @@ struct DWARFTypePrinter {
case DW_TAG_volatile_type:
appendConstVolatileQualifierBefore(D);
break;
+ case DW_TAG_namespace: {
+ if (const char *Name = dwarf::toString(D.find(DW_AT_name), nullptr))
+ OS << Name;
+ else
+ OS << "(anonymous namespace)";
+ break;
+ }
default:
appendTypeTagName(T);
- appendUnqualifiedNameBefore(Inner);
+ appendQualifiedNameBefore(Inner);
break;
}
return Inner;
@@ -296,6 +303,16 @@ struct DWARFTypePrinter {
}
}
+ void appendQualifiedName(DWARFDie D) {
+ if (D)
+ appendScopes(D.getParent());
+ appendUnqualifiedName(D);
+ }
+ DWARFDie appendQualifiedNameBefore(DWARFDie D) {
+ if (D)
+ appendScopes(D.getParent());
+ return appendUnqualifiedNameBefore(D);
+ }
void decomposeConstVolatile(DWARFDie &N, DWARFDie &T, DWARFDie &C,
DWARFDie &V) {
(N.getTag() == DW_TAG_const_type ? C : V) = N;
@@ -343,7 +360,7 @@ struct DWARFTypePrinter {
if (V)
OS << "volatile ";
}
- appendUnqualifiedNameBefore(T);
+ appendQualifiedNameBefore(T);
if (!Leading && !Subroutine) {
Word = true;
if (C)
@@ -429,6 +446,20 @@ struct DWARFTypePrinter {
appendUnqualifiedNameAfter(
Inner, Inner.getAttributeValueAsReferencedDie(DW_AT_type));
}
+ void appendScopes(DWARFDie D) {
+ if (D.getTag() == DW_TAG_compile_unit)
+ return;
+ if (D.getTag() == DW_TAG_type_unit)
+ return;
+ if (D.getTag() == llvm::dwarf::DW_TAG_skeleton_unit)
+ return;
+ if (D.getTag() == DW_TAG_subprogram)
+ return;
+ if (DWARFDie P = D.getParent())
+ appendScopes(P);
+ appendUnqualifiedName(D);
+ OS << "::";
+ }
};
} // anonymous namespace
@@ -516,7 +547,7 @@ static void dumpAttribute(raw_ostream &OS, const DWARFDie &Die,
OS << Space << "\"" << Name << '\"';
} else if (Attr == DW_AT_type) {
OS << Space << "\"";
- DWARFTypePrinter(OS).appendUnqualifiedName(
+ DWARFTypePrinter(OS).appendQualifiedName(
Die.getAttributeValueAsReferencedDie(FormValue));
OS << '"';
} else if (Attr == DW_AT_APPLE_property_attribute) {
diff --git a/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll b/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
index e81cb38c2131b..29c4cfb6de811 100644
--- a/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
+++ b/llvm/test/DebugInfo/X86/addr-tu-to-non-tu.ll
@@ -47,7 +47,7 @@
; CHECK: DW_AT_name ("t2<&foo>")
; CHECK: DW_TAG_member
; CHECK: DW_AT_name ("v1")
-; CHECK: DW_AT_type ([[T1]] "t1")
+; CHECK: DW_AT_type ([[T1]] "(anonymous namespace)::t1")
; CHECK: .debug_types contents:
diff --git a/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s b/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
index 14ebd24856fe1..6e07276dbb19f 100644
--- a/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
+++ b/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
@@ -6,6 +6,12 @@
# struct foo;
# template <typename... Ts>
# struct t1 {};
+# namespace ns {
+# struct inner { };
+# }
+# namespace {
+# struct anon_ns_mem { };
+# }
# t1<
# // base type
# int,
@@ -25,9 +31,18 @@
# // subroutine types
# int(), void(int), void(int, int), void (*)(foo *, int), void (*const)(),
# void() const, void() volatile &&, void() const volatile &,
-# void(const volatile foo *), void (*(int))(float)>
+# void(const volatile foo *), void (*(int))(float),
+# // qualified types
+# ns::inner, ns::inner(), ns::inner[1], ns::inner *, ns::inner ns::inner::*,
+# const ns::inner, anon_ns_mem>
# v1;
-#
+# // extern function to force the code to be emitted - otherwise v1 (having
+# // internal linkage due to being of a type instantiated with an internal
+# // linkage type) would be optimized away as unused.
+# __attribute__((nodebug)) void*f2() {
+# return &v1;
+# }
+#
# With the name of the "t1<...>" type renamed to "t1" (or using
# -gsimple-template-names) to make it easy to query for.
# Note that the llvm-dwarfdump command uses --name=t1 --show-children to only
@@ -77,6 +92,15 @@
# CHECK: DW_AT_type{{.*}}"void (const volatile foo *)")
# CHECK: DW_AT_type{{.*}}"void (*(int))(float)")
+# qualified types
+# CHECK: DW_AT_type{{.*}}"ns::inner"
+# CHECK: DW_AT_type{{.*}}"ns::inner ()"
+# CHECK: DW_AT_type{{.*}}"ns::inner [1]"
+# CHECK: DW_AT_type{{.*}}"ns::inner *"
+# CHECK: DW_AT_type{{.*}}"ns::inner ns::inner::*"
+# CHECK: DW_AT_type{{.*}}"const ns::inner"
+# CHECK: DW_AT_type{{.*}}"(anonymous namespace)::anon_ns_mem"
+
.section .debug_abbrev,"", at progbits
.byte 1 # Abbreviation Code
.byte 17 # DW_TAG_compile_unit
@@ -100,8 +124,6 @@
.byte 14 # DW_FORM_strp
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
- .byte 63 # DW_AT_external
- .byte 25 # DW_FORM_flag_present
.byte 58 # DW_AT_decl_file
.byte 11 # DW_FORM_data1
.byte 59 # DW_AT_decl_line
@@ -301,6 +323,18 @@
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
+ .byte 28 # Abbreviation Code
+ .byte 57 # DW_TAG_namespace
+ .byte 1 # DW_CHILDREN_yes
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 29 # Abbreviation Code
+ .byte 57 # DW_TAG_namespace
+ .byte 1 # DW_CHILDREN_yes
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
.byte 0 # EOM(3)
.section .debug_info,"", at progbits
.Lcu_begin0:
@@ -309,7 +343,7 @@
.short 4 # DWARF version number
.long .debug_abbrev # Offset Into Abbrev. Section
.byte 8 # Address Size (in bytes)
- .byte 1 # Abbrev [1] 0xb:0x1ee DW_TAG_compile_unit
+ .byte 1 # Abbrev [1] 0xb:0x247 DW_TAG_compile_unit
.long .Linfo_string0 # DW_AT_producer
.short 33 # DW_AT_language
.long .Linfo_string1 # DW_AT_name
@@ -318,224 +352,263 @@
.byte 2 # Abbrev [2] 0x1e:0x15 DW_TAG_variable
.long .Linfo_string3 # DW_AT_name
.long 51 # DW_AT_type
- # DW_AT_external
.byte 1 # DW_AT_decl_file
- .byte 24 # DW_AT_decl_line
+ .byte 33 # DW_AT_decl_line
.byte 9 # DW_AT_location
.byte 3
.quad v1
- .byte 3 # Abbrev [3] 0x33:0x92 DW_TAG_structure_type
+ .byte 3 # Abbrev [3] 0x33:0xb5 DW_TAG_structure_type
.byte 5 # DW_AT_calling_convention
- .long .Linfo_string9 # DW_AT_name
+ .long .Linfo_string12 # DW_AT_name
.byte 1 # DW_AT_byte_size
.byte 1 # DW_AT_decl_file
.byte 3 # DW_AT_decl_line
- .byte 4 # Abbrev [4] 0x3c:0x88 DW_TAG_GNU_template_parameter_pack
+ .byte 4 # Abbrev [4] 0x3c:0xab DW_TAG_GNU_template_parameter_pack
.long .Linfo_string4 # DW_AT_name
.byte 5 # Abbrev [5] 0x41:0x5 DW_TAG_template_type_parameter
- .long 197 # DW_AT_type
+ .long 232 # DW_AT_type
.byte 5 # Abbrev [5] 0x46:0x5 DW_TAG_template_type_parameter
- .long 204 # DW_AT_type
+ .long 239 # DW_AT_type
.byte 5 # Abbrev [5] 0x4b:0x5 DW_TAG_template_type_parameter
- .long 209 # DW_AT_type
+ .long 244 # DW_AT_type
.byte 5 # Abbrev [5] 0x50:0x5 DW_TAG_template_type_parameter
- .long 214 # DW_AT_type
+ .long 249 # DW_AT_type
.byte 5 # Abbrev [5] 0x55:0x5 DW_TAG_template_type_parameter
- .long 219 # DW_AT_type
+ .long 254 # DW_AT_type
.byte 5 # Abbrev [5] 0x5a:0x5 DW_TAG_template_type_parameter
- .long 224 # DW_AT_type
+ .long 259 # DW_AT_type
.byte 5 # Abbrev [5] 0x5f:0x5 DW_TAG_template_type_parameter
- .long 235 # DW_AT_type
+ .long 270 # DW_AT_type
.byte 5 # Abbrev [5] 0x64:0x5 DW_TAG_template_type_parameter
- .long 240 # DW_AT_type
+ .long 275 # DW_AT_type
.byte 5 # Abbrev [5] 0x69:0x5 DW_TAG_template_type_parameter
- .long 245 # DW_AT_type
+ .long 280 # DW_AT_type
.byte 5 # Abbrev [5] 0x6e:0x5 DW_TAG_template_type_parameter
- .long 251 # DW_AT_type
+ .long 286 # DW_AT_type
.byte 5 # Abbrev [5] 0x73:0x5 DW_TAG_template_type_parameter
- .long 265 # DW_AT_type
+ .long 300 # DW_AT_type
.byte 5 # Abbrev [5] 0x78:0x5 DW_TAG_template_type_parameter
- .long 291 # DW_AT_type
+ .long 326 # DW_AT_type
.byte 5 # Abbrev [5] 0x7d:0x5 DW_TAG_template_type_parameter
- .long 332 # DW_AT_type
+ .long 367 # DW_AT_type
.byte 5 # Abbrev [5] 0x82:0x5 DW_TAG_template_type_parameter
- .long 337 # DW_AT_type
+ .long 372 # DW_AT_type
.byte 5 # Abbrev [5] 0x87:0x5 DW_TAG_template_type_parameter
- .long 361 # DW_AT_type
+ .long 396 # DW_AT_type
.byte 5 # Abbrev [5] 0x8c:0x5 DW_TAG_template_type_parameter
- .long 366 # DW_AT_type
+ .long 401 # DW_AT_type
.byte 5 # Abbrev [5] 0x91:0x5 DW_TAG_template_type_parameter
- .long 383 # DW_AT_type
+ .long 418 # DW_AT_type
.byte 5 # Abbrev [5] 0x96:0x5 DW_TAG_template_type_parameter
- .long 388 # DW_AT_type
+ .long 423 # DW_AT_type
.byte 5 # Abbrev [5] 0x9b:0x5 DW_TAG_template_type_parameter
- .long 395 # DW_AT_type
+ .long 430 # DW_AT_type
.byte 5 # Abbrev [5] 0xa0:0x5 DW_TAG_template_type_parameter
- .long 407 # DW_AT_type
+ .long 442 # DW_AT_type
.byte 5 # Abbrev [5] 0xa5:0x5 DW_TAG_template_type_parameter
- .long 429 # DW_AT_type
+ .long 464 # DW_AT_type
.byte 5 # Abbrev [5] 0xaa:0x5 DW_TAG_template_type_parameter
- .long 440 # DW_AT_type
+ .long 475 # DW_AT_type
.byte 5 # Abbrev [5] 0xaf:0x5 DW_TAG_template_type_parameter
- .long 445 # DW_AT_type
+ .long 480 # DW_AT_type
.byte 5 # Abbrev [5] 0xb4:0x5 DW_TAG_template_type_parameter
- .long 451 # DW_AT_type
+ .long 486 # DW_AT_type
.byte 5 # Abbrev [5] 0xb9:0x5 DW_TAG_template_type_parameter
- .long 462 # DW_AT_type
+ .long 497 # DW_AT_type
.byte 5 # Abbrev [5] 0xbe:0x5 DW_TAG_template_type_parameter
- .long 474 # DW_AT_type
+ .long 509 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xc3:0x5 DW_TAG_template_type_parameter
+ .long 544 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xc8:0x5 DW_TAG_template_type_parameter
+ .long 550 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xcd:0x5 DW_TAG_template_type_parameter
+ .long 555 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xd2:0x5 DW_TAG_template_type_parameter
+ .long 567 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xd7:0x5 DW_TAG_template_type_parameter
+ .long 572 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xdc:0x5 DW_TAG_template_type_parameter
+ .long 581 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xe1:0x5 DW_TAG_template_type_parameter
+ .long 587 # DW_AT_type
.byte 0 # End Of Children Mark
.byte 0 # End Of Children Mark
- .byte 6 # Abbrev [6] 0xc5:0x7 DW_TAG_base_type
+ .byte 6 # Abbrev [6] 0xe8:0x7 DW_TAG_base_type
.long .Linfo_string5 # DW_AT_name
.byte 5 # DW_AT_encoding
.byte 4 # DW_AT_byte_size
- .byte 7 # Abbrev [7] 0xcc:0x5 DW_TAG_reference_type
- .long 197 # DW_AT_type
- .byte 8 # Abbrev [8] 0xd1:0x5 DW_TAG_rvalue_reference_type
- .long 197 # DW_AT_type
- .byte 9 # Abbrev [9] 0xd6:0x5 DW_TAG_pointer_type
- .long 197 # DW_AT_type
- .byte 9 # Abbrev [9] 0xdb:0x5 DW_TAG_pointer_type
- .long 224 # DW_AT_type
- .byte 10 # Abbrev [10] 0xe0:0x5 DW_TAG_const_type
- .long 229 # DW_AT_type
- .byte 9 # Abbrev [9] 0xe5:0x5 DW_TAG_pointer_type
- .long 234 # DW_AT_type
- .byte 11 # Abbrev [11] 0xea:0x1 DW_TAG_const_type
- .byte 10 # Abbrev [10] 0xeb:0x5 DW_TAG_const_type
- .long 240 # DW_AT_type
- .byte 12 # Abbrev [12] 0xf0:0x5 DW_TAG_volatile_type
- .long 214 # DW_AT_type
- .byte 10 # Abbrev [10] 0xf5:0x5 DW_TAG_const_type
- .long 250 # DW_AT_type
- .byte 13 # Abbrev [13] 0xfa:0x1 DW_TAG_pointer_type
- .byte 14 # Abbrev [14] 0xfb:0x9 DW_TAG_ptr_to_member_type
- .long 197 # DW_AT_type
- .long 260 # DW_AT_containing_type
- .byte 15 # Abbrev [15] 0x104:0x5 DW_TAG_structure_type
+ .byte 7 # Abbrev [7] 0xef:0x5 DW_TAG_reference_type
+ .long 232 # DW_AT_type
+ .byte 8 # Abbrev [8] 0xf4:0x5 DW_TAG_rvalue_reference_type
+ .long 232 # DW_AT_type
+ .byte 9 # Abbrev [9] 0xf9:0x5 DW_TAG_pointer_type
+ .long 232 # DW_AT_type
+ .byte 9 # Abbrev [9] 0xfe:0x5 DW_TAG_pointer_type
+ .long 259 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x103:0x5 DW_TAG_const_type
+ .long 264 # DW_AT_type
+ .byte 9 # Abbrev [9] 0x108:0x5 DW_TAG_pointer_type
+ .long 269 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x10d:0x1 DW_TAG_const_type
+ .byte 10 # Abbrev [10] 0x10e:0x5 DW_TAG_const_type
+ .long 275 # DW_AT_type
+ .byte 12 # Abbrev [12] 0x113:0x5 DW_TAG_volatile_type
+ .long 249 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x118:0x5 DW_TAG_const_type
+ .long 285 # DW_AT_type
+ .byte 13 # Abbrev [13] 0x11d:0x1 DW_TAG_pointer_type
+ .byte 14 # Abbrev [14] 0x11e:0x9 DW_TAG_ptr_to_member_type
+ .long 232 # DW_AT_type
+ .long 295 # DW_AT_containing_type
+ .byte 15 # Abbrev [15] 0x127:0x5 DW_TAG_structure_type
.long .Linfo_string6 # DW_AT_name
# DW_AT_declaration
- .byte 14 # Abbrev [14] 0x109:0x9 DW_TAG_ptr_to_member_type
- .long 274 # DW_AT_type
- .long 260 # DW_AT_containing_type
- .byte 16 # Abbrev [16] 0x112:0xc DW_TAG_subroutine_type
- .byte 17 # Abbrev [17] 0x113:0x5 DW_TAG_formal_parameter
- .long 286 # DW_AT_type
+ .byte 14 # Abbrev [14] 0x12c:0x9 DW_TAG_ptr_to_member_type
+ .long 309 # DW_AT_type
+ .long 295 # DW_AT_containing_type
+ .byte 16 # Abbrev [16] 0x135:0xc DW_TAG_subroutine_type
+ .byte 17 # Abbrev [17] 0x136:0x5 DW_TAG_formal_parameter
+ .long 321 # DW_AT_type
# DW_AT_artificial
- .byte 18 # Abbrev [18] 0x118:0x5 DW_TAG_formal_parameter
- .long 197 # DW_AT_type
+ .byte 18 # Abbrev [18] 0x13b:0x5 DW_TAG_formal_parameter
+ .long 232 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x11e:0x5 DW_TAG_pointer_type
- .long 260 # DW_AT_type
- .byte 7 # Abbrev [7] 0x123:0x5 DW_TAG_reference_type
- .long 296 # DW_AT_type
- .byte 10 # Abbrev [10] 0x128:0x5 DW_TAG_const_type
- .long 301 # DW_AT_type
- .byte 14 # Abbrev [14] 0x12d:0x9 DW_TAG_ptr_to_member_type
- .long 310 # DW_AT_type
- .long 260 # DW_AT_containing_type
- .byte 19 # Abbrev [19] 0x136:0x7 DW_TAG_subroutine_type
+ .byte 9 # Abbrev [9] 0x141:0x5 DW_TAG_pointer_type
+ .long 295 # DW_AT_type
+ .byte 7 # Abbrev [7] 0x146:0x5 DW_TAG_reference_type
+ .long 331 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x14b:0x5 DW_TAG_const_type
+ .long 336 # DW_AT_type
+ .byte 14 # Abbrev [14] 0x150:0x9 DW_TAG_ptr_to_member_type
+ .long 345 # DW_AT_type
+ .long 295 # DW_AT_containing_type
+ .byte 19 # Abbrev [19] 0x159:0x7 DW_TAG_subroutine_type
# DW_AT_rvalue_reference
- .byte 17 # Abbrev [17] 0x137:0x5 DW_TAG_formal_parameter
- .long 317 # DW_AT_type
+ .byte 17 # Abbrev [17] 0x15a:0x5 DW_TAG_formal_parameter
+ .long 352 # DW_AT_type
# DW_AT_artificial
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x13d:0x5 DW_TAG_pointer_type
- .long 322 # DW_AT_type
- .byte 10 # Abbrev [10] 0x142:0x5 DW_TAG_const_type
- .long 327 # DW_AT_type
- .byte 12 # Abbrev [12] 0x147:0x5 DW_TAG_volatile_type
- .long 260 # DW_AT_type
- .byte 7 # Abbrev [7] 0x14c:0x5 DW_TAG_reference_type
- .long 337 # DW_AT_type
- .byte 10 # Abbrev [10] 0x151:0x5 DW_TAG_const_type
- .long 342 # DW_AT_type
- .byte 20 # Abbrev [20] 0x156:0xc DW_TAG_array_type
- .long 214 # DW_AT_type
- .byte 21 # Abbrev [21] 0x15b:0x6 DW_TAG_subrange_type
- .long 354 # DW_AT_type
+ .byte 9 # Abbrev [9] 0x160:0x5 DW_TAG_pointer_type
+ .long 357 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x165:0x5 DW_TAG_const_type
+ .long 362 # DW_AT_type
+ .byte 12 # Abbrev [12] 0x16a:0x5 DW_TAG_volatile_type
+ .long 295 # DW_AT_type
+ .byte 7 # Abbrev [7] 0x16f:0x5 DW_TAG_reference_type
+ .long 372 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x174:0x5 DW_TAG_const_type
+ .long 377 # DW_AT_type
+ .byte 20 # Abbrev [20] 0x179:0xc DW_TAG_array_type
+ .long 249 # DW_AT_type
+ .byte 21 # Abbrev [21] 0x17e:0x6 DW_TAG_subrange_type
+ .long 389 # DW_AT_type
.byte 1 # DW_AT_count
.byte 0 # End Of Children Mark
- .byte 22 # Abbrev [22] 0x162:0x7 DW_TAG_base_type
+ .byte 22 # Abbrev [22] 0x185:0x7 DW_TAG_base_type
.long .Linfo_string7 # DW_AT_name
.byte 8 # DW_AT_byte_size
.byte 7 # DW_AT_encoding
- .byte 7 # Abbrev [7] 0x169:0x5 DW_TAG_reference_type
- .long 366 # DW_AT_type
- .byte 10 # Abbrev [10] 0x16e:0x5 DW_TAG_const_type
- .long 371 # DW_AT_type
- .byte 20 # Abbrev [20] 0x173:0xc DW_TAG_array_type
- .long 197 # DW_AT_type
- .byte 21 # Abbrev [21] 0x178:0x6 DW_TAG_subrange_type
- .long 354 # DW_AT_type
+ .byte 7 # Abbrev [7] 0x18c:0x5 DW_TAG_reference_type
+ .long 401 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x191:0x5 DW_TAG_const_type
+ .long 406 # DW_AT_type
+ .byte 20 # Abbrev [20] 0x196:0xc DW_TAG_array_type
+ .long 232 # DW_AT_type
+ .byte 21 # Abbrev [21] 0x19b:0x6 DW_TAG_subrange_type
+ .long 389 # DW_AT_type
.byte 1 # DW_AT_count
.byte 0 # End Of Children Mark
- .byte 23 # Abbrev [23] 0x17f:0x5 DW_TAG_subroutine_type
- .long 197 # DW_AT_type
- .byte 16 # Abbrev [16] 0x184:0x7 DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x185:0x5 DW_TAG_formal_parameter
- .long 197 # DW_AT_type
+ .byte 23 # Abbrev [23] 0x1a2:0x5 DW_TAG_subroutine_type
+ .long 232 # DW_AT_type
+ .byte 16 # Abbrev [16] 0x1a7:0x7 DW_TAG_subroutine_type
+ .byte 18 # Abbrev [18] 0x1a8:0x5 DW_TAG_formal_parameter
+ .long 232 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 16 # Abbrev [16] 0x18b:0xc DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x18c:0x5 DW_TAG_formal_parameter
- .long 197 # DW_AT_type
- .byte 18 # Abbrev [18] 0x191:0x5 DW_TAG_formal_parameter
- .long 197 # DW_AT_type
+ .byte 16 # Abbrev [16] 0x1ae:0xc DW_TAG_subroutine_type
+ .byte 18 # Abbrev [18] 0x1af:0x5 DW_TAG_formal_parameter
+ .long 232 # DW_AT_type
+ .byte 18 # Abbrev [18] 0x1b4:0x5 DW_TAG_formal_parameter
+ .long 232 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x197:0x5 DW_TAG_pointer_type
- .long 412 # DW_AT_type
- .byte 16 # Abbrev [16] 0x19c:0xc DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x19d:0x5 DW_TAG_formal_parameter
- .long 424 # DW_AT_type
- .byte 18 # Abbrev [18] 0x1a2:0x5 DW_TAG_formal_parameter
- .long 197 # DW_AT_type
+ .byte 9 # Abbrev [9] 0x1ba:0x5 DW_TAG_pointer_type
+ .long 447 # DW_AT_type
+ .byte 16 # Abbrev [16] 0x1bf:0xc DW_TAG_subroutine_type
+ .byte 18 # Abbrev [18] 0x1c0:0x5 DW_TAG_formal_parameter
+ .long 459 # DW_AT_type
+ .byte 18 # Abbrev [18] 0x1c5:0x5 DW_TAG_formal_parameter
+ .long 232 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x1a8:0x5 DW_TAG_pointer_type
- .long 260 # DW_AT_type
- .byte 10 # Abbrev [10] 0x1ad:0x5 DW_TAG_const_type
- .long 434 # DW_AT_type
- .byte 9 # Abbrev [9] 0x1b2:0x5 DW_TAG_pointer_type
- .long 439 # DW_AT_type
- .byte 24 # Abbrev [24] 0x1b7:0x1 DW_TAG_subroutine_type
- .byte 10 # Abbrev [10] 0x1b8:0x5 DW_TAG_const_type
- .long 439 # DW_AT_type
- .byte 12 # Abbrev [12] 0x1bd:0x5 DW_TAG_volatile_type
- .long 450 # DW_AT_type
- .byte 25 # Abbrev [25] 0x1c2:0x1 DW_TAG_subroutine_type
- # DW_AT_rvalue_reference
- .byte 10 # Abbrev [10] 0x1c3:0x5 DW_TAG_const_type
- .long 456 # DW_AT_type
- .byte 12 # Abbrev [12] 0x1c8:0x5 DW_TAG_volatile_type
- .long 461 # DW_AT_type
- .byte 26 # Abbrev [26] 0x1cd:0x1 DW_TAG_subroutine_type
- # DW_AT_reference
- .byte 16 # Abbrev [16] 0x1ce:0x7 DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x1cf:0x5 DW_TAG_formal_parameter
+ .byte 9 # Abbrev [9] 0x1cb:0x5 DW_TAG_pointer_type
+ .long 295 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x1d0:0x5 DW_TAG_const_type
.long 469 # DW_AT_type
- .byte 0 # End Of Children Mark
.byte 9 # Abbrev [9] 0x1d5:0x5 DW_TAG_pointer_type
- .long 322 # DW_AT_type
- .byte 27 # Abbrev [27] 0x1da:0xb DW_TAG_subroutine_type
+ .long 474 # DW_AT_type
+ .byte 24 # Abbrev [24] 0x1da:0x1 DW_TAG_subroutine_type
+ .byte 10 # Abbrev [10] 0x1db:0x5 DW_TAG_const_type
+ .long 474 # DW_AT_type
+ .byte 12 # Abbrev [12] 0x1e0:0x5 DW_TAG_volatile_type
.long 485 # DW_AT_type
- .byte 18 # Abbrev [18] 0x1df:0x5 DW_TAG_formal_parameter
- .long 197 # DW_AT_type
+ .byte 25 # Abbrev [25] 0x1e5:0x1 DW_TAG_subroutine_type
+ # DW_AT_rvalue_reference
+ .byte 10 # Abbrev [10] 0x1e6:0x5 DW_TAG_const_type
+ .long 491 # DW_AT_type
+ .byte 12 # Abbrev [12] 0x1eb:0x5 DW_TAG_volatile_type
+ .long 496 # DW_AT_type
+ .byte 26 # Abbrev [26] 0x1f0:0x1 DW_TAG_subroutine_type
+ # DW_AT_reference
+ .byte 16 # Abbrev [16] 0x1f1:0x7 DW_TAG_subroutine_type
+ .byte 18 # Abbrev [18] 0x1f2:0x5 DW_TAG_formal_parameter
+ .long 504 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x1e5:0x5 DW_TAG_pointer_type
- .long 490 # DW_AT_type
- .byte 16 # Abbrev [16] 0x1ea:0x7 DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x1eb:0x5 DW_TAG_formal_parameter
- .long 497 # DW_AT_type
+ .byte 9 # Abbrev [9] 0x1f8:0x5 DW_TAG_pointer_type
+ .long 357 # DW_AT_type
+ .byte 27 # Abbrev [27] 0x1fd:0xb DW_TAG_subroutine_type
+ .long 520 # DW_AT_type
+ .byte 18 # Abbrev [18] 0x202:0x5 DW_TAG_formal_parameter
+ .long 232 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 6 # Abbrev [6] 0x1f1:0x7 DW_TAG_base_type
+ .byte 9 # Abbrev [9] 0x208:0x5 DW_TAG_pointer_type
+ .long 525 # DW_AT_type
+ .byte 16 # Abbrev [16] 0x20d:0x7 DW_TAG_subroutine_type
+ .byte 18 # Abbrev [18] 0x20e:0x5 DW_TAG_formal_parameter
+ .long 532 # DW_AT_type
+ .byte 0 # End Of Children Mark
+ .byte 6 # Abbrev [6] 0x214:0x7 DW_TAG_base_type
.long .Linfo_string8 # DW_AT_name
.byte 4 # DW_AT_encoding
.byte 4 # DW_AT_byte_size
+ .byte 28 # Abbrev [28] 0x21b:0xb DW_TAG_namespace
+ .long .Linfo_string9 # DW_AT_name
+ .byte 15 # Abbrev [15] 0x220:0x5 DW_TAG_structure_type
+ .long .Linfo_string10 # DW_AT_name
+ # DW_AT_declaration
+ .byte 0 # End Of Children Mark
+ .byte 23 # Abbrev [23] 0x226:0x5 DW_TAG_subroutine_type
+ .long 544 # DW_AT_type
+ .byte 20 # Abbrev [20] 0x22b:0xc DW_TAG_array_type
+ .long 544 # DW_AT_type
+ .byte 21 # Abbrev [21] 0x230:0x6 DW_TAG_subrange_type
+ .long 389 # DW_AT_type
+ .byte 1 # DW_AT_count
+ .byte 0 # End Of Children Mark
+ .byte 9 # Abbrev [9] 0x237:0x5 DW_TAG_pointer_type
+ .long 544 # DW_AT_type
+ .byte 14 # Abbrev [14] 0x23c:0x9 DW_TAG_ptr_to_member_type
+ .long 544 # DW_AT_type
+ .long 544 # DW_AT_containing_type
+ .byte 10 # Abbrev [10] 0x245:0x5 DW_TAG_const_type
+ .long 544 # DW_AT_type
+ .byte 29 # Abbrev [29] 0x24a:0x7 DW_TAG_namespace
+ .byte 15 # Abbrev [15] 0x24b:0x5 DW_TAG_structure_type
+ .long .Linfo_string11 # DW_AT_name
+ # DW_AT_declaration
+ .byte 0 # End Of Children Mark
.byte 0 # End Of Children Mark
.Ldebug_info_end0:
.section .debug_str,"MS", at progbits,1
.Linfo_string0:
- .asciz "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 0543d3a279346152e88fb40f0f817ca8bd145864)" # string offset=0
+ .asciz "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 51eba07e98b79a47d54e4fb36a3812cf3c91c667)" # string offset=0
.Linfo_string1:
.asciz "test.cpp" # string offset=101
.Linfo_string2:
@@ -553,9 +626,16 @@
.Linfo_string8:
.asciz "float" # string offset=187
.Linfo_string9:
- .asciz "t1" # string offset=193
- .ident "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 0543d3a279346152e88fb40f0f817ca8bd145864)"
+ .asciz "ns" # string offset=193
+.Linfo_string10:
+ .asciz "inner" # string offset=196
+.Linfo_string11:
+ .asciz "anon_ns_mem" # string offset=202
+.Linfo_string12:
+ .asciz "t1" # string offset=214
+ .ident "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 51eba07e98b79a47d54e4fb36a3812cf3c91c667)"
.section ".note.GNU-stack","", at progbits
.addrsig
+ .addrsig_sym v1
.section .debug_line,"", at progbits
.Lline_table_start0:
More information about the llvm-commits
mailing list