summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/ThreadPlanCallFunction.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2012-04-13 23:11:52 +0000
committerJim Ingham <jingham@apple.com>2012-04-13 23:11:52 +0000
commit87d0e61839b4d78cd1bb6d34cc9ad399af0c7eaa (patch)
tree784899e037fbfd703f175b046e08321a192eed9e /lldb/source/Target/ThreadPlanCallFunction.cpp
parente39f85c77465cc1eef680afdce7c7cb304b6a268 (diff)
downloadbcm5719-llvm-87d0e61839b4d78cd1bb6d34cc9ad399af0c7eaa.tar.gz
bcm5719-llvm-87d0e61839b4d78cd1bb6d34cc9ad399af0c7eaa.zip
Don't do the work in DoTakedown if the thread plan isn't valid.
Also fixed up some logging. llvm-svn: 154709
Diffstat (limited to 'lldb/source/Target/ThreadPlanCallFunction.cpp')
-rw-r--r--lldb/source/Target/ThreadPlanCallFunction.cpp33
1 files changed, 21 insertions, 12 deletions
diff --git a/lldb/source/Target/ThreadPlanCallFunction.cpp b/lldb/source/Target/ThreadPlanCallFunction.cpp
index 8e1d018e85f..fa89b412b3c 100644
--- a/lldb/source/Target/ThreadPlanCallFunction.cpp
+++ b/lldb/source/Target/ThreadPlanCallFunction.cpp
@@ -57,7 +57,7 @@ ThreadPlanCallFunction::ConstructorSetup (Thread &thread,
TargetSP target_sp (thread.CalculateTarget());
- LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP));
+ LogSP log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_STEP));
SetBreakpoints();
@@ -69,7 +69,7 @@ ThreadPlanCallFunction::ConstructorSetup (Thread &thread,
if (!error.Success())
{
if (log)
- log->Printf ("Trying to put the stack in unreadable memory at: 0x%llx.", m_function_sp);
+ log->Printf ("ThreadPlanCallFunction(%p): Trying to put the stack in unreadable memory at: 0x%llx.", this, m_function_sp);
return false;
}
@@ -78,7 +78,7 @@ ThreadPlanCallFunction::ConstructorSetup (Thread &thread,
if (exe_module == NULL)
{
if (log)
- log->Printf ("Can't execute code without an executable module.");
+ log->Printf ("ThreadPlanCallFunction(%p): Can't execute code without an executable module.", this);
return false;
}
else
@@ -87,16 +87,16 @@ ThreadPlanCallFunction::ConstructorSetup (Thread &thread,
if (!objectFile)
{
if (log)
- log->Printf ("Could not find object file for module \"%s\".",
- exe_module->GetFileSpec().GetFilename().AsCString());
+ log->Printf ("ThreadPlanCallFunction(%p): Could not find object file for module \"%s\".",
+ this, exe_module->GetFileSpec().GetFilename().AsCString());
return false;
}
m_start_addr = objectFile->GetEntryPointAddress();
if (!m_start_addr.IsValid())
{
if (log)
- log->Printf ("Could not find entry point address for executable module \"%s\".",
- exe_module->GetFileSpec().GetFilename().AsCString());
+ log->Printf ("ThreadPlanCallFunction(%p): Could not find entry point address for executable module \"%s\".",
+ this, exe_module->GetFileSpec().GetFilename().AsCString());
return false;
}
}
@@ -110,7 +110,7 @@ ThreadPlanCallFunction::ConstructorSetup (Thread &thread,
if (!thread.CheckpointThreadState (m_stored_thread_state))
{
if (log)
- log->Printf ("Setting up ThreadPlanCallFunction, failed to checkpoint thread state.");
+ log->Printf ("ThreadPlanCallFunction(%p): Setting up ThreadPlanCallFunction, failed to checkpoint thread state.", this);
return false;
}
// Now set the thread state to "no reason" so we don't run with whatever signal was outstanding...
@@ -262,7 +262,16 @@ ThreadPlanCallFunction::ReportRegisterState (const char *message)
void
ThreadPlanCallFunction::DoTakedown ()
{
- LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP));
+ LogSP log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_STEP));
+
+ if (!m_valid)
+ {
+ //Don't call DoTakedown if we were never valid to begin with.
+ if (log)
+ log->Printf ("ThreadPlanCallFunction(%p): Log called on ThreadPlanCallFunction that was never valid.", this);
+ return;
+ }
+
if (!m_takedown_done)
{
ProcessSP process_sp (m_thread.GetProcess());
@@ -274,7 +283,7 @@ ThreadPlanCallFunction::DoTakedown ()
}
if (log)
- log->Printf ("DoTakedown called for thread 0x%4.4llx, m_valid: %d complete: %d.\n", m_thread.GetID(), m_valid, IsPlanComplete());
+ log->Printf ("ThreadPlanCallFunction(%p): DoTakedown called for thread 0x%4.4llx, m_valid: %d complete: %d.\n", this, m_thread.GetID(), m_valid, IsPlanComplete());
m_takedown_done = true;
m_stop_address = m_thread.GetStackFrameAtIndex(0)->GetRegisterContext()->GetPC();
m_real_stop_info_sp = GetPrivateStopReason();
@@ -288,7 +297,7 @@ ThreadPlanCallFunction::DoTakedown ()
else
{
if (log)
- log->Printf ("DoTakedown called as no-op for thread 0x%4.4llx, m_valid: %d complete: %d.\n", m_thread.GetID(), m_valid, IsPlanComplete());
+ log->Printf ("ThreadPlanCallFunction(%p): DoTakedown called as no-op for thread 0x%4.4llx, m_valid: %d complete: %d.\n", this, m_thread.GetID(), m_valid, IsPlanComplete());
}
}
@@ -447,7 +456,7 @@ ThreadPlanCallFunction::MischiefManaged ()
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP));
if (log)
- log->Printf("Completed call function plan.");
+ log->Printf("ThreadPlanCallFunction(%p): Completed call function plan.", this);
ThreadPlan::MischiefManaged ();
return true;
OpenPOWER on IntegriCloud