[Lldb-commits] [lldb] [lldb-dap] fix disassembly request instruction offset handling (PR #140486)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Mon May 19 21:19:13 PDT 2025
================
@@ -56,100 +54,204 @@ DisassembleRequestHandler::Run(const DisassembleArguments &args) const {
}
}
+ int64_t instructionOffset = args.instructionOffset.value_or(0);
+ if (instructionOffset > 0) {
+ lldb::SBInstructionList forward_insts = dap.target.ReadInstructions(
+ addr, instructionOffset + 1, flavor_string.c_str());
+ if (forward_insts.GetSize() != static_cast<size_t>(instructionOffset + 1)) {
+ return llvm::make_error<DAPError>(
+ "Failed to disassemble instructions after " +
+ std::to_string(instructionOffset) +
+ " instructions from the given address.");
+ }
+
+ addr = forward_insts.GetInstructionAtIndex(instructionOffset).GetAddress();
+ }
+
+ const bool resolve_symbols = args.resolveSymbols.value_or(false);
+ std::vector<DisassembledInstruction> instructions;
+ if (instructionOffset < 0)
+ instructions = disassembleBackwards(addr, std::abs(instructionOffset),
+ flavor_string.c_str(), resolve_symbols);
----------------
JDevlieghere wrote:
I think it would be more readable if you handled the positive instruction offset case in the else case here instead of breaking them up between line 58 and here.
https://github.com/llvm/llvm-project/pull/140486
More information about the lldb-commits
mailing list