130fdc8d8SChris Lattner //===-- SBBlock.cpp ---------------------------------------------*- C++ -*-===// 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 28baf5664fSJonas Devlieghere SBBlock::SBBlock() : m_opaque_ptr(NULL) { 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; 44*306809f2SJonas Devlieghere return LLDB_RECORD_RESULT(*this); 45efabb123SGreg Clayton } 46efabb123SGreg Clayton 47b9c1b51eSKate Stone SBBlock::~SBBlock() { m_opaque_ptr = NULL; } 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 56baf5664fSJonas Devlieghere return m_opaque_ptr != NULL; 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) 6395897c6aSGreg Clayton return m_opaque_ptr->GetInlinedFunctionInfo() != NULL; 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) { 74ddaf6a72SGreg Clayton Function *function = m_opaque_ptr->CalculateSymbolContextFunction(); 75ddaf6a72SGreg Clayton LanguageType language; 76ddaf6a72SGreg Clayton if (function) 77ddaf6a72SGreg Clayton language = function->GetLanguage(); 78ddaf6a72SGreg Clayton else 79ddaf6a72SGreg Clayton language = lldb::eLanguageTypeUnknown; 80ddaf6a72SGreg Clayton return inlined_info->GetName(language).AsCString(NULL); 81ddaf6a72SGreg Clayton } 8295897c6aSGreg Clayton } 8395897c6aSGreg Clayton return NULL; 8495897c6aSGreg Clayton } 8595897c6aSGreg Clayton 86b9c1b51eSKate Stone SBFileSpec SBBlock::GetInlinedCallSiteFile() const { 87baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::SBFileSpec, SBBlock, 88baf5664fSJonas Devlieghere GetInlinedCallSiteFile); 89baf5664fSJonas Devlieghere 9095897c6aSGreg Clayton SBFileSpec sb_file; 91b9c1b51eSKate Stone if (m_opaque_ptr) { 92b9c1b51eSKate Stone const InlineFunctionInfo *inlined_info = 93b9c1b51eSKate Stone m_opaque_ptr->GetInlinedFunctionInfo(); 9495897c6aSGreg Clayton if (inlined_info) 9595897c6aSGreg Clayton sb_file.SetFileSpec(inlined_info->GetCallSite().GetFile()); 9695897c6aSGreg Clayton } 97baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_file); 9895897c6aSGreg Clayton } 9995897c6aSGreg Clayton 100b9c1b51eSKate Stone uint32_t SBBlock::GetInlinedCallSiteLine() const { 101baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBBlock, GetInlinedCallSiteLine); 102baf5664fSJonas Devlieghere 103b9c1b51eSKate Stone if (m_opaque_ptr) { 104b9c1b51eSKate Stone const InlineFunctionInfo *inlined_info = 105b9c1b51eSKate Stone m_opaque_ptr->GetInlinedFunctionInfo(); 10695897c6aSGreg Clayton if (inlined_info) 10795897c6aSGreg Clayton return inlined_info->GetCallSite().GetLine(); 10895897c6aSGreg Clayton } 10995897c6aSGreg Clayton return 0; 11095897c6aSGreg Clayton } 11195897c6aSGreg Clayton 112b9c1b51eSKate Stone uint32_t SBBlock::GetInlinedCallSiteColumn() const { 113baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBBlock, GetInlinedCallSiteColumn); 114baf5664fSJonas Devlieghere 115b9c1b51eSKate Stone if (m_opaque_ptr) { 116b9c1b51eSKate Stone const InlineFunctionInfo *inlined_info = 117b9c1b51eSKate Stone m_opaque_ptr->GetInlinedFunctionInfo(); 11895897c6aSGreg Clayton if (inlined_info) 11995897c6aSGreg Clayton return inlined_info->GetCallSite().GetColumn(); 12095897c6aSGreg Clayton } 12195897c6aSGreg Clayton return 0; 12295897c6aSGreg Clayton } 12395897c6aSGreg Clayton 124b9c1b51eSKate Stone void SBBlock::AppendVariables(bool can_create, bool get_parent_variables, 125b9c1b51eSKate Stone lldb_private::VariableList *var_list) { 126b9c1b51eSKate Stone if (IsValid()) { 1271b72fcb7SGreg Clayton bool show_inline = true; 128b9c1b51eSKate Stone m_opaque_ptr->AppendVariables(can_create, get_parent_variables, show_inline, 129b9c1b51eSKate Stone [](Variable *) { return true; }, var_list); 13030fdc8d8SChris Lattner } 13130fdc8d8SChris Lattner } 13230fdc8d8SChris Lattner 133b9c1b51eSKate Stone SBBlock SBBlock::GetParent() { 134baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetParent); 135baf5664fSJonas Devlieghere 13695897c6aSGreg Clayton SBBlock sb_block; 13795897c6aSGreg Clayton if (m_opaque_ptr) 13895897c6aSGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetParent(); 139baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 14095897c6aSGreg Clayton } 14195897c6aSGreg Clayton 142b9c1b51eSKate Stone lldb::SBBlock SBBlock::GetContainingInlinedBlock() { 143baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetContainingInlinedBlock); 144baf5664fSJonas Devlieghere 1458f7180b1SGreg Clayton SBBlock sb_block; 1468f7180b1SGreg Clayton if (m_opaque_ptr) 1478f7180b1SGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetContainingInlinedBlock(); 148baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 1498f7180b1SGreg Clayton } 1508f7180b1SGreg Clayton 151b9c1b51eSKate Stone SBBlock SBBlock::GetSibling() { 152baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetSibling); 153baf5664fSJonas Devlieghere 15495897c6aSGreg Clayton SBBlock sb_block; 15595897c6aSGreg Clayton if (m_opaque_ptr) 15695897c6aSGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetSibling(); 157baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 15895897c6aSGreg Clayton } 15995897c6aSGreg Clayton 160b9c1b51eSKate Stone SBBlock SBBlock::GetFirstChild() { 161baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBBlock, SBBlock, GetFirstChild); 162baf5664fSJonas Devlieghere 16395897c6aSGreg Clayton SBBlock sb_block; 16495897c6aSGreg Clayton if (m_opaque_ptr) 16595897c6aSGreg Clayton sb_block.m_opaque_ptr = m_opaque_ptr->GetFirstChild(); 166baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_block); 16795897c6aSGreg Clayton } 16895897c6aSGreg Clayton 169b9c1b51eSKate Stone lldb_private::Block *SBBlock::GetPtr() { return m_opaque_ptr; } 1704838131bSGreg Clayton 171b9c1b51eSKate Stone void SBBlock::SetPtr(lldb_private::Block *block) { m_opaque_ptr = block; } 17230fdc8d8SChris Lattner 173b9c1b51eSKate Stone bool SBBlock::GetDescription(SBStream &description) { 174baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBBlock, GetDescription, (lldb::SBStream &), 175baf5664fSJonas Devlieghere description); 176baf5664fSJonas Devlieghere 177da7bc7d0SGreg Clayton Stream &strm = description.ref(); 178da7bc7d0SGreg Clayton 179b9c1b51eSKate Stone if (m_opaque_ptr) { 180dde9cff3SCaroline Tice lldb::user_id_t id = m_opaque_ptr->GetID(); 181d01b2953SDaniel Malea strm.Printf("Block: {id: %" PRIu64 "} ", id); 182b9c1b51eSKate Stone if (IsInlined()) { 183da7bc7d0SGreg Clayton strm.Printf(" (inlined, '%s') ", GetInlinedName()); 184dde9cff3SCaroline Tice } 185dde9cff3SCaroline Tice lldb_private::SymbolContext sc; 186dde9cff3SCaroline Tice m_opaque_ptr->CalculateSymbolContext(&sc); 187b9c1b51eSKate Stone if (sc.function) { 188b9c1b51eSKate Stone m_opaque_ptr->DumpAddressRanges( 189b9c1b51eSKate Stone &strm, 190dde9cff3SCaroline Tice sc.function->GetAddressRange().GetBaseAddress().GetFileAddress()); 191dde9cff3SCaroline Tice } 192b9c1b51eSKate Stone } else 193da7bc7d0SGreg Clayton strm.PutCString("No value"); 19430fdc8d8SChris Lattner 195dde9cff3SCaroline Tice return true; 196dde9cff3SCaroline Tice } 1978f7180b1SGreg Clayton 198b9c1b51eSKate Stone uint32_t SBBlock::GetNumRanges() { 199baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBBlock, GetNumRanges); 200baf5664fSJonas Devlieghere 2018f7180b1SGreg Clayton if (m_opaque_ptr) 2028f7180b1SGreg Clayton return m_opaque_ptr->GetNumRanges(); 2038f7180b1SGreg Clayton return 0; 2048f7180b1SGreg Clayton } 2058f7180b1SGreg Clayton 206b9c1b51eSKate Stone lldb::SBAddress SBBlock::GetRangeStartAddress(uint32_t idx) { 207baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBAddress, SBBlock, GetRangeStartAddress, (uint32_t), 208baf5664fSJonas Devlieghere idx); 209baf5664fSJonas Devlieghere 2108f7180b1SGreg Clayton lldb::SBAddress sb_addr; 211b9c1b51eSKate Stone if (m_opaque_ptr) { 2128f7180b1SGreg Clayton AddressRange range; 213b9c1b51eSKate Stone if (m_opaque_ptr->GetRangeAtIndex(idx, range)) { 2148f7180b1SGreg Clayton sb_addr.ref() = range.GetBaseAddress(); 2158f7180b1SGreg Clayton } 2168f7180b1SGreg Clayton } 217baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_addr); 2188f7180b1SGreg Clayton } 2198f7180b1SGreg Clayton 220b9c1b51eSKate Stone lldb::SBAddress SBBlock::GetRangeEndAddress(uint32_t idx) { 221baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBAddress, SBBlock, GetRangeEndAddress, (uint32_t), 222baf5664fSJonas Devlieghere idx); 223baf5664fSJonas Devlieghere 2248f7180b1SGreg Clayton lldb::SBAddress sb_addr; 225b9c1b51eSKate Stone if (m_opaque_ptr) { 2268f7180b1SGreg Clayton AddressRange range; 227b9c1b51eSKate Stone if (m_opaque_ptr->GetRangeAtIndex(idx, range)) { 2288f7180b1SGreg Clayton sb_addr.ref() = range.GetBaseAddress(); 2298f7180b1SGreg Clayton sb_addr.ref().Slide(range.GetByteSize()); 2308f7180b1SGreg Clayton } 2318f7180b1SGreg Clayton } 232baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_addr); 2338f7180b1SGreg Clayton } 2348f7180b1SGreg Clayton 235b9c1b51eSKate Stone uint32_t SBBlock::GetRangeIndexForBlockAddress(lldb::SBAddress block_addr) { 236baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint32_t, SBBlock, GetRangeIndexForBlockAddress, 237baf5664fSJonas Devlieghere (lldb::SBAddress), block_addr); 238baf5664fSJonas Devlieghere 239b9c1b51eSKate Stone if (m_opaque_ptr && block_addr.IsValid()) { 240ea3e7d5cSGreg Clayton return m_opaque_ptr->GetRangeIndexContainingAddress(block_addr.ref()); 2418f7180b1SGreg Clayton } 2428f7180b1SGreg Clayton 2438f7180b1SGreg Clayton return UINT32_MAX; 2448f7180b1SGreg Clayton } 2458f7180b1SGreg Clayton 246b9c1b51eSKate Stone lldb::SBValueList SBBlock::GetVariables(lldb::SBFrame &frame, bool arguments, 247b9c1b51eSKate Stone bool locals, bool statics, 248b9c1b51eSKate Stone lldb::DynamicValueType use_dynamic) { 249baf5664fSJonas Devlieghere LLDB_RECORD_METHOD( 250baf5664fSJonas Devlieghere lldb::SBValueList, SBBlock, GetVariables, 251baf5664fSJonas Devlieghere (lldb::SBFrame &, bool, bool, bool, lldb::DynamicValueType), frame, 252baf5664fSJonas Devlieghere arguments, locals, statics, use_dynamic); 253baf5664fSJonas Devlieghere 2545569e64eSGreg Clayton Block *block = GetPtr(); 2555569e64eSGreg Clayton SBValueList value_list; 256b9c1b51eSKate Stone if (block) { 257b57e4a1bSJason Molenda StackFrameSP frame_sp(frame.GetFrameSP()); 2585569e64eSGreg Clayton VariableListSP variable_list_sp(block->GetBlockVariableList(true)); 2595569e64eSGreg Clayton 260b9c1b51eSKate Stone if (variable_list_sp) { 2615569e64eSGreg Clayton const size_t num_variables = variable_list_sp->GetSize(); 262b9c1b51eSKate Stone if (num_variables) { 263b9c1b51eSKate Stone for (size_t i = 0; i < num_variables; ++i) { 2645569e64eSGreg Clayton VariableSP variable_sp(variable_list_sp->GetVariableAtIndex(i)); 265b9c1b51eSKate Stone if (variable_sp) { 2665569e64eSGreg Clayton bool add_variable = false; 267b9c1b51eSKate Stone switch (variable_sp->GetScope()) { 2685569e64eSGreg Clayton case eValueTypeVariableGlobal: 2695569e64eSGreg Clayton case eValueTypeVariableStatic: 27063a27afaSGreg Clayton case eValueTypeVariableThreadLocal: 2715569e64eSGreg Clayton add_variable = statics; 2725569e64eSGreg Clayton break; 2735569e64eSGreg Clayton 2745569e64eSGreg Clayton case eValueTypeVariableArgument: 2755569e64eSGreg Clayton add_variable = arguments; 2765569e64eSGreg Clayton break; 2775569e64eSGreg Clayton 2785569e64eSGreg Clayton case eValueTypeVariableLocal: 2795569e64eSGreg Clayton add_variable = locals; 2805569e64eSGreg Clayton break; 2815569e64eSGreg Clayton 2825569e64eSGreg Clayton default: 2835569e64eSGreg Clayton break; 2845569e64eSGreg Clayton } 285b9c1b51eSKate Stone if (add_variable) { 286b9c1b51eSKate Stone if (frame_sp) { 287b9c1b51eSKate Stone lldb::ValueObjectSP valobj_sp( 288b9c1b51eSKate Stone frame_sp->GetValueObjectForFrameVariable(variable_sp, 289b9c1b51eSKate Stone eNoDynamicValues)); 290e3e91517SEnrico Granata SBValue value_sb; 291e3e91517SEnrico Granata value_sb.SetSP(valobj_sp, use_dynamic); 292e3e91517SEnrico Granata value_list.Append(value_sb); 293e3e91517SEnrico Granata } 2945569e64eSGreg Clayton } 2955569e64eSGreg Clayton } 2965569e64eSGreg Clayton } 2975569e64eSGreg Clayton } 2985569e64eSGreg Clayton } 2995569e64eSGreg Clayton } 300baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(value_list); 3015569e64eSGreg Clayton } 3025569e64eSGreg Clayton 303b9c1b51eSKate Stone lldb::SBValueList SBBlock::GetVariables(lldb::SBTarget &target, bool arguments, 304b9c1b51eSKate Stone bool locals, bool statics) { 305baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBValueList, SBBlock, GetVariables, 306baf5664fSJonas Devlieghere (lldb::SBTarget &, bool, bool, bool), target, arguments, 307baf5664fSJonas Devlieghere locals, statics); 308baf5664fSJonas Devlieghere 3095569e64eSGreg Clayton Block *block = GetPtr(); 3105569e64eSGreg Clayton 3115569e64eSGreg Clayton SBValueList value_list; 312b9c1b51eSKate Stone if (block) { 3135569e64eSGreg Clayton TargetSP target_sp(target.GetSP()); 3145569e64eSGreg Clayton 3155569e64eSGreg Clayton VariableListSP variable_list_sp(block->GetBlockVariableList(true)); 3165569e64eSGreg Clayton 317b9c1b51eSKate Stone if (variable_list_sp) { 3185569e64eSGreg Clayton const size_t num_variables = variable_list_sp->GetSize(); 319b9c1b51eSKate Stone if (num_variables) { 320b9c1b51eSKate Stone for (size_t i = 0; i < num_variables; ++i) { 3215569e64eSGreg Clayton VariableSP variable_sp(variable_list_sp->GetVariableAtIndex(i)); 322b9c1b51eSKate Stone if (variable_sp) { 3235569e64eSGreg Clayton bool add_variable = false; 324b9c1b51eSKate Stone switch (variable_sp->GetScope()) { 3255569e64eSGreg Clayton case eValueTypeVariableGlobal: 3265569e64eSGreg Clayton case eValueTypeVariableStatic: 32763a27afaSGreg Clayton case eValueTypeVariableThreadLocal: 3285569e64eSGreg Clayton add_variable = statics; 3295569e64eSGreg Clayton break; 3305569e64eSGreg Clayton 3315569e64eSGreg Clayton case eValueTypeVariableArgument: 3325569e64eSGreg Clayton add_variable = arguments; 3335569e64eSGreg Clayton break; 3345569e64eSGreg Clayton 3355569e64eSGreg Clayton case eValueTypeVariableLocal: 3365569e64eSGreg Clayton add_variable = locals; 3375569e64eSGreg Clayton break; 3385569e64eSGreg Clayton 3395569e64eSGreg Clayton default: 3405569e64eSGreg Clayton break; 3415569e64eSGreg Clayton } 342b9c1b51eSKate Stone if (add_variable) { 3435569e64eSGreg Clayton if (target_sp) 344b9c1b51eSKate Stone value_list.Append( 345b9c1b51eSKate Stone ValueObjectVariable::Create(target_sp.get(), variable_sp)); 3465569e64eSGreg Clayton } 3475569e64eSGreg Clayton } 3485569e64eSGreg Clayton } 3495569e64eSGreg Clayton } 3505569e64eSGreg Clayton } 3515569e64eSGreg Clayton } 352baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(value_list); 3535569e64eSGreg Clayton } 354ae211eceSMichal Gorny 355ae211eceSMichal Gorny namespace lldb_private { 356ae211eceSMichal Gorny namespace repro { 357ae211eceSMichal Gorny 358ae211eceSMichal Gorny template <> 359ae211eceSMichal Gorny void RegisterMethods<SBBlock>(Registry &R) { 360ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBBlock, ()); 361ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBBlock, (const lldb::SBBlock &)); 362ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const lldb::SBBlock &, 363ae211eceSMichal Gorny SBBlock, operator=,(const lldb::SBBlock &)); 364ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBBlock, IsValid, ()); 365ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBBlock, operator bool, ()); 366ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBBlock, IsInlined, ()); 367ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(const char *, SBBlock, GetInlinedName, ()); 368ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(lldb::SBFileSpec, SBBlock, 369ae211eceSMichal Gorny GetInlinedCallSiteFile, ()); 370ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(uint32_t, SBBlock, GetInlinedCallSiteLine, ()); 371ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(uint32_t, SBBlock, GetInlinedCallSiteColumn, ()); 372ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetParent, ()); 373ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetContainingInlinedBlock, ()); 374ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetSibling, ()); 375ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBBlock, SBBlock, GetFirstChild, ()); 376ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBBlock, GetDescription, (lldb::SBStream &)); 377ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBBlock, GetNumRanges, ()); 378ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBAddress, SBBlock, GetRangeStartAddress, 379ae211eceSMichal Gorny (uint32_t)); 380ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBAddress, SBBlock, GetRangeEndAddress, 381ae211eceSMichal Gorny (uint32_t)); 382ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBBlock, GetRangeIndexForBlockAddress, 383ae211eceSMichal Gorny (lldb::SBAddress)); 384ae211eceSMichal Gorny LLDB_REGISTER_METHOD( 385ae211eceSMichal Gorny lldb::SBValueList, SBBlock, GetVariables, 386ae211eceSMichal Gorny (lldb::SBFrame &, bool, bool, bool, lldb::DynamicValueType)); 387ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBValueList, SBBlock, GetVariables, 388ae211eceSMichal Gorny (lldb::SBTarget &, bool, bool, bool)); 389ae211eceSMichal Gorny } 390ae211eceSMichal Gorny 391ae211eceSMichal Gorny } 392ae211eceSMichal Gorny } 393