Make sure to lock down the sequence mutex and select the thread we want when read or write all registers.

llvm-svn: 115992
This commit is contained in:
Greg Clayton 2010-10-07 22:06:19 +00:00
parent 139edad73a
commit 68f4b4f2a2
1 changed files with 30 additions and 15 deletions

View File

@ -373,6 +373,12 @@ GDBRemoteRegisterContext::ReadAllRegisterValues (lldb::DataBufferSP &data_sp)
{
GDBRemoteCommunication &gdb_comm = GetGDBProcess().GetGDBRemote();
StringExtractorGDBRemote response;
Mutex::Locker locker;
if (gdb_comm.GetSequenceMutex (locker))
{
if (GetGDBProcess().SetCurrentGDBRemoteThread(m_thread.GetID()))
{
if (gdb_comm.SendPacketAndWaitForResponse("g", response, 1, false))
{
if (response.IsErrorPacket())
@ -383,6 +389,8 @@ GDBRemoteRegisterContext::ReadAllRegisterValues (lldb::DataBufferSP &data_sp)
response.GetStringRef().size()));
return true;
}
}
}
return false;
}
@ -391,6 +399,11 @@ GDBRemoteRegisterContext::WriteAllRegisterValues (const lldb::DataBufferSP &data
{
GDBRemoteCommunication &gdb_comm = GetGDBProcess().GetGDBRemote();
StringExtractorGDBRemote response;
Mutex::Locker locker;
if (gdb_comm.GetSequenceMutex (locker))
{
if (GetGDBProcess().SetCurrentGDBRemoteThread(m_thread.GetID()))
{
if (gdb_comm.SendPacketAndWaitForResponse((const char *)data_sp->GetBytes(),
data_sp->GetByteSize(),
response,
@ -400,6 +413,8 @@ GDBRemoteRegisterContext::WriteAllRegisterValues (const lldb::DataBufferSP &data
if (response.IsOKPacket())
return true;
}
}
}
return false;
}