blob: b46d6b4704db5a73b33de17fd22cf3851dbbc82d [file] [log] [blame]
Jim Ingham360f53f2010-11-30 02:22:11 +00001//===-- ThreadPlanCallUserExpression.cpp ------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/Target/ThreadPlanCallUserExpression.h"
11
12// C Includes
13// C++ Includes
14// Other libraries and framework includes
15#include "llvm/Support/MachO.h"
16// Project includes
17#include "lldb/lldb-private-log.h"
18#include "lldb/Breakpoint/Breakpoint.h"
19#include "lldb/Breakpoint/BreakpointLocation.h"
20#include "lldb/Core/Address.h"
21#include "lldb/Core/Log.h"
22#include "lldb/Core/Stream.h"
23#include "lldb/Expression/ClangUserExpression.h"
24#include "lldb/Target/LanguageRuntime.h"
25#include "lldb/Target/Process.h"
26#include "lldb/Target/RegisterContext.h"
27#include "lldb/Target/StopInfo.h"
28#include "lldb/Target/Target.h"
29#include "lldb/Target/Thread.h"
30#include "lldb/Target/ThreadPlanRunToAddress.h"
31
32using namespace lldb;
33using namespace lldb_private;
34
35//----------------------------------------------------------------------
36// ThreadPlanCallUserExpression: Plan to call a single function
37//----------------------------------------------------------------------
38
39ThreadPlanCallUserExpression::ThreadPlanCallUserExpression (Thread &thread,
40 Address &function,
41 lldb::addr_t arg,
42 bool stop_other_threads,
43 bool discard_on_error,
44 lldb::addr_t *this_arg,
Sean Callanan3aa7da52010-12-13 22:46:15 +000045 lldb::addr_t *cmd_arg,
Jim Ingham360f53f2010-11-30 02:22:11 +000046 ClangUserExpression::ClangUserExpressionSP &user_expression_sp) :
Jim Ingham016ef882011-12-22 19:12:40 +000047 ThreadPlanCallFunction (thread, function, ClangASTType(), arg, stop_other_threads, discard_on_error, this_arg, cmd_arg),
Jim Ingham360f53f2010-11-30 02:22:11 +000048 m_user_expression_sp (user_expression_sp)
49{
50}
51
52ThreadPlanCallUserExpression::~ThreadPlanCallUserExpression ()
53{
54}
55
56void
57ThreadPlanCallUserExpression::GetDescription (Stream *s, lldb::DescriptionLevel level)
Jim Inghamba560cc2011-11-01 02:46:54 +000058{
Jim Ingham360f53f2010-11-30 02:22:11 +000059 ThreadPlanCallFunction::GetDescription (s, level);
60}
Jim Inghamba560cc2011-11-01 02:46:54 +000061
62StopInfoSP
63ThreadPlanCallUserExpression::GetRealStopInfo()
64{
65 StopInfoSP stop_info_sp = ThreadPlanCallFunction::GetRealStopInfo();
66 lldb::addr_t addr = GetStopAddress();
Greg Claytonf4124de2012-02-21 00:09:25 +000067 DynamicCheckerFunctions *checkers = m_thread.GetProcess()->GetDynamicCheckers();
Jim Inghamba560cc2011-11-01 02:46:54 +000068 StreamString s;
69
70 if (checkers && checkers->DoCheckersExplainStop(addr, s))
71 stop_info_sp->SetDescription(s.GetData());
72
73 return stop_info_sp;
74}