Change the "attach" command to always wait synchronously for the target to stop. It's not very useful to return the prompt in mid-attach, and it makes reporting the result of the attach hard to do.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@139764 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Commands/CommandObjectProcess.cpp b/source/Commands/CommandObjectProcess.cpp
index 4a15ecd..2f5c1b2 100644
--- a/source/Commands/CommandObjectProcess.cpp
+++ b/source/Commands/CommandObjectProcess.cpp
@@ -562,7 +562,9 @@
CommandReturnObject &result)
{
Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get();
- bool synchronous_execution = m_interpreter.GetSynchronous ();
+ // N.B. The attach should be synchronous. It doesn't help much to get the prompt back between initiating the attach
+ // and the target actually stopping. So even if the interpreter is set to be asynchronous, we wait for the stop
+ // ourselves here.
Process *process = m_interpreter.GetExecutionContext().process;
StateType state = eStateInvalid;
@@ -671,19 +673,11 @@
// Otherwise just return.
// FIXME: in the async case it will now be possible to get to the command
// interpreter with a state eStateAttaching. Make sure we handle that correctly.
- if (synchronous_execution)
- {
- StateType state = process->WaitForProcessToStop (NULL);
+ StateType state = process->WaitForProcessToStop (NULL);
- result.SetDidChangeProcessState (true);
- result.AppendMessageWithFormat ("Process %i %s\n", process->GetID(), StateAsCString (state));
- result.SetStatus (eReturnStatusSuccessFinishNoResult);
- }
- else
- {
- result.SetDidChangeProcessState (true);
- result.SetStatus (eReturnStatusSuccessFinishNoResult);
- }
+ result.SetDidChangeProcessState (true);
+ result.AppendMessageWithFormat ("Process %i %s\n", process->GetID(), StateAsCString (state));
+ result.SetStatus (eReturnStatusSuccessFinishNoResult);
}
else
{
@@ -731,20 +725,11 @@
error.AsCString());
result.SetStatus (eReturnStatusFailed);
}
- // See comment for synchronous_execution above.
- if (synchronous_execution)
- {
- StateType state = process->WaitForProcessToStop (NULL);
+ StateType state = process->WaitForProcessToStop (NULL);
- result.SetDidChangeProcessState (true);
- result.AppendMessageWithFormat ("Process %i %s\n", process->GetID(), StateAsCString (state));
- result.SetStatus (eReturnStatusSuccessFinishNoResult);
- }
- else
- {
- result.SetDidChangeProcessState (true);
- result.SetStatus (eReturnStatusSuccessFinishNoResult);
- }
+ result.SetDidChangeProcessState (true);
+ result.AppendMessageWithFormat ("Process %i %s\n", process->GetID(), StateAsCString (state));
+ result.SetStatus (eReturnStatusSuccessFinishNoResult);
}
else
{