@@ -1618,7 +1618,7 @@ void request_evaluate(const llvm::json::Object &request) {
1618
1618
body.try_emplace (" variablesReference" , (int64_t )0 );
1619
1619
}
1620
1620
if (std::optional<lldb::addr_t > addr = GetMemoryReference (value))
1621
- body.try_emplace (" memoryReference" , " 0x " + llvm::utohexstr (*addr));
1621
+ body.try_emplace (" memoryReference" , EncodeMemoryReference (*addr));
1622
1622
}
1623
1623
}
1624
1624
response.try_emplace (" body" , std::move (body));
@@ -3793,7 +3793,7 @@ void request_setVariable(const llvm::json::Object &request) {
3793
3793
body.try_emplace (" variablesReference" , newVariablesReference);
3794
3794
3795
3795
if (std::optional<lldb::addr_t > addr = GetMemoryReference (variable))
3796
- body.try_emplace (" memoryReference" , " 0x " + llvm::utohexstr (*addr));
3796
+ body.try_emplace (" memoryReference" , EncodeMemoryReference (*addr));
3797
3797
} else {
3798
3798
EmplaceSafeString (body, " message" , std::string (error.GetCString ()));
3799
3799
}
@@ -4090,17 +4090,18 @@ void request_variables(const llvm::json::Object &request) {
4090
4090
void request_disassemble (const llvm::json::Object &request) {
4091
4091
llvm::json::Object response;
4092
4092
FillResponse (request, response);
4093
- auto arguments = request.getObject (" arguments" );
4093
+ auto * arguments = request.getObject (" arguments" );
4094
4094
4095
- auto memoryReference = GetString (arguments, " memoryReference" );
4096
- lldb:: addr_t addr_ptr ;
4097
- if (memoryReference. consumeInteger ( 0 , addr_ptr )) {
4095
+ llvm::StringRef memoryReference = GetString (arguments, " memoryReference" );
4096
+ auto addr_opt = DecodeMemoryReference (memoryReference) ;
4097
+ if (!addr_opt. has_value ( )) {
4098
4098
response[" success" ] = false ;
4099
4099
response[" message" ] =
4100
4100
" Malformed memory reference: " + memoryReference.str ();
4101
4101
g_dap.SendJSON (llvm::json::Value (std::move (response)));
4102
4102
return ;
4103
4103
}
4104
+ lldb::addr_t addr_ptr = *addr_opt;
4104
4105
4105
4106
addr_ptr += GetSigned (arguments, " instructionOffset" , 0 );
4106
4107
lldb::SBAddress addr (addr_ptr, g_dap.target );
@@ -4299,7 +4300,7 @@ void request_disassemble(const llvm::json::Object &request) {
4299
4300
void request_readMemory (const llvm::json::Object &request) {
4300
4301
llvm::json::Object response;
4301
4302
FillResponse (request, response);
4302
- auto arguments = request.getObject (" arguments" );
4303
+ auto * arguments = request.getObject (" arguments" );
4303
4304
4304
4305
lldb::SBProcess process = g_dap.target .GetProcess ();
4305
4306
if (!process.IsValid ()) {
@@ -4309,15 +4310,16 @@ void request_readMemory(const llvm::json::Object &request) {
4309
4310
return ;
4310
4311
}
4311
4312
4312
- auto memoryReference = GetString (arguments, " memoryReference" );
4313
- lldb:: addr_t addr ;
4314
- if (memoryReference. consumeInteger ( 0 , addr )) {
4313
+ llvm::StringRef memoryReference = GetString (arguments, " memoryReference" );
4314
+ auto addr_opt = DecodeMemoryReference (memoryReference) ;
4315
+ if (!addr_opt. has_value ( )) {
4315
4316
response[" success" ] = false ;
4316
4317
response[" message" ] =
4317
4318
" Malformed memory reference: " + memoryReference.str ();
4318
4319
g_dap.SendJSON (llvm::json::Value (std::move (response)));
4319
4320
return ;
4320
4321
}
4322
+ lldb::addr_t addr = *addr_opt;
4321
4323
4322
4324
addr += GetSigned (arguments, " offset" , 0 );
4323
4325
const uint64_t requested_count = GetUnsigned (arguments, " count" , 0 );
0 commit comments