summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2013-02-22 22:23:55 +0000
committerGreg Clayton <gclayton@apple.com>2013-02-22 22:23:55 +0000
commit3f875c589fb6b581429d422b4257e7eb325bcbb2 (patch)
treedad8aa1ed012eda9235dbc471cc08e1fe0bc9ba2 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
parentf073871f7fb53f206a38b815d4e80a4e41606e21 (diff)
downloadbcm5719-llvm-3f875c589fb6b581429d422b4257e7eb325bcbb2.tar.gz
bcm5719-llvm-3f875c589fb6b581429d422b4257e7eb325bcbb2.zip
<rdar://problem/13190981>
Fixed an issue where if we got a 'A' async packet back from debugserver, we would resend the last continue command. We now correctly identify the packet as async (just like the 'O' stdout async packet) and we don't resend the continue command. llvm-svn: 175924
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp')
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
index 1de76a44690..80fa316a583 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
@@ -540,11 +540,11 @@ GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse
// may change if we are interrupted and we continue after an async packet...
std::string continue_packet(payload, packet_length);
- bool got_stdout = false;
+ bool got_async_packet = false;
while (state == eStateRunning)
{
- if (!got_stdout)
+ if (!got_async_packet)
{
if (log)
log->Printf ("GDBRemoteCommunicationClient::%s () sending continue packet: %s", __FUNCTION__, continue_packet.c_str());
@@ -554,7 +554,7 @@ GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse
m_private_is_running.SetValue (true, eBroadcastAlways);
}
- got_stdout = false;
+ got_async_packet = false;
if (log)
log->Printf ("GDBRemoteCommunicationClient::%s () WaitForPacket(%s)", __FUNCTION__, continue_packet.c_str());
@@ -737,7 +737,7 @@ GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse
case 'O':
// STDOUT
{
- got_stdout = true;
+ got_async_packet = true;
std::string inferior_stdout;
inferior_stdout.reserve(response.GetBytesLeft () / 2);
char ch;
@@ -750,6 +750,7 @@ GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse
case 'A':
// Async miscellaneous reply. Right now, only profile data is coming through this channel.
{
+ got_async_packet = true;
std::string input = response.GetStringRef().substr(1); // '1' to move beyond 'A'
if (m_partial_profile_data.length() > 0)
{
OpenPOWER on IntegriCloud