Skip to content

Commit 8821c38

Browse files
authored
[lldb-dap] DisassembleRequestHandler: use a better invalid instruction (#141463)
DisassembleRequestHandler: use a better invalid instruction value that fits VSCode client
1 parent 7b1a6a8 commit 8821c38

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ namespace lldb_dap {
2727

2828
static protocol::DisassembledInstruction GetInvalidInstruction() {
2929
DisassembledInstruction invalid_inst;
30+
invalid_inst.address = LLDB_INVALID_ADDRESS;
3031
invalid_inst.presentationHint =
3132
DisassembledInstruction::eDisassembledInstructionPresentationHintInvalid;
3233
return invalid_inst;

lldb/tools/lldb-dap/Protocol/ProtocolTypes.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -847,8 +847,15 @@ bool fromJSON(const llvm::json::Value &Params, DisassembledInstruction &DI,
847847
}
848848

849849
llvm::json::Value toJSON(const DisassembledInstruction &DI) {
850-
llvm::json::Object result{{"address", "0x" + llvm::utohexstr(DI.address)},
851-
{"instruction", DI.instruction}};
850+
llvm::json::Object result{{"instruction", DI.instruction}};
851+
if (DI.address == LLDB_INVALID_ADDRESS) {
852+
// VS Code has explicit comparisons to the string "-1" in order to check for
853+
// invalid instructions. See
854+
// https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/debug/browser/disassemblyView.ts
855+
result.insert({"address", "-1"});
856+
} else {
857+
result.insert({"address", "0x" + llvm::utohexstr(DI.address)});
858+
}
852859

853860
if (DI.instructionBytes)
854861
result.insert({"instructionBytes", *DI.instructionBytes});

0 commit comments

Comments
 (0)