[PATCH] D113406: [llvm-dwarfdump] dump link to the immediate parent.
Alexey Lapshin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 9 03:14:24 PST 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc8ae08987db2: [llvm-dwarfdump] dump link to the immediate parent. (authored by avl).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D113406/new/
https://reviews.llvm.org/D113406
Files:
llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
llvm/test/tools/llvm-dwarfdump/X86/tag-parent-offset.yaml
llvm/test/tools/llvm-dwarfdump/X86/verbose.test
Index: llvm/test/tools/llvm-dwarfdump/X86/verbose.test
===================================================================
--- llvm/test/tools/llvm-dwarfdump/X86/verbose.test
+++ llvm/test/tools/llvm-dwarfdump/X86/verbose.test
@@ -7,9 +7,9 @@
# CHECK:.debug_info contents:
# CHECK:0x0000000b: DW_TAG_compile_unit [1] *
# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{.*}}] = "brief.c")
-# CHECK:0x0000002a: DW_TAG_subprogram [2]
+# CHECK:0x0000002a: DW_TAG_subprogram [2] (0x0000000b)
# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{.*}}] = "main")
-# CHECK:0x00000043: DW_TAG_base_type [3]
+# CHECK:0x00000043: DW_TAG_base_type [3] (0x0000000b)
# CHECK-NEXT: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{.*}}] = "int")
# CHECK:.debug_line contents:
Index: llvm/test/tools/llvm-dwarfdump/X86/tag-parent-offset.yaml
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-dwarfdump/X86/tag-parent-offset.yaml
@@ -0,0 +1,49 @@
+# RUN: yaml2obj %s -o %t.o
+# RUN: llvm-dwarfdump -v -a %t.o | FileCheck %s
+
+## This test checks that llvm-dwarfdump prints link
+## to the parent of the current die:
+
+## DW_TAG_base_type [3] (0x00000014) <<<<<
+
+# CHECK: .o: file format
+# CHECK: 0x0000000b: DW_TAG_compile_unit
+# CHECK: 0x00000014: DW_TAG_namespace [2] * (0x0000000b)
+# CHECK: DW_TAG_base_type [3] (0x00000014)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+DWARF:
+ debug_abbrev:
+ - Table:
+ - Tag: DW_TAG_compile_unit
+ Children: DW_CHILDREN_yes
+ Attributes:
+ - Attribute: DW_AT_producer
+ Form: DW_FORM_string
+ - Tag: DW_TAG_namespace
+ Children: DW_CHILDREN_yes
+ Attributes:
+ - Attribute: DW_AT_name
+ Form: DW_FORM_string
+ - Tag: DW_TAG_base_type
+ Children: DW_CHILDREN_no
+ Attributes:
+ - Attribute: DW_AT_name
+ Form: DW_FORM_string
+ debug_info:
+ - Version: 4
+ Entries:
+ - AbbrCode: 1
+ Values:
+ - CStr: by_hand
+ - AbbrCode: 2
+ Values:
+ - CStr: name
+ - AbbrCode: 3
+ Values:
+ - CStr: int
Index: llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
===================================================================
--- llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
+++ llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
@@ -1080,9 +1080,13 @@
if (AbbrevDecl) {
WithColor(OS, HighlightColor::Tag).get().indent(Indent)
<< formatv("{0}", getTag());
- if (DumpOpts.Verbose)
+ if (DumpOpts.Verbose) {
OS << format(" [%u] %c", abbrCode,
AbbrevDecl->hasChildren() ? '*' : ' ');
+ if (Optional<uint32_t> ParentIdx = Die->getParentIdx())
+ OS << format(" (0x%8.8" PRIx64 ")",
+ U->getDIEAtIndex(*ParentIdx).getOffset());
+ }
OS << '\n';
// Dump all data in the DIE for the attributes.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113406.385753.patch
Type: text/x-patch
Size: 3209 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211109/3f5196db/attachment.bin>
More information about the llvm-commits
mailing list