summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py29
-rw-r--r--lldb/source/Target/Process.cpp5
2 files changed, 32 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py
new file mode 100644
index 00000000000..812dbf7aa8e
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py
@@ -0,0 +1,29 @@
+from __future__ import print_function
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+from gdbclientutils import *
+
+
+class TestWriteMemory(GDBRemoteTestBase):
+
+ def test(self):
+
+ class MyResponder(MockGDBServerResponder):
+ def setBreakpoint(self, packet):
+ return "OK"
+
+ self.server.responder = MyResponder()
+ target = self.dbg.CreateTarget('')
+ process = self.connect(target)
+
+ bp = target.BreakpointCreateByAddress(0x1000)
+ self.assertTrue(bp.IsValid())
+ self.assertEqual(bp.GetNumLocations(), 1)
+ bp.SetEnabled(True)
+ self.assertTrue(bp.IsEnabled())
+
+ err = lldb.SBError()
+ data = str("\x01\x02\x03\x04")
+ result = process.WriteMemory(0x1000, data, err)
+ self.assertEqual(result, 4)
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 15fcd8bb9c2..e01def92666 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -2261,8 +2261,9 @@ size_t Process::WriteMemory(addr_t addr, const void *buf, size_t size,
});
if (bytes_written < size)
- WriteMemoryPrivate(addr + bytes_written, ubuf + bytes_written,
- size - bytes_written, error);
+ return bytes_written + WriteMemoryPrivate(addr + bytes_written,
+ ubuf + bytes_written,
+ size - bytes_written, error);
}
} else {
return WriteMemoryPrivate(addr, buf, size, error);
OpenPOWER on IntegriCloud