diff options
author | Jim Ingham <jingham@apple.com> | 2012-07-20 21:37:13 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2012-07-20 21:37:13 +0000 |
commit | cd16df9154d46bb4ff49ed8843df714a7376d072 (patch) | |
tree | ee33109563981740402ee3d93477eca660d07876 /lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | |
parent | 5e4fe00e644177dd5b6c8bd330be6dfe0f25610b (diff) | |
download | bcm5719-llvm-cd16df9154d46bb4ff49ed8843df714a7376d072.tar.gz bcm5719-llvm-cd16df9154d46bb4ff49ed8843df714a7376d072.zip |
Add "vAttachOrWait" to debugserver, so you can implement "attach to the process if it exists OR wait for it" without race conditions. Use that in lldb.
llvm-svn: 160578
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index 6e48482901b..dbb121e8a14 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -742,6 +742,7 @@ ProcessGDBRemote::ConnectToDebugserver (const char *connect_url) m_gdb_comm.GetListThreadsInStopReplySupported (); m_gdb_comm.GetHostInfo (); m_gdb_comm.GetVContSupported ('c'); + m_gdb_comm.GetVAttachOrWaitSupported(); size_t num_cmds = GetExtraStartupCommands().GetArgumentCount(); for (size_t idx = 0; idx < num_cmds; idx++) @@ -929,7 +930,19 @@ ProcessGDBRemote::DoAttachToProcessWithName (const char *process_name, bool wait StreamString packet; if (wait_for_launch) - packet.PutCString("vAttachWait"); + { + if (!m_gdb_comm.GetVAttachOrWaitSupported()) + { + packet.PutCString ("vAttachWait"); + } + else + { + if (attach_info.GetIgnoreExisting()) + packet.PutCString("vAttachWait"); + else + packet.PutCString ("vAttachOrWait"); + } + } else packet.PutCString("vAttachName"); packet.PutChar(';'); |