[Lldb-commits] [lldb] r357420 - [Process] Fix WriteMemory return value
Med Ismail Bennani via lldb-commits
lldb-commits at lists.llvm.org
Mon Apr 1 12:08:47 PDT 2019
Author: mib
Date: Mon Apr 1 12:08:47 2019
New Revision: 357420
URL: http://llvm.org/viewvc/llvm-project?rev=357420&view=rev
Log:
[Process] Fix WriteMemory return value
Summary:
In case of a breakpoint site overlapping with the destination address,
the WriteMemory method reported an incorrect memory size.
Instead of returning the right amount of bytes written, it falls through
the scope and returned 0.
Signed-off-by: Med Ismail Bennani <medismail.bennani at gmail.com>
Reviewers: jasonmolenda, friss, jingham
Subscribers: JDevlieghere, davide, lldb-commits, #lldb
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D60022
Added:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py
Modified:
lldb/trunk/source/Target/Process.cpp
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py?rev=357420&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py Mon Apr 1 12:08:47 2019
@@ -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)
Modified: lldb/trunk/source/Target/Process.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=357420&r1=357419&r2=357420&view=diff
==============================================================================
--- lldb/trunk/source/Target/Process.cpp (original)
+++ lldb/trunk/source/Target/Process.cpp Mon Apr 1 12:08:47 2019
@@ -2261,8 +2261,9 @@ size_t Process::WriteMemory(addr_t addr,
});
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);
More information about the lldb-commits
mailing list