diff options
author | emaste <emaste@FreeBSD.org> | 2014-03-19 13:15:16 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2014-03-19 13:15:16 +0000 |
commit | 0c694994982b90cdc0b0492cd1b0e775bbe3d40b (patch) | |
tree | 40230f5f77356f5080b685fd6c5968ede21aaed5 /contrib/llvm | |
parent | a7c13fdad58a5b442000f2a0935672c5cd519d47 (diff) | |
download | FreeBSD-src-0c694994982b90cdc0b0492cd1b0e775bbe3d40b.zip FreeBSD-src-0c694994982b90cdc0b0492cd1b0e775bbe3d40b.tar.gz |
MFC r258098: Merge upstream LLDB r194487:
Log failure to restore thread state in ThreadPlanCallFunction::DoTakedown
In order to help track down llvm.org/pr17226.
Sponsored by: DARPA, AFRL
Diffstat (limited to 'contrib/llvm')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Target/Thread.cpp | 3 | ||||
-rw-r--r-- | contrib/llvm/tools/lldb/source/Target/ThreadPlanCallFunction.cpp | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/contrib/llvm/tools/lldb/source/Target/Thread.cpp b/contrib/llvm/tools/lldb/source/Target/Thread.cpp index 98c2601..de33145 100644 --- a/contrib/llvm/tools/lldb/source/Target/Thread.cpp +++ b/contrib/llvm/tools/lldb/source/Target/Thread.cpp @@ -511,8 +511,7 @@ Thread::CheckpointThreadState (ThreadStateCheckpoint &saved_state) bool Thread::RestoreRegisterStateFromCheckpoint (ThreadStateCheckpoint &saved_state) { - RestoreSaveFrameZero(saved_state.register_backup); - return true; + return RestoreSaveFrameZero(saved_state.register_backup); } bool diff --git a/contrib/llvm/tools/lldb/source/Target/ThreadPlanCallFunction.cpp b/contrib/llvm/tools/lldb/source/Target/ThreadPlanCallFunction.cpp index c9baaaf..45ff3b4 100644 --- a/contrib/llvm/tools/lldb/source/Target/ThreadPlanCallFunction.cpp +++ b/contrib/llvm/tools/lldb/source/Target/ThreadPlanCallFunction.cpp @@ -299,7 +299,11 @@ ThreadPlanCallFunction::DoTakedown (bool success) m_takedown_done = true; m_stop_address = m_thread.GetStackFrameAtIndex(0)->GetRegisterContext()->GetPC(); m_real_stop_info_sp = GetPrivateStopInfo (); - m_thread.RestoreRegisterStateFromCheckpoint(m_stored_thread_state); + if (!m_thread.RestoreRegisterStateFromCheckpoint(m_stored_thread_state)) + { + if (log) + log->Printf("ThreadPlanCallFunction(%p): DoTakedown failed to restore register state", this); + } SetPlanComplete(success); ClearBreakpoints(); if (log && log->GetVerbose()) |