diff options
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py | 29 | ||||
-rw-r--r-- | lldb/source/Target/Process.cpp | 5 |
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); |