aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectExpression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Commands/CommandObjectExpression.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectExpression.cpp80
1 files changed, 40 insertions, 40 deletions
diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp
index c58f3f5..d0e9ef9 100644
--- a/lldb/source/Commands/CommandObjectExpression.cpp
+++ b/lldb/source/Commands/CommandObjectExpression.cpp
@@ -232,55 +232,55 @@ CommandObjectExpression::EvaluateExpression
CommandReturnObject *result
)
{
- if (!m_exe_ctx.process)
- {
- error_stream.Printf ("Execution context doesn't contain a process\n");
- return false;
- }
-
- const char *prefix = NULL;
-
if (m_exe_ctx.target)
- prefix = m_exe_ctx.target->GetExpressionPrefixContentsAsCString();
-
- lldb::ValueObjectSP result_valobj_sp;
- Process::ExecutionResults execution_results = ClangUserExpression::Evaluate (m_exe_ctx, m_options.unwind_on_error, expr, prefix, result_valobj_sp);
- assert (result_valobj_sp.get());
- if (result_valobj_sp->GetError().Success())
{
- if (m_options.format != eFormatDefault)
- result_valobj_sp->SetFormat (m_options.format);
-
- ValueObject::DumpValueObject (output_stream,
- m_exe_ctx.GetBestExecutionContextScope(),
- result_valobj_sp.get(), // Variable object to dump
- result_valobj_sp->GetName().AsCString(),// Root object name
- 0, // Pointer depth to traverse (zero means stop at pointers)
- 0, // Current depth, this is the top most, so zero...
- UINT32_MAX, // Max depth to go when dumping concrete types, dump everything...
- m_options.show_types, // Show types when dumping?
- false, // Show locations of variables, no since this is a host address which we don't care to see
- m_options.print_object, // Print the objective C object?
- true, // Scope is already checked. Const results are always in scope.
- false); // Don't flatten output
- if (result)
- result->SetStatus (eReturnStatusSuccessFinishResult);
- }
- else
- {
- error_stream.PutCString(result_valobj_sp->GetError().AsCString());
- // If we've been interrupted, display state information.
- if (execution_results == Process::eExecutionInterrupted && !m_options.unwind_on_error)
+ lldb::ValueObjectSP result_valobj_sp;
+
+ lldb::ExecutionResults exe_results;
+ exe_results = m_exe_ctx.target->EvaluateExpression(expr, m_exe_ctx.frame, m_options.unwind_on_error, result_valobj_sp);
+
+ if (exe_results == eExecutionInterrupted && !m_options.unwind_on_error)
{
if (m_exe_ctx.thread)
lldb_private::DisplayThreadInfo (m_interpreter, result->GetOutputStream(), m_exe_ctx.thread, false, true);
else
- {
lldb_private::DisplayThreadsInfo (m_interpreter, &m_exe_ctx, *result, true, true);
+ }
+
+ if (result_valobj_sp)
+ {
+ if (result_valobj_sp->GetError().Success())
+ {
+ if (m_options.format != eFormatDefault)
+ result_valobj_sp->SetFormat (m_options.format);
+
+ ValueObject::DumpValueObject (output_stream,
+ m_exe_ctx.GetBestExecutionContextScope(),
+ result_valobj_sp.get(), // Variable object to dump
+ result_valobj_sp->GetName().GetCString(),// Root object name
+ 0, // Pointer depth to traverse (zero means stop at pointers)
+ 0, // Current depth, this is the top most, so zero...
+ UINT32_MAX, // Max depth to go when dumping concrete types, dump everything...
+ m_options.show_types, // Show types when dumping?
+ false, // Show locations of variables, no since this is a host address which we don't care to see
+ m_options.print_object, // Print the objective C object?
+ true, // Scope is already checked. Const results are always in scope.
+ false); // Don't flatten output
+ if (result)
+ result->SetStatus (eReturnStatusSuccessFinishResult);
+ }
+ else
+ {
+ error_stream.PutCString(result_valobj_sp->GetError().AsCString());
+ if (result)
+ result->SetStatus (eReturnStatusFailed);
}
}
- if (result)
- result->SetStatus (eReturnStatusFailed);
+ }
+ else
+ {
+ error_stream.Printf ("error: invalid execution context for expression\n");
+ return false;
}
return true;