diff options
Diffstat (limited to 'lldb/source/Expression/ClangExpressionDeclMap.cpp')
-rw-r--r-- | lldb/source/Expression/ClangExpressionDeclMap.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lldb/source/Expression/ClangExpressionDeclMap.cpp b/lldb/source/Expression/ClangExpressionDeclMap.cpp index 08468faf1fd..f9962421c15 100644 --- a/lldb/source/Expression/ClangExpressionDeclMap.cpp +++ b/lldb/source/Expression/ClangExpressionDeclMap.cpp @@ -452,6 +452,36 @@ ClangExpressionDeclMap::GetFunctionAddress return true; } +bool +ClangExpressionDeclMap::GetSymbolAddress +( + const ConstString &name, + uint64_t &ptr +) +{ + assert (m_parser_vars.get()); + + // Back out in all cases where we're not fully initialized + if (m_parser_vars->m_exe_ctx->target == NULL) + return false; + + SymbolContextList sc_list; + + m_parser_vars->m_exe_ctx->target->GetImages().FindSymbolsWithNameAndType(name, lldb::eSymbolTypeAny, sc_list); + + if (!sc_list.GetSize()) + return false; + + SymbolContext sym_ctx; + sc_list.GetContextAtIndex(0, sym_ctx); + + const Address *sym_address = &sym_ctx.symbol->GetAddressRangeRef().GetBaseAddress(); + + ptr = sym_address->GetLoadAddress (m_parser_vars->m_exe_ctx->target); + + return true; +} + // Interface for CommandObjectExpression bool |