Cleaned up the SWIG stuff so all includes happen as they should, no pulling

tricks to get types to resolve. I did this by correctly including the correct
files: stdint.h and all lldb-*.h files first before including the API files.
This allowed me to remove all of the hacks that were in the lldb.swig file
and it also allows all of the #defines in lldb-defines.h and enumerations
in lldb-enumerations.h to appear in the lldb.py module. This will make the
python script code a lot more readable.

Cleaned up the "process launch" command to not execute a "process continue"
command, it now just does what it should have with the internal API calls
instead of executing another command line command.

Made the lldb_private::Process set the state to launching and attaching if
WillLaunch/WillAttach return no error respectively.

llvm-svn: 115902
This commit is contained in:
Greg Clayton
2010-10-07 04:19:01 +00:00
parent 1b468683c2
commit 05faeb7135
18 changed files with 183 additions and 186 deletions

View File

@@ -133,13 +133,9 @@ public:
}
bool
Execute (Args& launch_args,
CommandReturnObject &result)
Execute (Args& launch_args, CommandReturnObject &result)
{
Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get();
bool synchronous_execution = m_interpreter.GetSynchronous ();
// bool launched = false;
// bool stopped_after_launch = false;
if (target == NULL)
{
@@ -235,22 +231,29 @@ public:
if (error.Success())
{
result.AppendMessageWithFormat ("Launching '%s' (%s)\n", filename, archname);
result.SetStatus (eReturnStatusSuccessContinuingNoResult);
result.SetDidChangeProcessState (true);
if (m_options.stop_at_entry == false)
{
result.SetStatus (eReturnStatusSuccessContinuingNoResult);
StateType state = process->WaitForProcessToStop (NULL);
if (state == eStateStopped)
{
// Call continue_command.
CommandReturnObject continue_result;
m_interpreter.HandleCommand("process continue", false, continue_result);
}
if (synchronous_execution)
{
result.SetDidChangeProcessState (true);
result.SetStatus (eReturnStatusSuccessFinishNoResult);
error = process->Resume();
if (error.Success())
{
bool synchronous_execution = m_interpreter.GetSynchronous ();
if (synchronous_execution)
{
state = process->WaitForProcessToStop (NULL);
result.SetDidChangeProcessState (true);
result.SetStatus (eReturnStatusSuccessFinishResult);
}
else
{
result.SetStatus (eReturnStatusSuccessContinuingNoResult);
}
}
}
}
}