From ad451146e8f59de76e393094d3aafc97a854c40b Mon Sep 17 00:00:00 2001 From: Jason Molenda Date: Thu, 29 Jun 2023 17:01:16 -0700 Subject: 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 --- lldb/source/Commands/CommandObjectTarget.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'lldb/source/Commands/CommandObjectTarget.cpp') diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index 81a2fe4..2204594 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -5123,6 +5123,29 @@ protected: } }; +#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 @@ public: : 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; -- cgit v1.1