summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Process.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2010-12-16 20:01:20 +0000
committerGreg Clayton <gclayton@apple.com>2010-12-16 20:01:20 +0000
commit58a4c467667f0e413bf86fb970b2b44dd4c1e906 (patch)
treec632dbcc79414e3ee608674e5e32b1e72a10d53e /lldb/source/Target/Process.cpp
parentaf49e9774ac9ebb5f169196e6dd8dd70861d80e0 (diff)
downloadbcm5719-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.cpp23
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)
{
OpenPOWER on IntegriCloud