diff options
author | Greg Clayton <gclayton@apple.com> | 2010-12-16 20:01:20 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2010-12-16 20:01:20 +0000 |
commit | 58a4c467667f0e413bf86fb970b2b44dd4c1e906 (patch) | |
tree | c632dbcc79414e3ee608674e5e32b1e72a10d53e /lldb/source/Target/Process.cpp | |
parent | af49e9774ac9ebb5f169196e6dd8dd70861d80e0 (diff) | |
download | bcm5719-llvm-58a4c467667f0e413bf86fb970b2b44dd4c1e906.tar.gz bcm5719-llvm-58a4c467667f0e413bf86fb970b2b44dd4c1e906.zip |
Added the ability to read unsigned integers from the Process:
uint64_t Process::ReadUnsignedInteger (addr_t addr, size_t int_byte_size, Error &error);
llvm-svn: 121996
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r-- | lldb/source/Target/Process.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 72378157706..4b0fd24864b 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -1072,6 +1072,29 @@ Process::ReadMemory (addr_t addr, void *buf, size_t size, Error &error) return bytes_read; } +uint64_t +Process::ReadUnsignedInteger (lldb::addr_t vm_addr, size_t integer_byte_size, Error &error) +{ + if (integer_byte_size > sizeof(uint64_t)) + { + error.SetErrorString ("unsupported integer size"); + } + else + { + uint8_t tmp[sizeof(uint64_t)]; + DataExtractor data (tmp, integer_byte_size, GetByteOrder(), GetAddressByteSize()); + if (ReadMemory (vm_addr, tmp, integer_byte_size, error) == integer_byte_size) + { + uint32_t offset = 0; + return data.GetMaxU64 (&offset, integer_byte_size); + } + } + // Any plug-in that doesn't return success a memory read with the number + // of bytes that were requested should be setting the error + assert (error.Fail()); + return 0; +} + size_t Process::WriteMemoryPrivate (addr_t addr, const void *buf, size_t size, Error &error) { |