forked from OSchip/llvm-project
Adding eStopReasonThreadExiting and fixing the handling of this state on Linux.
llvm-svn: 170800
This commit is contained in:
parent
287e7d275c
commit
f85defaea5
|
@ -177,7 +177,8 @@ namespace lldb {
|
|||
eStopReasonSignal,
|
||||
eStopReasonException,
|
||||
eStopReasonExec, // Program was re-exec'ed
|
||||
eStopReasonPlanComplete
|
||||
eStopReasonPlanComplete,
|
||||
eStopReasonThreadExiting
|
||||
} StopReason;
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
|
|
@ -151,6 +151,7 @@ SBThread::GetStopReasonDataCount ()
|
|||
case eStopReasonTrace:
|
||||
case eStopReasonExec:
|
||||
case eStopReasonPlanComplete:
|
||||
case eStopReasonThreadExiting:
|
||||
// There is no data for these stop reasons.
|
||||
return 0;
|
||||
|
||||
|
@ -209,6 +210,7 @@ SBThread::GetStopReasonDataAtIndex (uint32_t idx)
|
|||
case eStopReasonTrace:
|
||||
case eStopReasonExec:
|
||||
case eStopReasonPlanComplete:
|
||||
case eStopReasonThreadExiting:
|
||||
// There is no data for these stop reasons.
|
||||
return 0;
|
||||
|
||||
|
@ -348,6 +350,13 @@ SBThread::GetStopDescription (char *dst, size_t dst_len)
|
|||
}
|
||||
break;
|
||||
|
||||
case eStopReasonThreadExiting:
|
||||
{
|
||||
char limbo_desc[] = "thread exiting";
|
||||
stop_desc = limbo_desc;
|
||||
stop_desc_len = sizeof(limbo_desc);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ POSIXLimboStopInfo::~POSIXLimboStopInfo() { }
|
|||
lldb::StopReason
|
||||
POSIXLimboStopInfo::GetStopReason() const
|
||||
{
|
||||
return lldb::eStopReasonTrace;
|
||||
return lldb::eStopReasonThreadExiting;
|
||||
}
|
||||
|
||||
const char *
|
||||
|
@ -33,13 +33,13 @@ POSIXLimboStopInfo::GetDescription()
|
|||
bool
|
||||
POSIXLimboStopInfo::ShouldStop(Event *event_ptr)
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
POSIXLimboStopInfo::ShouldNotify(Event *event_ptr)
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -1582,15 +1582,16 @@ Thread::StopReasonAsCString (lldb::StopReason reason)
|
|||
{
|
||||
switch (reason)
|
||||
{
|
||||
case eStopReasonInvalid: return "invalid";
|
||||
case eStopReasonNone: return "none";
|
||||
case eStopReasonTrace: return "trace";
|
||||
case eStopReasonBreakpoint: return "breakpoint";
|
||||
case eStopReasonWatchpoint: return "watchpoint";
|
||||
case eStopReasonSignal: return "signal";
|
||||
case eStopReasonException: return "exception";
|
||||
case eStopReasonExec: return "exec";
|
||||
case eStopReasonPlanComplete: return "plan complete";
|
||||
case eStopReasonInvalid: return "invalid";
|
||||
case eStopReasonNone: return "none";
|
||||
case eStopReasonTrace: return "trace";
|
||||
case eStopReasonBreakpoint: return "breakpoint";
|
||||
case eStopReasonWatchpoint: return "watchpoint";
|
||||
case eStopReasonSignal: return "signal";
|
||||
case eStopReasonException: return "exception";
|
||||
case eStopReasonExec: return "exec";
|
||||
case eStopReasonPlanComplete: return "plan complete";
|
||||
case eStopReasonThreadExiting: return "thread exiting";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -146,7 +146,8 @@ ThreadPlanBase::ShouldStop (Event *event_ptr)
|
|||
log->Printf("Base plan discarding thread plans for thread tid = 0x%4.4" PRIx64 " (exec.)", m_thread.GetID());
|
||||
m_thread.DiscardThreadPlans(false);
|
||||
return true;
|
||||
|
||||
|
||||
case eStopReasonThreadExiting:
|
||||
case eStopReasonSignal:
|
||||
if (stop_info_sp->ShouldStop(event_ptr))
|
||||
{
|
||||
|
|
|
@ -384,6 +384,7 @@ ThreadPlanStepInRange::PlanExplainsStop ()
|
|||
case eStopReasonSignal:
|
||||
case eStopReasonException:
|
||||
case eStopReasonExec:
|
||||
case eStopReasonThreadExiting:
|
||||
{
|
||||
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP));
|
||||
if (log)
|
||||
|
|
|
@ -252,6 +252,7 @@ ThreadPlanStepOut::PlanExplainsStop ()
|
|||
case eStopReasonSignal:
|
||||
case eStopReasonException:
|
||||
case eStopReasonExec:
|
||||
case eStopReasonThreadExiting:
|
||||
return false;
|
||||
|
||||
default:
|
||||
|
|
|
@ -320,6 +320,7 @@ ThreadPlanStepOverRange::PlanExplainsStop ()
|
|||
case eStopReasonSignal:
|
||||
case eStopReasonException:
|
||||
case eStopReasonExec:
|
||||
case eStopReasonThreadExiting:
|
||||
default:
|
||||
if (log)
|
||||
log->PutCString ("ThreadPlanStepInRange got asked if it explains the stop for some reason other than step.");
|
||||
|
|
|
@ -292,6 +292,7 @@ ThreadPlanStepUntil::AnalyzeStop()
|
|||
case eStopReasonSignal:
|
||||
case eStopReasonException:
|
||||
case eStopReasonExec:
|
||||
case eStopReasonThreadExiting:
|
||||
m_explains_stop = false;
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -807,6 +807,7 @@ Driver::UpdateSelectedThread ()
|
|||
case eStopReasonSignal:
|
||||
case eStopReasonException:
|
||||
case eStopReasonExec:
|
||||
case eStopReasonThreadExiting:
|
||||
if (!other_thread.IsValid())
|
||||
other_thread = thread;
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue