aboutsummaryrefslogtreecommitdiff
path: root/lldb/packages/Python/lldbsuite
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite')
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py14
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py18
2 files changed, 32 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py
index d227a66..68f58bf 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py
@@ -831,6 +831,20 @@ class DebugCommunication(object):
}
return self.send_recv(command_dict)
+ def request_writeMemory(self, memoryReference, data, offset=0, allowPartial=True):
+ args_dict = {
+ "memoryReference": memoryReference,
+ "offset": offset,
+ "allowPartial": allowPartial,
+ "data": data,
+ }
+ command_dict = {
+ "command": "writeMemory",
+ "type": "request",
+ "arguments": args_dict,
+ }
+ return self.send_recv(command_dict)
+
def request_evaluate(self, expression, frameIndex=0, threadId=None, context=None):
stackFrame = self.get_stackFrame(frameIndex=frameIndex, threadId=threadId)
if stackFrame is None:
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py
index 6299caf..00b01d4 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py
@@ -8,6 +8,7 @@ from dap_server import Source
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbplatformutil
import lldbgdbserverutils
+import base64
class DAPTestCaseBase(TestBase):
@@ -506,3 +507,20 @@ class DAPTestCaseBase(TestBase):
self.dap_server.request_disconnect(terminateDebuggee=True)
self.assertIsNotNone(server_tool, "debugserver not found.")
return server_tool
+
+ def writeMemory(self, memoryReference, data=None, offset=None, allowPartial=None):
+ # This function accepts data in decimal and hexadecimal format,
+ # converts it to a Base64 string, and send it to the DAP,
+ # which expects Base64 encoded data.
+ encodedData = (
+ ""
+ if data is None
+ else base64.b64encode(
+ # (bit_length + 7 (rounding up to nearest byte) ) //8 = converts to bytes.
+ data.to_bytes((data.bit_length() + 7) // 8, "little")
+ ).decode()
+ )
+ response = self.dap_server.request_writeMemory(
+ memoryReference, encodedData, offset=offset, allowPartial=allowPartial
+ )
+ return response