Initial import of lldb
Change-Id: Ib244e837bee349effa12b2ff6ffffbe3d730e929
This commit is contained in:
78
external/bsd/llvm/dist/lldb/source/Target/ThreadPlanCallUserExpression.cpp
vendored
Normal file
78
external/bsd/llvm/dist/lldb/source/Target/ThreadPlanCallUserExpression.cpp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
//===-- ThreadPlanCallUserExpression.cpp ------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/Target/ThreadPlanCallUserExpression.h"
|
||||
|
||||
// C Includes
|
||||
// C++ Includes
|
||||
// Other libraries and framework includes
|
||||
#include "llvm/Support/MachO.h"
|
||||
// Project includes
|
||||
#include "lldb/lldb-private-log.h"
|
||||
#include "lldb/Breakpoint/Breakpoint.h"
|
||||
#include "lldb/Breakpoint/BreakpointLocation.h"
|
||||
#include "lldb/Core/Address.h"
|
||||
#include "lldb/Core/Log.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Expression/ClangUserExpression.h"
|
||||
#include "lldb/Target/LanguageRuntime.h"
|
||||
#include "lldb/Target/Process.h"
|
||||
#include "lldb/Target/RegisterContext.h"
|
||||
#include "lldb/Target/StopInfo.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
#include "lldb/Target/Thread.h"
|
||||
#include "lldb/Target/ThreadPlanRunToAddress.h"
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// ThreadPlanCallUserExpression: Plan to call a single function
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
ThreadPlanCallUserExpression::ThreadPlanCallUserExpression (Thread &thread,
|
||||
Address &function,
|
||||
llvm::ArrayRef<lldb::addr_t> args,
|
||||
const EvaluateExpressionOptions &options,
|
||||
ClangUserExpression::ClangUserExpressionSP &user_expression_sp) :
|
||||
ThreadPlanCallFunction (thread, function, ClangASTType(), args, options),
|
||||
m_user_expression_sp (user_expression_sp)
|
||||
{
|
||||
// User expressions are generally "User generated" so we should set them up to stop when done.
|
||||
SetIsMasterPlan (true);
|
||||
SetOkayToDiscard(false);
|
||||
}
|
||||
|
||||
ThreadPlanCallUserExpression::~ThreadPlanCallUserExpression ()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ThreadPlanCallUserExpression::GetDescription (Stream *s, lldb::DescriptionLevel level)
|
||||
{
|
||||
ThreadPlanCallFunction::GetDescription (s, level);
|
||||
}
|
||||
|
||||
StopInfoSP
|
||||
ThreadPlanCallUserExpression::GetRealStopInfo()
|
||||
{
|
||||
StopInfoSP stop_info_sp = ThreadPlanCallFunction::GetRealStopInfo();
|
||||
|
||||
if (stop_info_sp)
|
||||
{
|
||||
lldb::addr_t addr = GetStopAddress();
|
||||
DynamicCheckerFunctions *checkers = m_thread.GetProcess()->GetDynamicCheckers();
|
||||
StreamString s;
|
||||
|
||||
if (checkers && checkers->DoCheckersExplainStop(addr, s))
|
||||
stop_info_sp->SetDescription(s.GetData());
|
||||
}
|
||||
|
||||
return stop_info_sp;
|
||||
}
|
||||
Reference in New Issue
Block a user