diff options
author | emaste <emaste@FreeBSD.org> | 2013-08-23 18:06:42 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2013-08-23 18:06:42 +0000 |
commit | 424d4dadd208e2a1e9a43c3d55f47f03ba0c4509 (patch) | |
tree | 05d762b98a499804ce690e6ce04033f1ddf4dee6 /contrib/llvm/tools/lldb/source/Target/ThreadPlanShouldStopHere.cpp | |
parent | cde487f27a84e02a560384f75178fddca68740f6 (diff) | |
parent | dcd15f81789e389c1cb27d264fcdddfd0a6002bd (diff) | |
download | FreeBSD-src-424d4dadd208e2a1e9a43c3d55f47f03ba0c4509.zip FreeBSD-src-424d4dadd208e2a1e9a43c3d55f47f03ba0c4509.tar.gz |
Merge lldb r188801 to contrib/llvm/tools/lldb/
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Target/ThreadPlanShouldStopHere.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Target/ThreadPlanShouldStopHere.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/contrib/llvm/tools/lldb/source/Target/ThreadPlanShouldStopHere.cpp b/contrib/llvm/tools/lldb/source/Target/ThreadPlanShouldStopHere.cpp new file mode 100644 index 0000000..8766234 --- /dev/null +++ b/contrib/llvm/tools/lldb/source/Target/ThreadPlanShouldStopHere.cpp @@ -0,0 +1,74 @@ +//===-- ThreadPlanShouldStopHere.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/RegisterContext.h" +#include "lldb/Target/Thread.h" +#include "lldb/Target/ThreadPlanShouldStopHere.h" +#include "lldb/Core/Log.h" + +using namespace lldb; +using namespace lldb_private; + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes + +//---------------------------------------------------------------------- +// ThreadPlanShouldStopHere constructor +//---------------------------------------------------------------------- +ThreadPlanShouldStopHere::ThreadPlanShouldStopHere(ThreadPlan *owner, ThreadPlanShouldStopHereCallback callback, void *baton) : + m_callback (callback), + m_baton (baton), + m_owner (owner), + m_flags (ThreadPlanShouldStopHere::eNone) +{ +} + +//---------------------------------------------------------------------- +// Destructor +//---------------------------------------------------------------------- +ThreadPlanShouldStopHere::~ThreadPlanShouldStopHere() +{ +} + +void +ThreadPlanShouldStopHere::SetShouldStopHereCallback (ThreadPlanShouldStopHereCallback callback, void *baton) +{ + m_callback = callback; + m_baton = baton; +} + +ThreadPlanSP +ThreadPlanShouldStopHere::InvokeShouldStopHereCallback () +{ + if (m_callback) + { + ThreadPlanSP return_plan_sp(m_callback (m_owner, m_flags, m_baton)); + Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP)); + if (log) + { + lldb::addr_t current_addr = m_owner->GetThread().GetRegisterContext()->GetPC(0); + + if (return_plan_sp) + { + StreamString s; + return_plan_sp->GetDescription (&s, lldb::eDescriptionLevelFull); + log->Printf ("ShouldStopHere callback found a step out plan from 0x%" PRIx64 ": %s.", current_addr, s.GetData()); + } + else + { + log->Printf ("ShouldStopHere callback didn't find a step out plan from: 0x%" PRIx64 ".", current_addr); + } + } + return return_plan_sp; + } + else + return ThreadPlanSP(); +} |