aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/API/SBData.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2021-12-25 22:30:44 +0000
committerDimitry Andric <dim@FreeBSD.org>2021-12-25 22:30:44 +0000
commit77fc4c146f0870ffb09c1afb823ccbe742c5e6ff (patch)
tree5c0eb39553003b9c75a901af6bc4ddabd6f2f28c /lldb/source/API/SBData.cpp
parentf65dcba83ce5035ab88a85fe17628b447eb56e1b (diff)
Diffstat (limited to 'lldb/source/API/SBData.cpp')
-rw-r--r--lldb/source/API/SBData.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lldb/source/API/SBData.cpp b/lldb/source/API/SBData.cpp
index daf313ad55c9..9fc590578bce 100644
--- a/lldb/source/API/SBData.cpp
+++ b/lldb/source/API/SBData.cpp
@@ -374,6 +374,25 @@ void SBData::SetData(lldb::SBError &error, const void *buf, size_t size,
}
}
+void SBData::SetDataWithOwnership(lldb::SBError &error, const void *buf,
+ size_t size, lldb::ByteOrder endian,
+ uint8_t addr_size) {
+ LLDB_RECORD_DUMMY(
+ void, SBData, SetData,
+ (lldb::SBError &, const void *, size_t, lldb::ByteOrder, uint8_t, bool),
+ error, buf, size, endian, addr_size, copy);
+
+ lldb::DataBufferSP buffer_sp = std::make_shared<DataBufferHeap>(buf, size);
+
+ if (!m_opaque_sp.get())
+ m_opaque_sp = std::make_shared<DataExtractor>(buf, size, endian, addr_size);
+ else {
+ m_opaque_sp->SetData(buffer_sp);
+ m_opaque_sp->SetByteOrder(endian);
+ m_opaque_sp->SetAddressByteSize(addr_size);
+ }
+}
+
bool SBData::Append(const SBData &rhs) {
LLDB_RECORD_METHOD(bool, SBData, Append, (const lldb::SBData &), rhs);