[Lldb-commits] [lldb] ad45114 - Add 'target dump section-load-list' for lldb debugging

Jason Molenda via lldb-commits lldb-commits at lists.llvm.org
Thu Jun 29 17:03:00 PDT 2023


Author: Jason Molenda
Date: 2023-06-29T17:02:54-07:00
New Revision: ad451146e8f59de76e393094d3aafc97a854c40b

URL: https://github.com/llvm/llvm-project/commit/ad451146e8f59de76e393094d3aafc97a854c40b
DIFF: https://github.com/llvm/llvm-project/commit/ad451146e8f59de76e393094d3aafc97a854c40b.diff

LOG: Add 'target dump section-load-list' for lldb debugging

A command to dump the Target's SectionLoadList, to debug
possible issues with the table.

Differential Revision: https://reviews.llvm.org/D154169

Added: 
    

Modified: 
    lldb/source/Commands/CommandObjectTarget.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp
index 81a2fe4c9f2baa..22045948f88ba9 100644
--- a/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/lldb/source/Commands/CommandObjectTarget.cpp
@@ -5123,6 +5123,29 @@ class CommandObjectTargetDumpTypesystem : public CommandObjectParsed {
   }
 };
 
+#pragma mark CommandObjectTargetDumpSectionLoadList
+
+/// Dumps the SectionLoadList of the selected Target.
+class CommandObjectTargetDumpSectionLoadList : public CommandObjectParsed {
+public:
+  CommandObjectTargetDumpSectionLoadList(CommandInterpreter &interpreter)
+      : CommandObjectParsed(
+            interpreter, "target dump section-load-list",
+            "Dump the state of the target's internal section load list. "
+            "Intended to be used for debugging LLDB itself.",
+            nullptr, eCommandRequiresTarget) {}
+
+  ~CommandObjectTargetDumpSectionLoadList() override = default;
+
+protected:
+  bool DoExecute(Args &command, CommandReturnObject &result) override {
+    Target &target = GetSelectedTarget();
+    target.GetSectionLoadList().Dump(result.GetOutputStream(), &target);
+    result.SetStatus(eReturnStatusSuccessFinishResult);
+    return result.Succeeded();
+  }
+};
+
 #pragma mark CommandObjectTargetDump
 
 /// Multi-word command for 'target dump'.
@@ -5133,10 +5156,13 @@ class CommandObjectTargetDump : public CommandObjectMultiword {
       : CommandObjectMultiword(
             interpreter, "target dump",
             "Commands for dumping information about the target.",
-            "target dump [typesystem]") {
+            "target dump [typesystem|section-load-list]") {
     LoadSubCommand(
         "typesystem",
         CommandObjectSP(new CommandObjectTargetDumpTypesystem(interpreter)));
+    LoadSubCommand("section-load-list",
+                   CommandObjectSP(new CommandObjectTargetDumpSectionLoadList(
+                       interpreter)));
   }
 
   ~CommandObjectTargetDump() override = default;


        


More information about the lldb-commits mailing list