[PATCH] D157354: [BOLT][DWARF][NFC] Add function to print DIE

Alexander Yermolovich via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 7 20:31:54 PDT 2023


ayermolo created this revision.
Herald added subscribers: treapster, hoy, modimo, wenlei.
Herald added a reviewer: rafauler.
Herald added a reviewer: Amir.
Herald added a reviewer: maksfb.
Herald added a project: All.
ayermolo requested review of this revision.
Herald added subscribers: llvm-commits, yota9.
Herald added a project: LLVM.

This is purely to make debugging easier for developers. Now that we moved to IR
the print out of DIEs is lacking. This function will lazily parse DIE and use
DWARFDie dump function.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D157354

Files:
  bolt/lib/Rewrite/DWARFRewriter.cpp


Index: bolt/lib/Rewrite/DWARFRewriter.cpp
===================================================================
--- bolt/lib/Rewrite/DWARFRewriter.cpp
+++ bolt/lib/Rewrite/DWARFRewriter.cpp
@@ -66,6 +66,26 @@
   DumpOpts.ShowChildren = false;
   DIE.dump(dbgs(), 0, DumpOpts);
 }
+LLVM_ATTRIBUTE_UNUSED
+static void printDie(DWARFUnit &DU, uint64_t DIEOffset) {
+  uint64_t OriginalOffsets = DIEOffset;
+  uint64_t NextCUOffset = DU.getNextUnitOffset();
+  DWARFDataExtractor DebugInfoData = DU.getDebugInfoExtractor();
+  DWARFDebugInfoEntry DIEEntry;
+  if (DIEEntry.extractFast(DU, &DIEOffset, DebugInfoData, NextCUOffset, 0)) {
+    if (const DWARFAbbreviationDeclaration *AbbrDecl =
+            DIEEntry.getAbbreviationDeclarationPtr()) {
+      DWARFDie DDie(&DU, &DIEEntry);
+      printDie(DDie);
+    } else {
+      dbgs() << "Failed to extract abbreviation for"
+             << Twine::utohexstr(OriginalOffsets) << "\n";
+    }
+  } else {
+    dbgs() << "Failed to extract DIE for " << Twine::utohexstr(OriginalOffsets)
+           << " \n";
+  }
+}
 
 namespace llvm {
 namespace bolt {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D157354.548046.patch
Type: text/x-patch
Size: 1100 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230808/44cad2c7/attachment.bin>


More information about the llvm-commits mailing list