180814287SRaphael Isemann //===-- SBBlock.cpp -------------------------------------------------------===// 230fdc8d8SChris Lattner // 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 630fdc8d8SChris Lattner // 730fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 830fdc8d8SChris Lattner 930fdc8d8SChris Lattner #include "lldb/API/SBBlock.h" 10baf5664fSJonas Devlieghere #include "SBReproducerPrivate.h" 118f7180b1SGreg Clayton #include "lldb/API/SBAddress.h" 1295897c6aSGreg Clayton #include "lldb/API/SBFileSpec.h" 135569e64eSGreg Clayton #include "lldb/API/SBFrame.h" 14dde9cff3SCaroline Tice #include "lldb/API/SBStream.h" 155569e64eSGreg Clayton #include "lldb/API/SBValue.h" 168f7180b1SGreg Clayton #include "lldb/Core/AddressRange.h" 175569e64eSGreg Clayton #include "lldb/Core/ValueObjectVariable.h" 1830fdc8d8SChris Lattner #include "lldb/Symbol/Block.h" 1995897c6aSGreg Clayton #include "lldb/Symbol/Function.h" 20dde9cff3SCaroline Tice #include "lldb/Symbol/SymbolContext.h" 215569e64eSGreg Clayton #include "lldb/Symbol/VariableList.h" 22b57e4a1bSJason Molenda #include "lldb/Target/StackFrame.h" 235569e64eSGreg Clayton #include "lldb/Target/Target.h" 2430fdc8d8SChris Lattner 2530fdc8d8SChris Lattner using namespace lldb; 2695897c6aSGreg Clayton using namespace lldb_private; 2730fdc8d8SChris Lattner 28248a1305SKonrad Kleine SBBlock::SBBlock() : m_opaque_ptr(nullptr) { 29baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBBlock); 30baf5664fSJonas Devlieghere } 3130fdc8d8SChris Lattner 32b9c1b51eSKate Stone SBBlock::SBBlock(lldb_private::Block *lldb_object_ptr) 33b9c1b51eSKate Stone : m_opaque_ptr(lldb_object_ptr) {} 3430fdc8d8SChris Lattner 35baf5664fSJonas Devlieghere SBBlock::SBBlock(const SBBlock &rhs) : m_opaque_ptr(rhs.m_opaque_ptr) { 36baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBBlock, (const lldb::SBBlock &), rhs); 37baf5664fSJonas Devlieghere } 3830fdc8d8SChris Lattner 39b9c1b51eSKate Stone const SBBlock &SBBlock::operator=(const SBBlock &rhs) { 40baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(const lldb::SBBlock &, 41baf5664fSJonas Devlieghere SBBlock, operator=,(const lldb::SBBlock &), rhs); 42baf5664fSJonas Devlieghere 43efabb123SGreg Clayton m_opaque_ptr = rhs.m_opaque_ptr; 44306809f2SJonas Devlieghere return LLDB_RECORD_RESULT(*this); 45efabb123SGreg Clayton } 46efabb123SGreg Clayton 47248a1305SKonrad Kleine SBBlock::~SBBlock() { m_opaque_ptr = nullptr; } 4830fdc8d8SChris Lattner 49baf5664fSJonas Devlieghere bool SBBlock::IsValid() const { 50baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBBlock, IsValid); 517f5237bcSPavel Labath return this->operator bool(); 527f5237bcSPavel Labath } 537f5237bcSPavel Labath SBBlock::operator bool() const { 547f5237bcSPavel Labath LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBBlock, operator bool); 55baf5664fSJonas Devlieghere 56248a1305SKonrad Kleine return m_opaque_ptr != nullptr; 57baf5664fSJonas Devlieghere } 5830fdc8d8SChris Lattner 59b9c1b51eSKate Stone bool SBBlock::IsInlined() const { 60baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBBlock, IsInlined); 61baf5664fSJonas Devlieghere 6295897c6aSGreg Clayton if (m_opaque_ptr) 63248a1305SKonrad Kleine return m_opaque_ptr->GetInlinedFunctionInfo() != nullptr; 6495897c6aSGreg Clayton return false; 6595897c6aSGreg Clayton } 6695897c6aSGreg Clayton 67b9c1b51eSKate Stone const char *SBBlock::GetInlinedName() const { 68baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(const char *, SBBlock, GetInlinedName); 69baf5664fSJonas Devlieghere 70b9c1b51eSKate Stone if (m_opaque_ptr) { 71b9c1b51eSKate Stone const InlineFunctionInfo *inlined_info = 72b9c1b51eSKate Stone m_opaque_ptr->GetInlinedFunctionInfo(); 73b9c1b51eSKate Stone if (inlined_info) { 74*22b04487SAlex Langford return inlined_info->GetName().AsCString(nullptr); 75ddaf6a72SGreg Clayton } 7695897c6aSGreg Clayton } 77248a1305SKonrad Kleine return nullptr; 7895897c6aSGreg Clayton } 7995897c6aSGreg Clayton 80b9c1b51eSKate Stone SBFileSpec SBBlock::GetInlinedCallSiteFile() const { 81baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::SBFileSpec, SBBlock, 82baf5664fSJonas Devlieghere GetInlinedCallSiteFile); 83baf5664fSJonas Devlieghere 8495897c6aSGreg Clayton SBFileSpec sb_file; 85b9c1b51eSKate Stone if (m_opaque_ptr) { 86b9c1b51eSKate Stone const InlineFunctionInfo *inlined_info = 87b9c1b51eSKate Stone m_opaque_ptr->GetInlinedFunctionInfo(); 8895897c6aSGreg Clayton if (inlined_info) 8995897c6aSGreg Clayton sb_file.SetFileSpec(inlined_info->GetCallSite().GetFile()); 9095897c6aSGreg Clayton } 91baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_file); 9295897c6aSGreg Clayton } 9395897c6aSGreg Clayton 94b9c1b51eSKate Stone uint32_t SBBlock::GetInlinedCallSiteLine() const { 95baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBBlock, GetInlinedCallSiteLine); 96baf5664fSJonas Devlieghere 97b9c1b51eSKate Stone if (m_opaque_ptr) { 98b9c1b51eSKate Stone const InlineFunctionInfo *inlined_info = 99b9c1b51eSKate Stone m_opaque_ptr->GetInlinedFunctionInfo(); 10095897c6aSGreg Clayton if (inlined_info) 10195897c6aSGreg Clayton return inlined_info->GetCallSite().GetLine(); 10295897c6aSGreg Clayton } 10395897c6aSGreg Clayton return 0; 10495897c6aSGreg Clayton } 10595897c6aSGreg Clayton 106b9c1b51eSKate Stone uint32_t SBBlock::GetInlinedCallSiteColumn() const { 107baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBBlock, GetInlinedCallSiteColumn); 108baf5664fSJonas Devlieghere 109b9c1b51eSKate Stone if (m_opaque_ptr) { 110b9c1b51eSKate Stone const InlineFunctionInfo *inlined_info = 111b9c1b51eSKate Stone m_opaque_ptr->GetInlinedFunctionInfo(); 11295897c6aSGreg Clayton if (inlined_info) 11395897c6aSGreg Clayton return inlined_info->GetCallSite().GetColumn(); 11495897c6aSGreg Clayton } 11595897c6aSGreg Clayton return 0; 11695897c6aSGreg Clayton } 11795897c6aSGreg Clayton 118b9c1b51eSKate Stone void SBBlock::AppendVariables(bool can_create, bool get_parent_variables, 119b9c1b51eSKate Stone lldb_private::VariableList *var_list) { 120b9c1b51eSKate Stone if (IsValid()) { 1211b72fcb7SGreg Clayton bool show_inline = true; 122b9c1b51eSKate Stone m_opaque_ptr->AppendVariables(can_create, get_parent_variables, show_inline, 123b9c1b51eSKate Stone [](Variable *) { return true; }, var_list); 12430fdc8d8SChris Lattner } 12530fdc8d8SChris Lattner } 12630fdc8d8SChris Lattner 127b9c1b51eSKate Stone SBBlock SBBlock::GetParent() { 128baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetParent); 129baf5664fSJonas Devlieghere 13095897c6aSGreg Clayton SBBlock sb_block; 13195897c6aSGreg Clayton if (m_opaque_ptr) 13295897c6aSGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetParent(); 133baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 13495897c6aSGreg Clayton } 13595897c6aSGreg Clayton 136b9c1b51eSKate Stone lldb::SBBlock SBBlock::GetContainingInlinedBlock() { 137baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetContainingInlinedBlock); 138baf5664fSJonas Devlieghere 1398f7180b1SGreg Clayton SBBlock sb_block; 1408f7180b1SGreg Clayton if (m_opaque_ptr) 1418f7180b1SGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetContainingInlinedBlock(); 142baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 1438f7180b1SGreg Clayton } 1448f7180b1SGreg Clayton 145b9c1b51eSKate Stone SBBlock SBBlock::GetSibling() { 146baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetSibling); 147baf5664fSJonas Devlieghere 14895897c6aSGreg Clayton SBBlock sb_block; 14995897c6aSGreg Clayton if (m_opaque_ptr) 15095897c6aSGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetSibling(); 151baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 15295897c6aSGreg Clayton } 15395897c6aSGreg Clayton 154b9c1b51eSKate Stone SBBlock SBBlock::GetFirstChild() { 155baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetFirstChild); 156baf5664fSJonas Devlieghere 15795897c6aSGreg Clayton SBBlock sb_block; 15895897c6aSGreg Clayton if (m_opaque_ptr) 15995897c6aSGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetFirstChild(); 160baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 16195897c6aSGreg Clayton } 16295897c6aSGreg Clayton 163b9c1b51eSKate Stone lldb_private::Block *SBBlock::GetPtr() { return m_opaque_ptr; } 1644838131bSGreg Clayton 165b9c1b51eSKate Stone void SBBlock::SetPtr(lldb_private::Block *block) { m_opaque_ptr = block; } 16630fdc8d8SChris Lattner 167b9c1b51eSKate Stone bool SBBlock::GetDescription(SBStream &description) { 168baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBBlock, GetDescription, (lldb::SBStream &), 169baf5664fSJonas Devlieghere description); 170baf5664fSJonas Devlieghere 171da7bc7d0SGreg Clayton Stream &strm = description.ref(); 172da7bc7d0SGreg Clayton 173b9c1b51eSKate Stone if (m_opaque_ptr) { 174dde9cff3SCaroline Tice lldb::user_id_t id = m_opaque_ptr->GetID(); 175d01b2953SDaniel Malea strm.Printf("Block: {id: %" PRIu64 "} ", id); 176b9c1b51eSKate Stone if (IsInlined()) { 177da7bc7d0SGreg Clayton strm.Printf(" (inlined, '%s') ", GetInlinedName()); 178dde9cff3SCaroline Tice } 179dde9cff3SCaroline Tice lldb_private::SymbolContext sc; 180dde9cff3SCaroline Tice m_opaque_ptr->CalculateSymbolContext(&sc); 181b9c1b51eSKate Stone if (sc.function) { 182b9c1b51eSKate Stone m_opaque_ptr->DumpAddressRanges( 183b9c1b51eSKate Stone &strm, 184dde9cff3SCaroline Tice sc.function->GetAddressRange().GetBaseAddress().GetFileAddress()); 185dde9cff3SCaroline Tice } 186b9c1b51eSKate Stone } else 187da7bc7d0SGreg Clayton strm.PutCString("No value"); 18830fdc8d8SChris Lattner 189dde9cff3SCaroline Tice return true; 190dde9cff3SCaroline Tice } 1918f7180b1SGreg Clayton 192b9c1b51eSKate Stone uint32_t SBBlock::GetNumRanges() { 193baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBBlock, GetNumRanges); 194baf5664fSJonas Devlieghere 1958f7180b1SGreg Clayton if (m_opaque_ptr) 1968f7180b1SGreg Clayton return m_opaque_ptr->GetNumRanges(); 1978f7180b1SGreg Clayton return 0; 1988f7180b1SGreg Clayton } 1998f7180b1SGreg Clayton 200b9c1b51eSKate Stone lldb::SBAddress SBBlock::GetRangeStartAddress(uint32_t idx) { 201baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBAddress, SBBlock, GetRangeStartAddress, (uint32_t), 202baf5664fSJonas Devlieghere idx); 203baf5664fSJonas Devlieghere 2048f7180b1SGreg Clayton lldb::SBAddress sb_addr; 205b9c1b51eSKate Stone if (m_opaque_ptr) { 2068f7180b1SGreg Clayton AddressRange range; 207b9c1b51eSKate Stone if (m_opaque_ptr->GetRangeAtIndex(idx, range)) { 2088f7180b1SGreg Clayton sb_addr.ref() = range.GetBaseAddress(); 2098f7180b1SGreg Clayton } 2108f7180b1SGreg Clayton } 211baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_addr); 2128f7180b1SGreg Clayton } 2138f7180b1SGreg Clayton 214b9c1b51eSKate Stone lldb::SBAddress SBBlock::GetRangeEndAddress(uint32_t idx) { 215baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBAddress, SBBlock, GetRangeEndAddress, (uint32_t), 216baf5664fSJonas Devlieghere idx); 217baf5664fSJonas Devlieghere 2188f7180b1SGreg Clayton lldb::SBAddress sb_addr; 219b9c1b51eSKate Stone if (m_opaque_ptr) { 2208f7180b1SGreg Clayton AddressRange range; 221b9c1b51eSKate Stone if (m_opaque_ptr->GetRangeAtIndex(idx, range)) { 2228f7180b1SGreg Clayton sb_addr.ref() = range.GetBaseAddress(); 2238f7180b1SGreg Clayton sb_addr.ref().Slide(range.GetByteSize()); 2248f7180b1SGreg Clayton } 2258f7180b1SGreg Clayton } 226baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_addr); 2278f7180b1SGreg Clayton } 2288f7180b1SGreg Clayton 229b9c1b51eSKate Stone uint32_t SBBlock::GetRangeIndexForBlockAddress(lldb::SBAddress block_addr) { 230baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint32_t, SBBlock, GetRangeIndexForBlockAddress, 231baf5664fSJonas Devlieghere (lldb::SBAddress), block_addr); 232baf5664fSJonas Devlieghere 233b9c1b51eSKate Stone if (m_opaque_ptr && block_addr.IsValid()) { 234ea3e7d5cSGreg Clayton return m_opaque_ptr->GetRangeIndexContainingAddress(block_addr.ref()); 2358f7180b1SGreg Clayton } 2368f7180b1SGreg Clayton 2378f7180b1SGreg Clayton return UINT32_MAX; 2388f7180b1SGreg Clayton } 2398f7180b1SGreg Clayton 240b9c1b51eSKate Stone lldb::SBValueList SBBlock::GetVariables(lldb::SBFrame &frame, bool arguments, 241b9c1b51eSKate Stone bool locals, bool statics, 242b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 243baf5664fSJonas Devlieghere LLDB_RECORD_METHOD( 244baf5664fSJonas Devlieghere lldb::SBValueList, SBBlock, GetVariables, 245baf5664fSJonas Devlieghere (lldb::SBFrame &, bool, bool, bool, lldb::DynamicValueType), frame, 246baf5664fSJonas Devlieghere arguments, locals, statics, use_dynamic); 247baf5664fSJonas Devlieghere 2485569e64eSGreg Clayton Block *block = GetPtr(); 2495569e64eSGreg Clayton SBValueList value_list; 250b9c1b51eSKate Stone if (block) { 251b57e4a1bSJason Molenda StackFrameSP frame_sp(frame.GetFrameSP()); 2525569e64eSGreg Clayton VariableListSP variable_list_sp(block->GetBlockVariableList(true)); 2535569e64eSGreg Clayton 254b9c1b51eSKate Stone if (variable_list_sp) { 2555569e64eSGreg Clayton const size_t num_variables = variable_list_sp->GetSize(); 256b9c1b51eSKate Stone if (num_variables) { 257b9c1b51eSKate Stone for (size_t i = 0; i < num_variables; ++i) { 2585569e64eSGreg Clayton VariableSP variable_sp(variable_list_sp->GetVariableAtIndex(i)); 259b9c1b51eSKate Stone if (variable_sp) { 2605569e64eSGreg Clayton bool add_variable = false; 261b9c1b51eSKate Stone switch (variable_sp->GetScope()) { 2625569e64eSGreg Clayton case eValueTypeVariableGlobal: 2635569e64eSGreg Clayton case eValueTypeVariableStatic: 26463a27afaSGreg Clayton case eValueTypeVariableThreadLocal: 2655569e64eSGreg Clayton add_variable = statics; 2665569e64eSGreg Clayton break; 2675569e64eSGreg Clayton 2685569e64eSGreg Clayton case eValueTypeVariableArgument: 2695569e64eSGreg Clayton add_variable = arguments; 2705569e64eSGreg Clayton break; 2715569e64eSGreg Clayton 2725569e64eSGreg Clayton case eValueTypeVariableLocal: 2735569e64eSGreg Clayton add_variable = locals; 2745569e64eSGreg Clayton break; 2755569e64eSGreg Clayton 2765569e64eSGreg Clayton default: 2775569e64eSGreg Clayton break; 2785569e64eSGreg Clayton } 279b9c1b51eSKate Stone if (add_variable) { 280b9c1b51eSKate Stone if (frame_sp) { 281b9c1b51eSKate Stone lldb::ValueObjectSP valobj_sp( 282b9c1b51eSKate Stone frame_sp->GetValueObjectForFrameVariable(variable_sp, 283b9c1b51eSKate Stone eNoDynamicValues)); 284e3e91517SEnrico Granata SBValue value_sb; 285e3e91517SEnrico Granata value_sb.SetSP(valobj_sp, use_dynamic); 286e3e91517SEnrico Granata value_list.Append(value_sb); 287e3e91517SEnrico Granata } 2885569e64eSGreg Clayton } 2895569e64eSGreg Clayton } 2905569e64eSGreg Clayton } 2915569e64eSGreg Clayton } 2925569e64eSGreg Clayton } 2935569e64eSGreg Clayton } 294baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(value_list); 2955569e64eSGreg Clayton } 2965569e64eSGreg Clayton 297b9c1b51eSKate Stone lldb::SBValueList SBBlock::GetVariables(lldb::SBTarget &target, bool arguments, 298b9c1b51eSKate Stone bool locals, bool statics) { 299baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBValueList, SBBlock, GetVariables, 300baf5664fSJonas Devlieghere (lldb::SBTarget &, bool, bool, bool), target, arguments, 301baf5664fSJonas Devlieghere locals, statics); 302baf5664fSJonas Devlieghere 3035569e64eSGreg Clayton Block *block = GetPtr(); 3045569e64eSGreg Clayton 3055569e64eSGreg Clayton SBValueList value_list; 306b9c1b51eSKate Stone if (block) { 3075569e64eSGreg Clayton TargetSP target_sp(target.GetSP()); 3085569e64eSGreg Clayton 3095569e64eSGreg Clayton VariableListSP variable_list_sp(block->GetBlockVariableList(true)); 3105569e64eSGreg Clayton 311b9c1b51eSKate Stone if (variable_list_sp) { 3125569e64eSGreg Clayton const size_t num_variables = variable_list_sp->GetSize(); 313b9c1b51eSKate Stone if (num_variables) { 314b9c1b51eSKate Stone for (size_t i = 0; i < num_variables; ++i) { 3155569e64eSGreg Clayton VariableSP variable_sp(variable_list_sp->GetVariableAtIndex(i)); 316b9c1b51eSKate Stone if (variable_sp) { 3175569e64eSGreg Clayton bool add_variable = false; 318b9c1b51eSKate Stone switch (variable_sp->GetScope()) { 3195569e64eSGreg Clayton case eValueTypeVariableGlobal: 3205569e64eSGreg Clayton case eValueTypeVariableStatic: 32163a27afaSGreg Clayton case eValueTypeVariableThreadLocal: 3225569e64eSGreg Clayton add_variable = statics; 3235569e64eSGreg Clayton break; 3245569e64eSGreg Clayton 3255569e64eSGreg Clayton case eValueTypeVariableArgument: 3265569e64eSGreg Clayton add_variable = arguments; 3275569e64eSGreg Clayton break; 3285569e64eSGreg Clayton 3295569e64eSGreg Clayton case eValueTypeVariableLocal: 3305569e64eSGreg Clayton add_variable = locals; 3315569e64eSGreg Clayton break; 3325569e64eSGreg Clayton 3335569e64eSGreg Clayton default: 3345569e64eSGreg Clayton break; 3355569e64eSGreg Clayton } 336b9c1b51eSKate Stone if (add_variable) { 3375569e64eSGreg Clayton if (target_sp) 338b9c1b51eSKate Stone value_list.Append( 339b9c1b51eSKate Stone ValueObjectVariable::Create(target_sp.get(), variable_sp)); 3405569e64eSGreg Clayton } 3415569e64eSGreg Clayton } 3425569e64eSGreg Clayton } 3435569e64eSGreg Clayton } 3445569e64eSGreg Clayton } 3455569e64eSGreg Clayton } 346baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(value_list); 3475569e64eSGreg Clayton } 348ae211eceSMichal Gorny 349ae211eceSMichal Gorny namespace lldb_private { 350ae211eceSMichal Gorny namespace repro { 351ae211eceSMichal Gorny 352ae211eceSMichal Gorny template <> 353ae211eceSMichal Gorny void RegisterMethods<SBBlock>(Registry &R) { 354ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBBlock, ()); 355ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBBlock, (const lldb::SBBlock &)); 356ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const lldb::SBBlock &, 357ae211eceSMichal Gorny SBBlock, operator=,(const lldb::SBBlock &)); 358ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBBlock, IsValid, ()); 359ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBBlock, operator bool, ()); 360ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBBlock, IsInlined, ()); 361ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(const char *, SBBlock, GetInlinedName, ()); 362ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(lldb::SBFileSpec, SBBlock, 363ae211eceSMichal Gorny GetInlinedCallSiteFile, ()); 364ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(uint32_t, SBBlock, GetInlinedCallSiteLine, ()); 365ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(uint32_t, SBBlock, GetInlinedCallSiteColumn, ()); 366ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetParent, ()); 367ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetContainingInlinedBlock, ()); 368ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetSibling, ()); 369ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetFirstChild, ()); 370ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBBlock, GetDescription, (lldb::SBStream &)); 371ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBBlock, GetNumRanges, ()); 372ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBAddress, SBBlock, GetRangeStartAddress, 373ae211eceSMichal Gorny (uint32_t)); 374ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBAddress, SBBlock, GetRangeEndAddress, 375ae211eceSMichal Gorny (uint32_t)); 376ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBBlock, GetRangeIndexForBlockAddress, 377ae211eceSMichal Gorny (lldb::SBAddress)); 378ae211eceSMichal Gorny LLDB_REGISTER_METHOD( 379ae211eceSMichal Gorny lldb::SBValueList, SBBlock, GetVariables, 380ae211eceSMichal Gorny (lldb::SBFrame &, bool, bool, bool, lldb::DynamicValueType)); 381ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBValueList, SBBlock, GetVariables, 382ae211eceSMichal Gorny (lldb::SBTarget &, bool, bool, bool)); 383ae211eceSMichal Gorny } 384ae211eceSMichal Gorny 385ae211eceSMichal Gorny } 386ae211eceSMichal Gorny } 387