summaryrefslogtreecommitdiffstats
path: root/lldb/source/Expression/ClangExpressionDeclMap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Expression/ClangExpressionDeclMap.cpp')
-rw-r--r--lldb/source/Expression/ClangExpressionDeclMap.cpp30
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
OpenPOWER on IntegriCloud