summaryrefslogtreecommitdiff
path: root/lldb/source/API/SBProcess.cpp
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2012-01-06 00:46:12 +0000
committerJohnny Chen <johnny.chen@apple.com>2012-01-06 00:46:12 +0000
commit39c6d0f9ae60dae09d48eaa264339ff438bbebd2 (patch)
treed3f4c34417b7acdfd1de8514df5f8f8daec75a1a /lldb/source/API/SBProcess.cpp
parent650e3b014ea230203bebd8a293c893cdb6b3727e (diff)
http://llvm.org/bugs/show_bug.cgi?id=11619
Allow creating SBData values from arrays or primitives in Python Patch submitted by Enrico Granata. llvm-svn: 147639
Diffstat (limited to 'lldb/source/API/SBProcess.cpp')
-rw-r--r--lldb/source/API/SBProcess.cpp125
1 files changed, 125 insertions, 0 deletions
diff --git a/lldb/source/API/SBProcess.cpp b/lldb/source/API/SBProcess.cpp
index 89932a37208e..2930f2868765 100644
--- a/lldb/source/API/SBProcess.cpp
+++ b/lldb/source/API/SBProcess.cpp
@@ -919,4 +919,129 @@ SBProcess::UnloadImage (uint32_t image_token)
return sb_error;
}
+lldb::SBData
+SBProcess::GetDataFromCString(const char* data)
+{
+ if (!IsValid())
+ return SBData();
+
+ if (!data || !data[0])
+ return SBData();
+
+ uint32_t data_len = strlen(data);
+ lldb::ByteOrder byte_order = GetByteOrder();
+ uint8_t addr_size = GetAddressByteSize();
+
+ lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len));
+ lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, byte_order, addr_size));
+
+ SBData ret(data_sp);
+
+ return ret;
+}
+
+lldb::SBData
+SBProcess::GetDataFromUnsignedInt64Array(uint64_t* array, size_t array_len)
+{
+ if (!IsValid())
+ return SBData();
+
+ if (!array || array_len == 0)
+ return SBData();
+
+ lldb::ByteOrder byte_order = GetByteOrder();
+ uint8_t addr_size = GetAddressByteSize();
+ size_t data_len = array_len * sizeof(uint64_t);
+
+ lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
+ lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, byte_order, addr_size));
+
+ SBData ret(data_sp);
+
+ return ret;
+}
+
+lldb::SBData
+SBProcess::GetDataFromUnsignedInt32Array(uint32_t* array, size_t array_len)
+{
+ if (!IsValid())
+ return SBData();
+
+ if (!array || array_len == 0)
+ return SBData();
+
+ lldb::ByteOrder byte_order = GetByteOrder();
+ uint8_t addr_size = GetAddressByteSize();
+ size_t data_len = array_len * sizeof(uint32_t);
+
+ lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
+ lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, byte_order, addr_size));
+
+ SBData ret(data_sp);
+
+ return ret;
+}
+
+lldb::SBData
+SBProcess::GetDataFromSignedInt64Array(int64_t* array, size_t array_len)
+{
+ if (!IsValid())
+ return SBData();
+
+ if (!array || array_len == 0)
+ return SBData();
+
+ lldb::ByteOrder byte_order = GetByteOrder();
+ uint8_t addr_size = GetAddressByteSize();
+ size_t data_len = array_len * sizeof(int64_t);
+
+ lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
+ lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, byte_order, addr_size));
+
+ SBData ret(data_sp);
+
+ return ret;
+}
+
+lldb::SBData
+SBProcess::GetDataFromSignedInt32Array(int32_t* array, size_t array_len)
+{
+ if (!IsValid())
+ return SBData();
+
+ if (!array || array_len == 0)
+ return SBData();
+
+ lldb::ByteOrder byte_order = GetByteOrder();
+ uint8_t addr_size = GetAddressByteSize();
+ size_t data_len = array_len * sizeof(int32_t);
+
+ lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
+ lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, byte_order, addr_size));
+
+ SBData ret(data_sp);
+
+ return ret;
+}
+
+lldb::SBData
+SBProcess::GetDataFromDoubleArray(double* array, size_t array_len)
+{
+ if (!IsValid())
+ return SBData();
+
+ if (!array || array_len == 0)
+ return SBData();
+
+ lldb::ByteOrder byte_order = GetByteOrder();
+ uint8_t addr_size = GetAddressByteSize();
+ size_t data_len = array_len * sizeof(double);
+
+ lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
+ lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, byte_order, addr_size));
+
+ SBData ret(data_sp);
+
+ return ret;
+}