[Lldb-commits] [PATCH] D93939: [elf-core] Improve reading memory from core file
Djordje Todorovic via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Mon Feb 8 00:19:45 PST 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG9abd8c1a4c38: [elf-core] Improve reading memory from core file (authored by djtodoro).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D93939/new/
https://reviews.llvm.org/D93939
Files:
lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp
lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
Index: lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
===================================================================
--- lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
+++ lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
@@ -155,6 +155,24 @@
self.do_test("linux-x86_64", self._x86_64_pid, self._x86_64_regions,
"a.out")
+
+ @skipIf(triple='^mips')
+ @skipIfLLVMTargetMissing("X86")
+ @skipIfWindows
+ @skipIfReproducer
+ def test_read_memory(self):
+ """Test that we are able to read as many bytes as available"""
+ target = self.dbg.CreateTarget("linux-x86_64.out")
+ process = target.LoadCore("linux-x86_64.core")
+ self.assertTrue(process, PROCESS_IS_VALID)
+
+ error = lldb.SBError()
+ bytesread = process.ReadMemory(0x400ff0, 20, error)
+
+ # read only 16 bytes without zero bytes filling
+ self.assertEqual(len(bytesread), 16)
+ self.dbg.DeleteTarget(target)
+
@skipIf(triple='^mips')
@skipIfLLVMTargetMissing("X86")
def test_FPR_SSE(self):
Index: lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp
===================================================================
--- lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp
+++ lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp
@@ -353,7 +353,6 @@
const lldb::addr_t file_end = address_range->data.GetRangeEnd();
size_t bytes_to_read = size; // Number of bytes to read from the core file
size_t bytes_copied = 0; // Number of bytes actually read from the core file
- size_t zero_fill_size = 0; // Padding
lldb::addr_t bytes_left =
0; // Number of bytes available in the core file from the given address
@@ -367,24 +366,15 @@
if (file_end > file_start + offset)
bytes_left = file_end - (file_start + offset);
- // Figure out how many bytes we need to zero-fill if we are reading more
- // bytes than available in the on-disk segment
- if (bytes_to_read > bytes_left) {
- zero_fill_size = bytes_to_read - bytes_left;
+ if (bytes_to_read > bytes_left)
bytes_to_read = bytes_left;
- }
// If there is data available on the core file read it
if (bytes_to_read)
bytes_copied =
core_objfile->CopyData(offset + file_start, bytes_to_read, buf);
- assert(zero_fill_size <= size);
- // Pad remaining bytes
- if (zero_fill_size)
- memset(((char *)buf) + bytes_copied, 0, zero_fill_size);
-
- return bytes_copied + zero_fill_size;
+ return bytes_copied;
}
void ProcessElfCore::Clear() {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93939.322037.patch
Type: text/x-patch
Size: 2623 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210208/877d8a09/attachment.bin>
More information about the lldb-commits
mailing list