19128ee2fSEnrico Granata //===-- SBData.cpp ----------------------------------------------*- C++ -*-===// 29128ee2fSEnrico Granata // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 69128ee2fSEnrico Granata // 79128ee2fSEnrico Granata //===----------------------------------------------------------------------===// 89128ee2fSEnrico Granata 99128ee2fSEnrico Granata #include "lldb/API/SBData.h" 10baf5664fSJonas Devlieghere #include "SBReproducerPrivate.h" 119128ee2fSEnrico Granata #include "lldb/API/SBError.h" 129128ee2fSEnrico Granata #include "lldb/API/SBStream.h" 139128ee2fSEnrico Granata 1429cb868aSZachary Turner #include "lldb/Core/DumpDataExtractor.h" 15666cc0b2SZachary Turner #include "lldb/Utility/DataBufferHeap.h" 16666cc0b2SZachary Turner #include "lldb/Utility/DataExtractor.h" 17bf9a7730SZachary Turner #include "lldb/Utility/Stream.h" 18da7bc7d0SGreg Clayton 19796ac80bSJonas Devlieghere #include <cinttypes> 20796ac80bSJonas Devlieghere #include <memory> 21796ac80bSJonas Devlieghere 229128ee2fSEnrico Granata using namespace lldb; 239128ee2fSEnrico Granata using namespace lldb_private; 249128ee2fSEnrico Granata 25baf5664fSJonas Devlieghere SBData::SBData() : m_opaque_sp(new DataExtractor()) { 26baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBData); 27baf5664fSJonas Devlieghere } 289128ee2fSEnrico Granata 29b9c1b51eSKate Stone SBData::SBData(const lldb::DataExtractorSP &data_sp) : m_opaque_sp(data_sp) {} 309128ee2fSEnrico Granata 31baf5664fSJonas Devlieghere SBData::SBData(const SBData &rhs) : m_opaque_sp(rhs.m_opaque_sp) { 32baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBData, (const lldb::SBData &), rhs); 33baf5664fSJonas Devlieghere } 349128ee2fSEnrico Granata 35b9c1b51eSKate Stone const SBData &SBData::operator=(const SBData &rhs) { 36baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(const lldb::SBData &, 37baf5664fSJonas Devlieghere SBData, operator=,(const lldb::SBData &), rhs); 38baf5664fSJonas Devlieghere 399128ee2fSEnrico Granata if (this != &rhs) 409128ee2fSEnrico Granata m_opaque_sp = rhs.m_opaque_sp; 419128ee2fSEnrico Granata return *this; 429128ee2fSEnrico Granata } 439128ee2fSEnrico Granata 44b9c1b51eSKate Stone SBData::~SBData() {} 459128ee2fSEnrico Granata 46b9c1b51eSKate Stone void SBData::SetOpaque(const lldb::DataExtractorSP &data_sp) { 479128ee2fSEnrico Granata m_opaque_sp = data_sp; 489128ee2fSEnrico Granata } 499128ee2fSEnrico Granata 50b9c1b51eSKate Stone lldb_private::DataExtractor *SBData::get() const { return m_opaque_sp.get(); } 519128ee2fSEnrico Granata 52b9c1b51eSKate Stone lldb_private::DataExtractor *SBData::operator->() const { 539128ee2fSEnrico Granata return m_opaque_sp.operator->(); 549128ee2fSEnrico Granata } 559128ee2fSEnrico Granata 56b9c1b51eSKate Stone lldb::DataExtractorSP &SBData::operator*() { return m_opaque_sp; } 579128ee2fSEnrico Granata 58b9c1b51eSKate Stone const lldb::DataExtractorSP &SBData::operator*() const { return m_opaque_sp; } 599128ee2fSEnrico Granata 60baf5664fSJonas Devlieghere bool SBData::IsValid() { 61baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBData, IsValid); 627f5237bcSPavel Labath return this->operator bool(); 637f5237bcSPavel Labath } 647f5237bcSPavel Labath SBData::operator bool() const { 657f5237bcSPavel Labath LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBData, operator bool); 66baf5664fSJonas Devlieghere 67baf5664fSJonas Devlieghere return m_opaque_sp.get() != NULL; 68baf5664fSJonas Devlieghere } 699128ee2fSEnrico Granata 70b9c1b51eSKate Stone uint8_t SBData::GetAddressByteSize() { 71baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint8_t, SBData, GetAddressByteSize); 72baf5664fSJonas Devlieghere 739128ee2fSEnrico Granata uint8_t value = 0; 749128ee2fSEnrico Granata if (m_opaque_sp.get()) 759128ee2fSEnrico Granata value = m_opaque_sp->GetAddressByteSize(); 769128ee2fSEnrico Granata return value; 779128ee2fSEnrico Granata } 789128ee2fSEnrico Granata 79b9c1b51eSKate Stone void SBData::SetAddressByteSize(uint8_t addr_byte_size) { 80baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBData, SetAddressByteSize, (uint8_t), 81baf5664fSJonas Devlieghere addr_byte_size); 82baf5664fSJonas Devlieghere 830f28986aSGreg Clayton if (m_opaque_sp.get()) 840f28986aSGreg Clayton m_opaque_sp->SetAddressByteSize(addr_byte_size); 850f28986aSGreg Clayton } 860f28986aSGreg Clayton 87b9c1b51eSKate Stone void SBData::Clear() { 88baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBData, Clear); 89baf5664fSJonas Devlieghere 909128ee2fSEnrico Granata if (m_opaque_sp.get()) 919128ee2fSEnrico Granata m_opaque_sp->Clear(); 929128ee2fSEnrico Granata } 939128ee2fSEnrico Granata 94b9c1b51eSKate Stone size_t SBData::GetByteSize() { 95baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(size_t, SBData, GetByteSize); 96baf5664fSJonas Devlieghere 979128ee2fSEnrico Granata size_t value = 0; 989128ee2fSEnrico Granata if (m_opaque_sp.get()) 999128ee2fSEnrico Granata value = m_opaque_sp->GetByteSize(); 1009128ee2fSEnrico Granata return value; 1019128ee2fSEnrico Granata } 1029128ee2fSEnrico Granata 103b9c1b51eSKate Stone lldb::ByteOrder SBData::GetByteOrder() { 104baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::ByteOrder, SBData, GetByteOrder); 105baf5664fSJonas Devlieghere 1069128ee2fSEnrico Granata lldb::ByteOrder value = eByteOrderInvalid; 1079128ee2fSEnrico Granata if (m_opaque_sp.get()) 1089128ee2fSEnrico Granata value = m_opaque_sp->GetByteOrder(); 1099128ee2fSEnrico Granata return value; 1109128ee2fSEnrico Granata } 1119128ee2fSEnrico Granata 112b9c1b51eSKate Stone void SBData::SetByteOrder(lldb::ByteOrder endian) { 113baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBData, SetByteOrder, (lldb::ByteOrder), endian); 114baf5664fSJonas Devlieghere 1150f28986aSGreg Clayton if (m_opaque_sp.get()) 1160f28986aSGreg Clayton m_opaque_sp->SetByteOrder(endian); 1170f28986aSGreg Clayton } 1180f28986aSGreg Clayton 119b9c1b51eSKate Stone float SBData::GetFloat(lldb::SBError &error, lldb::offset_t offset) { 120baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(float, SBData, GetFloat, (lldb::SBError &, lldb::offset_t), 121baf5664fSJonas Devlieghere error, offset); 122baf5664fSJonas Devlieghere 1239128ee2fSEnrico Granata float value = 0; 124b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 1259128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 126b9c1b51eSKate Stone } else { 1279128ee2fSEnrico Granata uint32_t old_offset = offset; 1289128ee2fSEnrico Granata value = m_opaque_sp->GetFloat(&offset); 1299128ee2fSEnrico Granata if (offset == old_offset) 1309128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1319128ee2fSEnrico Granata } 1329128ee2fSEnrico Granata return value; 1339128ee2fSEnrico Granata } 1349128ee2fSEnrico Granata 135b9c1b51eSKate Stone double SBData::GetDouble(lldb::SBError &error, lldb::offset_t offset) { 136baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(double, SBData, GetDouble, 137baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 138baf5664fSJonas Devlieghere 1399128ee2fSEnrico Granata double value = 0; 140b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 1419128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 142b9c1b51eSKate Stone } else { 1439128ee2fSEnrico Granata uint32_t old_offset = offset; 1449128ee2fSEnrico Granata value = m_opaque_sp->GetDouble(&offset); 1459128ee2fSEnrico Granata if (offset == old_offset) 1469128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1479128ee2fSEnrico Granata } 1489128ee2fSEnrico Granata return value; 1499128ee2fSEnrico Granata } 1509128ee2fSEnrico Granata 151b9c1b51eSKate Stone long double SBData::GetLongDouble(lldb::SBError &error, lldb::offset_t offset) { 152baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(long double, SBData, GetLongDouble, 153baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 154baf5664fSJonas Devlieghere 1559128ee2fSEnrico Granata long double value = 0; 156b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 1579128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 158b9c1b51eSKate Stone } else { 1599128ee2fSEnrico Granata uint32_t old_offset = offset; 1609128ee2fSEnrico Granata value = m_opaque_sp->GetLongDouble(&offset); 1619128ee2fSEnrico Granata if (offset == old_offset) 1629128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1639128ee2fSEnrico Granata } 1649128ee2fSEnrico Granata return value; 1659128ee2fSEnrico Granata } 1669128ee2fSEnrico Granata 167b9c1b51eSKate Stone lldb::addr_t SBData::GetAddress(lldb::SBError &error, lldb::offset_t offset) { 168baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::addr_t, SBData, GetAddress, 169baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 170baf5664fSJonas Devlieghere 1719128ee2fSEnrico Granata lldb::addr_t value = 0; 172b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 1739128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 174b9c1b51eSKate Stone } else { 1759128ee2fSEnrico Granata uint32_t old_offset = offset; 1769128ee2fSEnrico Granata value = m_opaque_sp->GetAddress(&offset); 1779128ee2fSEnrico Granata if (offset == old_offset) 1789128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1799128ee2fSEnrico Granata } 1809128ee2fSEnrico Granata return value; 1819128ee2fSEnrico Granata } 1829128ee2fSEnrico Granata 183b9c1b51eSKate Stone uint8_t SBData::GetUnsignedInt8(lldb::SBError &error, lldb::offset_t offset) { 184baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint8_t, SBData, GetUnsignedInt8, 185baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 186baf5664fSJonas Devlieghere 1879128ee2fSEnrico Granata uint8_t value = 0; 188b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 1899128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 190b9c1b51eSKate Stone } else { 1919128ee2fSEnrico Granata uint32_t old_offset = offset; 1929128ee2fSEnrico Granata value = m_opaque_sp->GetU8(&offset); 1939128ee2fSEnrico Granata if (offset == old_offset) 1949128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1959128ee2fSEnrico Granata } 1969128ee2fSEnrico Granata return value; 1979128ee2fSEnrico Granata } 1989128ee2fSEnrico Granata 199b9c1b51eSKate Stone uint16_t SBData::GetUnsignedInt16(lldb::SBError &error, lldb::offset_t offset) { 200baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint16_t, SBData, GetUnsignedInt16, 201baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 202baf5664fSJonas Devlieghere 2039128ee2fSEnrico Granata uint16_t value = 0; 204b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 2059128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 206b9c1b51eSKate Stone } else { 2079128ee2fSEnrico Granata uint32_t old_offset = offset; 2089128ee2fSEnrico Granata value = m_opaque_sp->GetU16(&offset); 2099128ee2fSEnrico Granata if (offset == old_offset) 2109128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2119128ee2fSEnrico Granata } 2129128ee2fSEnrico Granata return value; 2139128ee2fSEnrico Granata } 2149128ee2fSEnrico Granata 215b9c1b51eSKate Stone uint32_t SBData::GetUnsignedInt32(lldb::SBError &error, lldb::offset_t offset) { 216baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint32_t, SBData, GetUnsignedInt32, 217baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 218baf5664fSJonas Devlieghere 2199128ee2fSEnrico Granata uint32_t value = 0; 220b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 2219128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 222b9c1b51eSKate Stone } else { 2239128ee2fSEnrico Granata uint32_t old_offset = offset; 2249128ee2fSEnrico Granata value = m_opaque_sp->GetU32(&offset); 2259128ee2fSEnrico Granata if (offset == old_offset) 2269128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2279128ee2fSEnrico Granata } 2289128ee2fSEnrico Granata return value; 2299128ee2fSEnrico Granata } 2309128ee2fSEnrico Granata 231b9c1b51eSKate Stone uint64_t SBData::GetUnsignedInt64(lldb::SBError &error, lldb::offset_t offset) { 232baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint64_t, SBData, GetUnsignedInt64, 233baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 234baf5664fSJonas Devlieghere 2359128ee2fSEnrico Granata uint64_t value = 0; 236b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 2379128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 238b9c1b51eSKate Stone } else { 2399128ee2fSEnrico Granata uint32_t old_offset = offset; 2409128ee2fSEnrico Granata value = m_opaque_sp->GetU64(&offset); 2419128ee2fSEnrico Granata if (offset == old_offset) 2429128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2439128ee2fSEnrico Granata } 2449128ee2fSEnrico Granata return value; 2459128ee2fSEnrico Granata } 2469128ee2fSEnrico Granata 247b9c1b51eSKate Stone int8_t SBData::GetSignedInt8(lldb::SBError &error, lldb::offset_t offset) { 248baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(int8_t, SBData, GetSignedInt8, 249baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 250baf5664fSJonas Devlieghere 2519128ee2fSEnrico Granata int8_t value = 0; 252b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 2539128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 254b9c1b51eSKate Stone } else { 2559128ee2fSEnrico Granata uint32_t old_offset = offset; 2569128ee2fSEnrico Granata value = (int8_t)m_opaque_sp->GetMaxS64(&offset, 1); 2579128ee2fSEnrico Granata if (offset == old_offset) 2589128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2599128ee2fSEnrico Granata } 2609128ee2fSEnrico Granata return value; 2619128ee2fSEnrico Granata } 2629128ee2fSEnrico Granata 263b9c1b51eSKate Stone int16_t SBData::GetSignedInt16(lldb::SBError &error, lldb::offset_t offset) { 264baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(int16_t, SBData, GetSignedInt16, 265baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 266baf5664fSJonas Devlieghere 2679128ee2fSEnrico Granata int16_t value = 0; 268b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 2699128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 270b9c1b51eSKate Stone } else { 2719128ee2fSEnrico Granata uint32_t old_offset = offset; 2729128ee2fSEnrico Granata value = (int16_t)m_opaque_sp->GetMaxS64(&offset, 2); 2739128ee2fSEnrico Granata if (offset == old_offset) 2749128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2759128ee2fSEnrico Granata } 2769128ee2fSEnrico Granata return value; 2779128ee2fSEnrico Granata } 2789128ee2fSEnrico Granata 279b9c1b51eSKate Stone int32_t SBData::GetSignedInt32(lldb::SBError &error, lldb::offset_t offset) { 280baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(int32_t, SBData, GetSignedInt32, 281baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 282baf5664fSJonas Devlieghere 2839128ee2fSEnrico Granata int32_t value = 0; 284b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 2859128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 286b9c1b51eSKate Stone } else { 2879128ee2fSEnrico Granata uint32_t old_offset = offset; 2889128ee2fSEnrico Granata value = (int32_t)m_opaque_sp->GetMaxS64(&offset, 4); 2899128ee2fSEnrico Granata if (offset == old_offset) 2909128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2919128ee2fSEnrico Granata } 2929128ee2fSEnrico Granata return value; 2939128ee2fSEnrico Granata } 2949128ee2fSEnrico Granata 295b9c1b51eSKate Stone int64_t SBData::GetSignedInt64(lldb::SBError &error, lldb::offset_t offset) { 296baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(int64_t, SBData, GetSignedInt64, 297baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 298baf5664fSJonas Devlieghere 2999128ee2fSEnrico Granata int64_t value = 0; 300b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 3019128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 302b9c1b51eSKate Stone } else { 3039128ee2fSEnrico Granata uint32_t old_offset = offset; 3049128ee2fSEnrico Granata value = (int64_t)m_opaque_sp->GetMaxS64(&offset, 8); 3059128ee2fSEnrico Granata if (offset == old_offset) 3069128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3079128ee2fSEnrico Granata } 3089128ee2fSEnrico Granata return value; 3099128ee2fSEnrico Granata } 3109128ee2fSEnrico Granata 311b9c1b51eSKate Stone const char *SBData::GetString(lldb::SBError &error, lldb::offset_t offset) { 312baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(const char *, SBData, GetString, 313baf5664fSJonas Devlieghere (lldb::SBError &, lldb::offset_t), error, offset); 314baf5664fSJonas Devlieghere 3159128ee2fSEnrico Granata const char *value = 0; 316b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 3179128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 318b9c1b51eSKate Stone } else { 3199128ee2fSEnrico Granata uint32_t old_offset = offset; 3209128ee2fSEnrico Granata value = m_opaque_sp->GetCStr(&offset); 3219128ee2fSEnrico Granata if (offset == old_offset || (value == NULL)) 3229128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3239128ee2fSEnrico Granata } 3249128ee2fSEnrico Granata return value; 3259128ee2fSEnrico Granata } 3269128ee2fSEnrico Granata 327b9c1b51eSKate Stone bool SBData::GetDescription(lldb::SBStream &description, 328b9c1b51eSKate Stone lldb::addr_t base_addr) { 329baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, GetDescription, 330baf5664fSJonas Devlieghere (lldb::SBStream &, lldb::addr_t), description, base_addr); 331baf5664fSJonas Devlieghere 332da7bc7d0SGreg Clayton Stream &strm = description.ref(); 333da7bc7d0SGreg Clayton 334b9c1b51eSKate Stone if (m_opaque_sp) { 33529cb868aSZachary Turner DumpDataExtractor(*m_opaque_sp, &strm, 0, lldb::eFormatBytesWithASCII, 1, 336b9c1b51eSKate Stone m_opaque_sp->GetByteSize(), 16, base_addr, 0, 0); 337b9c1b51eSKate Stone } else 338da7bc7d0SGreg Clayton strm.PutCString("No value"); 3399128ee2fSEnrico Granata 3409128ee2fSEnrico Granata return true; 3419128ee2fSEnrico Granata } 3429128ee2fSEnrico Granata 343b9c1b51eSKate Stone size_t SBData::ReadRawData(lldb::SBError &error, lldb::offset_t offset, 344b9c1b51eSKate Stone void *buf, size_t size) { 3450d7b0c96SJonas Devlieghere LLDB_RECORD_DUMMY(size_t, SBData, ReadRawData, 3460d7b0c96SJonas Devlieghere (lldb::SBError &, lldb::offset_t, void *, size_t), error, 3470d7b0c96SJonas Devlieghere offset, buf, size); 3480d7b0c96SJonas Devlieghere 3499128ee2fSEnrico Granata void *ok = NULL; 350b9c1b51eSKate Stone if (!m_opaque_sp.get()) { 3519128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 352b9c1b51eSKate Stone } else { 3539128ee2fSEnrico Granata uint32_t old_offset = offset; 3549128ee2fSEnrico Granata ok = m_opaque_sp->GetU8(&offset, buf, size); 3559128ee2fSEnrico Granata if ((offset == old_offset) || (ok == NULL)) 3569128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3579128ee2fSEnrico Granata } 3589128ee2fSEnrico Granata return ok ? size : 0; 3599128ee2fSEnrico Granata } 3609128ee2fSEnrico Granata 361b9c1b51eSKate Stone void SBData::SetData(lldb::SBError &error, const void *buf, size_t size, 362b9c1b51eSKate Stone lldb::ByteOrder endian, uint8_t addr_size) { 3630d7b0c96SJonas Devlieghere LLDB_RECORD_DUMMY( 3640d7b0c96SJonas Devlieghere void, SBData, SetData, 3650d7b0c96SJonas Devlieghere (lldb::SBError &, const void *, size_t, lldb::ByteOrder, uint8_t), error, 3660d7b0c96SJonas Devlieghere buf, size, endian, addr_size); 3670d7b0c96SJonas Devlieghere 3689128ee2fSEnrico Granata if (!m_opaque_sp.get()) 369796ac80bSJonas Devlieghere m_opaque_sp = std::make_shared<DataExtractor>(buf, size, endian, addr_size); 3709128ee2fSEnrico Granata else 371896b4513SGreg Clayton { 3729128ee2fSEnrico Granata m_opaque_sp->SetData(buf, size, endian); 373896b4513SGreg Clayton m_opaque_sp->SetAddressByteSize(addr_size); 374896b4513SGreg Clayton } 3759128ee2fSEnrico Granata } 3769128ee2fSEnrico Granata 377b9c1b51eSKate Stone bool SBData::Append(const SBData &rhs) { 378baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, Append, (const lldb::SBData &), rhs); 379baf5664fSJonas Devlieghere 3809128ee2fSEnrico Granata bool value = false; 3819128ee2fSEnrico Granata if (m_opaque_sp.get() && rhs.m_opaque_sp.get()) 3829128ee2fSEnrico Granata value = m_opaque_sp.get()->Append(*rhs.m_opaque_sp); 3839128ee2fSEnrico Granata return value; 3849128ee2fSEnrico Granata } 3850f28986aSGreg Clayton 386b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromCString(lldb::ByteOrder endian, 387b9c1b51eSKate Stone uint32_t addr_byte_size, 388b9c1b51eSKate Stone const char *data) { 389baf5664fSJonas Devlieghere LLDB_RECORD_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromCString, 390baf5664fSJonas Devlieghere (lldb::ByteOrder, uint32_t, const char *), endian, 391baf5664fSJonas Devlieghere addr_byte_size, data); 392baf5664fSJonas Devlieghere 3930f28986aSGreg Clayton if (!data || !data[0]) 394baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBData()); 3950f28986aSGreg Clayton 3960f28986aSGreg Clayton uint32_t data_len = strlen(data); 3970f28986aSGreg Clayton 3980f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 399b9c1b51eSKate Stone lldb::DataExtractorSP data_sp( 400b9c1b51eSKate Stone new DataExtractor(buffer_sp, endian, addr_byte_size)); 4010f28986aSGreg Clayton 4020f28986aSGreg Clayton SBData ret(data_sp); 4030f28986aSGreg Clayton 404baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ret); 4050f28986aSGreg Clayton } 4060f28986aSGreg Clayton 407b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromUInt64Array(lldb::ByteOrder endian, 408b9c1b51eSKate Stone uint32_t addr_byte_size, 409b9c1b51eSKate Stone uint64_t *array, 410b9c1b51eSKate Stone size_t array_len) { 411baf5664fSJonas Devlieghere LLDB_RECORD_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromUInt64Array, 412baf5664fSJonas Devlieghere (lldb::ByteOrder, uint32_t, uint64_t *, size_t), 413baf5664fSJonas Devlieghere endian, addr_byte_size, array, array_len); 414baf5664fSJonas Devlieghere 4150f28986aSGreg Clayton if (!array || array_len == 0) 416baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBData()); 4170f28986aSGreg Clayton 4180f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 4190f28986aSGreg Clayton 4200f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 421b9c1b51eSKate Stone lldb::DataExtractorSP data_sp( 422b9c1b51eSKate Stone new DataExtractor(buffer_sp, endian, addr_byte_size)); 4230f28986aSGreg Clayton 4240f28986aSGreg Clayton SBData ret(data_sp); 4250f28986aSGreg Clayton 426baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ret); 4270f28986aSGreg Clayton } 4280f28986aSGreg Clayton 429b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromUInt32Array(lldb::ByteOrder endian, 430b9c1b51eSKate Stone uint32_t addr_byte_size, 431b9c1b51eSKate Stone uint32_t *array, 432b9c1b51eSKate Stone size_t array_len) { 433baf5664fSJonas Devlieghere LLDB_RECORD_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromUInt32Array, 434baf5664fSJonas Devlieghere (lldb::ByteOrder, uint32_t, uint32_t *, size_t), 435baf5664fSJonas Devlieghere endian, addr_byte_size, array, array_len); 436baf5664fSJonas Devlieghere 4370f28986aSGreg Clayton if (!array || array_len == 0) 438baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBData()); 4390f28986aSGreg Clayton 4400f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 4410f28986aSGreg Clayton 4420f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 443b9c1b51eSKate Stone lldb::DataExtractorSP data_sp( 444b9c1b51eSKate Stone new DataExtractor(buffer_sp, endian, addr_byte_size)); 4450f28986aSGreg Clayton 4460f28986aSGreg Clayton SBData ret(data_sp); 4470f28986aSGreg Clayton 448baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ret); 4490f28986aSGreg Clayton } 4500f28986aSGreg Clayton 451b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromSInt64Array(lldb::ByteOrder endian, 452b9c1b51eSKate Stone uint32_t addr_byte_size, 453b9c1b51eSKate Stone int64_t *array, 454b9c1b51eSKate Stone size_t array_len) { 455baf5664fSJonas Devlieghere LLDB_RECORD_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromSInt64Array, 456baf5664fSJonas Devlieghere (lldb::ByteOrder, uint32_t, int64_t *, size_t), 457baf5664fSJonas Devlieghere endian, addr_byte_size, array, array_len); 458baf5664fSJonas Devlieghere 4590f28986aSGreg Clayton if (!array || array_len == 0) 460baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBData()); 4610f28986aSGreg Clayton 4620f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 4630f28986aSGreg Clayton 4640f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 465b9c1b51eSKate Stone lldb::DataExtractorSP data_sp( 466b9c1b51eSKate Stone new DataExtractor(buffer_sp, endian, addr_byte_size)); 4670f28986aSGreg Clayton 4680f28986aSGreg Clayton SBData ret(data_sp); 4690f28986aSGreg Clayton 470baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ret); 4710f28986aSGreg Clayton } 4720f28986aSGreg Clayton 473b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromSInt32Array(lldb::ByteOrder endian, 474b9c1b51eSKate Stone uint32_t addr_byte_size, 475b9c1b51eSKate Stone int32_t *array, 476b9c1b51eSKate Stone size_t array_len) { 477baf5664fSJonas Devlieghere LLDB_RECORD_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromSInt32Array, 478baf5664fSJonas Devlieghere (lldb::ByteOrder, uint32_t, int32_t *, size_t), 479baf5664fSJonas Devlieghere endian, addr_byte_size, array, array_len); 480baf5664fSJonas Devlieghere 4810f28986aSGreg Clayton if (!array || array_len == 0) 482baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBData()); 4830f28986aSGreg Clayton 4840f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 4850f28986aSGreg Clayton 4860f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 487b9c1b51eSKate Stone lldb::DataExtractorSP data_sp( 488b9c1b51eSKate Stone new DataExtractor(buffer_sp, endian, addr_byte_size)); 4890f28986aSGreg Clayton 4900f28986aSGreg Clayton SBData ret(data_sp); 4910f28986aSGreg Clayton 492baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ret); 4930f28986aSGreg Clayton } 4940f28986aSGreg Clayton 495b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromDoubleArray(lldb::ByteOrder endian, 496b9c1b51eSKate Stone uint32_t addr_byte_size, 497b9c1b51eSKate Stone double *array, 498b9c1b51eSKate Stone size_t array_len) { 499baf5664fSJonas Devlieghere LLDB_RECORD_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromDoubleArray, 500baf5664fSJonas Devlieghere (lldb::ByteOrder, uint32_t, double *, size_t), 501baf5664fSJonas Devlieghere endian, addr_byte_size, array, array_len); 502baf5664fSJonas Devlieghere 5030f28986aSGreg Clayton if (!array || array_len == 0) 504baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBData()); 5050f28986aSGreg Clayton 5060f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 5070f28986aSGreg Clayton 5080f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 509b9c1b51eSKate Stone lldb::DataExtractorSP data_sp( 510b9c1b51eSKate Stone new DataExtractor(buffer_sp, endian, addr_byte_size)); 5110f28986aSGreg Clayton 5120f28986aSGreg Clayton SBData ret(data_sp); 5130f28986aSGreg Clayton 514baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ret); 5150f28986aSGreg Clayton } 5160f28986aSGreg Clayton 517b9c1b51eSKate Stone bool SBData::SetDataFromCString(const char *data) { 518baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, SetDataFromCString, (const char *), data); 519baf5664fSJonas Devlieghere 5200f28986aSGreg Clayton 521b9c1b51eSKate Stone if (!data) { 5220f28986aSGreg Clayton return false; 5230f28986aSGreg Clayton } 5240f28986aSGreg Clayton 5250f28986aSGreg Clayton size_t data_len = strlen(data); 5260f28986aSGreg Clayton 5270f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 5280f28986aSGreg Clayton 5290f28986aSGreg Clayton if (!m_opaque_sp.get()) 530796ac80bSJonas Devlieghere m_opaque_sp = std::make_shared<DataExtractor>(buffer_sp, GetByteOrder(), 531796ac80bSJonas Devlieghere GetAddressByteSize()); 5320f28986aSGreg Clayton else 5330f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 5340f28986aSGreg Clayton 5350f28986aSGreg Clayton 5360f28986aSGreg Clayton return true; 5370f28986aSGreg Clayton } 5380f28986aSGreg Clayton 539b9c1b51eSKate Stone bool SBData::SetDataFromUInt64Array(uint64_t *array, size_t array_len) { 540baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, SetDataFromUInt64Array, (uint64_t *, size_t), 541baf5664fSJonas Devlieghere array, array_len); 542baf5664fSJonas Devlieghere 5430f28986aSGreg Clayton 544b9c1b51eSKate Stone if (!array || array_len == 0) { 5450f28986aSGreg Clayton return false; 5460f28986aSGreg Clayton } 5470f28986aSGreg Clayton 5480f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 5490f28986aSGreg Clayton 5500f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5510f28986aSGreg Clayton 5520f28986aSGreg Clayton if (!m_opaque_sp.get()) 553796ac80bSJonas Devlieghere m_opaque_sp = std::make_shared<DataExtractor>(buffer_sp, GetByteOrder(), 554796ac80bSJonas Devlieghere GetAddressByteSize()); 5550f28986aSGreg Clayton else 5560f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 5570f28986aSGreg Clayton 5580f28986aSGreg Clayton 5590f28986aSGreg Clayton return true; 5600f28986aSGreg Clayton } 5610f28986aSGreg Clayton 562b9c1b51eSKate Stone bool SBData::SetDataFromUInt32Array(uint32_t *array, size_t array_len) { 563baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, SetDataFromUInt32Array, (uint32_t *, size_t), 564baf5664fSJonas Devlieghere array, array_len); 565baf5664fSJonas Devlieghere 5660f28986aSGreg Clayton 567b9c1b51eSKate Stone if (!array || array_len == 0) { 5680f28986aSGreg Clayton return false; 5690f28986aSGreg Clayton } 5700f28986aSGreg Clayton 5710f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 5720f28986aSGreg Clayton 5730f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5740f28986aSGreg Clayton 5750f28986aSGreg Clayton if (!m_opaque_sp.get()) 576796ac80bSJonas Devlieghere m_opaque_sp = std::make_shared<DataExtractor>(buffer_sp, GetByteOrder(), 577796ac80bSJonas Devlieghere GetAddressByteSize()); 5780f28986aSGreg Clayton else 5790f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 5800f28986aSGreg Clayton 5810f28986aSGreg Clayton return true; 5820f28986aSGreg Clayton } 5830f28986aSGreg Clayton 584b9c1b51eSKate Stone bool SBData::SetDataFromSInt64Array(int64_t *array, size_t array_len) { 585baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, SetDataFromSInt64Array, (int64_t *, size_t), 586baf5664fSJonas Devlieghere array, array_len); 587baf5664fSJonas Devlieghere 5880f28986aSGreg Clayton 589b9c1b51eSKate Stone if (!array || array_len == 0) { 5900f28986aSGreg Clayton return false; 5910f28986aSGreg Clayton } 5920f28986aSGreg Clayton 5930f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 5940f28986aSGreg Clayton 5950f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5960f28986aSGreg Clayton 5970f28986aSGreg Clayton if (!m_opaque_sp.get()) 598796ac80bSJonas Devlieghere m_opaque_sp = std::make_shared<DataExtractor>(buffer_sp, GetByteOrder(), 599796ac80bSJonas Devlieghere GetAddressByteSize()); 6000f28986aSGreg Clayton else 6010f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6020f28986aSGreg Clayton 6030f28986aSGreg Clayton return true; 6040f28986aSGreg Clayton } 6050f28986aSGreg Clayton 606b9c1b51eSKate Stone bool SBData::SetDataFromSInt32Array(int32_t *array, size_t array_len) { 607baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, SetDataFromSInt32Array, (int32_t *, size_t), 608baf5664fSJonas Devlieghere array, array_len); 609baf5664fSJonas Devlieghere 6100f28986aSGreg Clayton 611b9c1b51eSKate Stone if (!array || array_len == 0) { 6120f28986aSGreg Clayton return false; 6130f28986aSGreg Clayton } 6140f28986aSGreg Clayton 6150f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 6160f28986aSGreg Clayton 6170f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6180f28986aSGreg Clayton 6190f28986aSGreg Clayton if (!m_opaque_sp.get()) 620796ac80bSJonas Devlieghere m_opaque_sp = std::make_shared<DataExtractor>(buffer_sp, GetByteOrder(), 621796ac80bSJonas Devlieghere GetAddressByteSize()); 6220f28986aSGreg Clayton else 6230f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6240f28986aSGreg Clayton 6250f28986aSGreg Clayton return true; 6260f28986aSGreg Clayton } 6270f28986aSGreg Clayton 628b9c1b51eSKate Stone bool SBData::SetDataFromDoubleArray(double *array, size_t array_len) { 629baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBData, SetDataFromDoubleArray, (double *, size_t), 630baf5664fSJonas Devlieghere array, array_len); 631baf5664fSJonas Devlieghere 6320f28986aSGreg Clayton 633b9c1b51eSKate Stone if (!array || array_len == 0) { 6340f28986aSGreg Clayton return false; 6350f28986aSGreg Clayton } 6360f28986aSGreg Clayton 6370f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 6380f28986aSGreg Clayton 6390f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6400f28986aSGreg Clayton 6410f28986aSGreg Clayton if (!m_opaque_sp.get()) 642796ac80bSJonas Devlieghere m_opaque_sp = std::make_shared<DataExtractor>(buffer_sp, GetByteOrder(), 643796ac80bSJonas Devlieghere GetAddressByteSize()); 6440f28986aSGreg Clayton else 6450f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6460f28986aSGreg Clayton 6470f28986aSGreg Clayton return true; 6480f28986aSGreg Clayton } 649*ae211eceSMichal Gorny 650*ae211eceSMichal Gorny namespace lldb_private { 651*ae211eceSMichal Gorny namespace repro { 652*ae211eceSMichal Gorny 653*ae211eceSMichal Gorny template <> 654*ae211eceSMichal Gorny void RegisterMethods<SBData>(Registry &R) { 655*ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBData, ()); 656*ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBData, (const lldb::SBData &)); 657*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const lldb::SBData &, 658*ae211eceSMichal Gorny SBData, operator=,(const lldb::SBData &)); 659*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, IsValid, ()); 660*ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBData, operator bool, ()); 661*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint8_t, SBData, GetAddressByteSize, ()); 662*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBData, SetAddressByteSize, (uint8_t)); 663*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBData, Clear, ()); 664*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(size_t, SBData, GetByteSize, ()); 665*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::ByteOrder, SBData, GetByteOrder, ()); 666*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBData, SetByteOrder, (lldb::ByteOrder)); 667*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(float, SBData, GetFloat, 668*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 669*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(double, SBData, GetDouble, 670*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 671*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(long double, SBData, GetLongDouble, 672*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 673*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::addr_t, SBData, GetAddress, 674*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 675*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint8_t, SBData, GetUnsignedInt8, 676*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 677*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint16_t, SBData, GetUnsignedInt16, 678*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 679*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBData, GetUnsignedInt32, 680*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 681*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint64_t, SBData, GetUnsignedInt64, 682*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 683*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int8_t, SBData, GetSignedInt8, 684*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 685*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int16_t, SBData, GetSignedInt16, 686*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 687*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int32_t, SBData, GetSignedInt32, 688*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 689*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int64_t, SBData, GetSignedInt64, 690*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 691*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBData, GetString, 692*ae211eceSMichal Gorny (lldb::SBError &, lldb::offset_t)); 693*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, GetDescription, 694*ae211eceSMichal Gorny (lldb::SBStream &, lldb::addr_t)); 695*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, Append, (const lldb::SBData &)); 696*ae211eceSMichal Gorny LLDB_REGISTER_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromCString, 697*ae211eceSMichal Gorny (lldb::ByteOrder, uint32_t, const char *)); 698*ae211eceSMichal Gorny LLDB_REGISTER_STATIC_METHOD( 699*ae211eceSMichal Gorny lldb::SBData, SBData, CreateDataFromUInt64Array, 700*ae211eceSMichal Gorny (lldb::ByteOrder, uint32_t, uint64_t *, size_t)); 701*ae211eceSMichal Gorny LLDB_REGISTER_STATIC_METHOD( 702*ae211eceSMichal Gorny lldb::SBData, SBData, CreateDataFromUInt32Array, 703*ae211eceSMichal Gorny (lldb::ByteOrder, uint32_t, uint32_t *, size_t)); 704*ae211eceSMichal Gorny LLDB_REGISTER_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromSInt64Array, 705*ae211eceSMichal Gorny (lldb::ByteOrder, uint32_t, int64_t *, size_t)); 706*ae211eceSMichal Gorny LLDB_REGISTER_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromSInt32Array, 707*ae211eceSMichal Gorny (lldb::ByteOrder, uint32_t, int32_t *, size_t)); 708*ae211eceSMichal Gorny LLDB_REGISTER_STATIC_METHOD(lldb::SBData, SBData, CreateDataFromDoubleArray, 709*ae211eceSMichal Gorny (lldb::ByteOrder, uint32_t, double *, size_t)); 710*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, SetDataFromCString, (const char *)); 711*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, SetDataFromUInt64Array, 712*ae211eceSMichal Gorny (uint64_t *, size_t)); 713*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, SetDataFromUInt32Array, 714*ae211eceSMichal Gorny (uint32_t *, size_t)); 715*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, SetDataFromSInt64Array, 716*ae211eceSMichal Gorny (int64_t *, size_t)); 717*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, SetDataFromSInt32Array, 718*ae211eceSMichal Gorny (int32_t *, size_t)); 719*ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBData, SetDataFromDoubleArray, 720*ae211eceSMichal Gorny (double *, size_t)); 721*ae211eceSMichal Gorny } 722*ae211eceSMichal Gorny 723*ae211eceSMichal Gorny } 724*ae211eceSMichal Gorny } 725