[Lldb-commits] [PATCH] D154169: add a target dump section-load-list command for inspecting the Target's SectionLoadList
Jason Molenda via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Jun 29 16:20:37 PDT 2023
jasonmolenda created this revision.
jasonmolenda added a reviewer: mib.
jasonmolenda added a project: LLDB.
Herald added a subscriber: JDevlieghere.
Herald added a project: All.
jasonmolenda requested review of this revision.
Herald added a subscriber: lldb-commits.
When debugging possible issues with the Target's SectionLoadList table, it would be helpful to have a way to dump all of the entries. Add that.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D154169
Files:
lldb/source/Commands/CommandObjectTarget.cpp
lldb/source/Target/SectionLoadList.cpp
Index: lldb/source/Target/SectionLoadList.cpp
===================================================================
--- lldb/source/Target/SectionLoadList.cpp
+++ lldb/source/Target/SectionLoadList.cpp
@@ -262,8 +262,7 @@
addr_to_sect_collection::const_iterator pos, end;
for (pos = m_addr_to_sect.begin(), end = m_addr_to_sect.end(); pos != end;
++pos) {
- s.Printf("addr = 0x%16.16" PRIx64 ", section = %p: ", pos->first,
- static_cast<void *>(pos->second.get()));
+ s.Printf("addr = 0x%16.16" PRIx64 " ", pos->first);
pos->second->Dump(s.AsRawOstream(), s.GetIndentLevel(), target, 0);
}
}
Index: lldb/source/Commands/CommandObjectTarget.cpp
===================================================================
--- lldb/source/Commands/CommandObjectTarget.cpp
+++ lldb/source/Commands/CommandObjectTarget.cpp
@@ -5123,6 +5123,30 @@
}
};
+#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 +5157,13 @@
: 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;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154169.536049.patch
Type: text/x-patch
Size: 2471 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230629/973fc3be/attachment.bin>
More information about the lldb-commits
mailing list