const Lock &lock)
{
assert(lock);
- PacketResult packet_result = SendPacketNoLock(payload.data(), payload.size());
+ PacketResult packet_result = SendPacketNoLock(payload);
if (packet_result != PacketResult::Success)
return packet_result;
log->Printf("GDBRemoteCommunicationClient::%s () sending vCont packet: %.*s", __FUNCTION__, int(payload.size()),
payload.data());
- if (SendPacketNoLock(payload.data(), payload.size()) != PacketResult::Success)
+ if (SendPacketNoLock(payload) != PacketResult::Success)
return false;
OnRunPacketSent(true);
log->Printf("GDBRemoteClientBase::ContinueLock::%s() cancelled", __FUNCTION__);
return LockResult::Cancelled;
}
- if (m_comm.SendPacketNoLock(m_comm.m_continue_packet.data(), m_comm.m_continue_packet.size()) !=
- PacketResult::Success)
+ if (m_comm.SendPacketNoLock(m_comm.m_continue_packet) != PacketResult::Success)
return LockResult::Failed;
lldbassert(!m_comm.m_is_running);
}
char
-GDBRemoteCommunication::CalculcateChecksum (const char *payload, size_t payload_length)
+GDBRemoteCommunication::CalculcateChecksum (llvm::StringRef payload)
{
int checksum = 0;
- for (size_t i = 0; i < payload_length; ++i)
- checksum += payload[i];
+ for (char c : payload)
+ checksum += c;
return checksum & 255;
}
}
GDBRemoteCommunication::PacketResult
-GDBRemoteCommunication::SendPacketNoLock (const char *payload, size_t payload_length)
+GDBRemoteCommunication::SendPacketNoLock (llvm::StringRef payload)
{
if (IsConnected())
{
StreamString packet(0, 4, eByteOrderBig);
packet.PutChar('$');
- packet.Write (payload, payload_length);
+ packet.Write (payload.data(), payload.size());
packet.PutChar('#');
- packet.PutHex8(CalculcateChecksum (payload, payload_length));
+ packet.PutHex8(CalculcateChecksum (payload));
Log *log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet (GDBR_LOG_PACKETS));
ConnectionStatus status = eConnectionStatusSuccess;
response_regex.Compile("^QC[0-9A-Fa-f]+$");
}
- PacketResult echo_packet_result = SendPacketNoLock (echo_packet, echo_packet_len);
+ PacketResult echo_packet_result = SendPacketNoLock (llvm::StringRef(echo_packet, echo_packet_len));
if (echo_packet_result == PacketResult::Success)
{
const uint32_t max_retries = 3;
packet_checksum_cstr[2] = '\0';
long packet_checksum = strtol (packet_checksum_cstr, NULL, 16);
- long actual_checksum = CalculcateChecksum (m_bytes.data() + 1, hash_mark_idx - 1);
+ long actual_checksum = CalculcateChecksum (llvm::StringRef(m_bytes).substr(1, hash_mark_idx - 1));
bool success = packet_checksum == actual_checksum;
if (!success)
{
new_packet.push_back ('#');
if (GetSendAcks ())
{
- uint8_t decompressed_checksum = CalculcateChecksum ((const char *) decompressed_buffer, decompressed_bytes);
+ uint8_t decompressed_checksum = CalculcateChecksum (llvm::StringRef((const char *) decompressed_buffer, decompressed_bytes));
char decompressed_checksum_str[3];
snprintf (decompressed_checksum_str, 3, "%02x", decompressed_checksum);
new_packet.append (decompressed_checksum_str);
{
const char *packet_checksum_cstr = &m_bytes[checksum_idx];
char packet_checksum = strtol (packet_checksum_cstr, NULL, 16);
- char actual_checksum = CalculcateChecksum (packet_str.c_str(), packet_str.size());
+ char actual_checksum = CalculcateChecksum (packet_str);
success = packet_checksum == actual_checksum;
if (!success)
{
SendNack ();
char
- CalculcateChecksum (const char *payload,
- size_t payload_length);
+ CalculcateChecksum (llvm::StringRef payload);
PacketType
CheckForPacket (const uint8_t *src,
CompressionType m_compression_type;
PacketResult
- SendPacketNoLock (const char *payload,
- size_t payload_length);
+ SendPacketNoLock (llvm::StringRef payload);
PacketResult
ReadPacket (StringExtractorGDBRemote &response, uint32_t timeout_usec, bool sync_on_timeout);
GDBRemoteCommunicationServer::SendUnimplementedResponse (const char *)
{
// TODO: Log the packet we aren't handling...
- return SendPacketNoLock ("", 0);
+ return SendPacketNoLock ("");
}
char packet[16];
int packet_len = ::snprintf (packet, sizeof(packet), "E%2.2x", err);
assert (packet_len < (int)sizeof(packet));
- return SendPacketNoLock (packet, packet_len);
+ return SendPacketNoLock (llvm::StringRef(packet, packet_len));
}
GDBRemoteCommunication::PacketResult
GDBRemoteCommunication::PacketResult
GDBRemoteCommunicationServer::SendOKResponse ()
{
- return SendPacketNoLock ("OK", 2);
+ return SendPacketNoLock ("OK");
}
bool
if (g_default_packet_timeout_sec > 0)
response.Printf ("default_packet_timeout:%u;", g_default_packet_timeout_sec);
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
GDBRemoteCommunication::PacketResult
{
StreamString response;
CreateProcessInfoResponse (proc_info, response);
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
}
return SendErrorResponse (1);
StreamString response;
CreateProcessInfoResponse (m_proc_infos.GetProcessInfoAtIndex(m_proc_infos_index), response);
++m_proc_infos_index;
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
return SendErrorResponse (4);
}
bytes_left = 0;
}
}
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
}
return SendErrorResponse (7);
response.Printf("%i", fd);
if (save_errno)
response.Printf(",%i", save_errno);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
}
}
response.Printf("%i", err);
if (save_errno)
response.Printf(",%i", save_errno);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
response.PutChar(',');
response.PutHex64(retcode); // TODO: replace with Host::GetSyswideErrorCode()
}
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
return SendErrorResponse(22);
}
response.Printf("F%u", mode);
if (mode == 0 || error.Fail())
response.Printf(",%i", (int)error.GetError());
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
return SendErrorResponse(23);
}
response.PutChar('1');
else
response.PutChar('0');
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
return SendErrorResponse(24);
}
Error error = FileSystem::Symlink(FileSpec{src, true}, FileSpec{dst, false});
StreamString response;
response.Printf("F%u,%u", error.GetError(), error.GetError());
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
Error error = FileSystem::Unlink(FileSpec{path, true});
StreamString response;
response.Printf("F%u,%u", error.GetError(), error.GetError());
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
response.PutChar(',');
response.PutEscapedBytes(output.c_str(), output.size());
}
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
}
return SendErrorResponse(24);
response.PutHex64(a);
response.PutHex64(b);
}
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
return SendErrorResponse(25);
}
StreamGDBRemote response;
response.Printf("F%u", error.GetError());
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
return SendErrorResponse(20);
}
StreamGDBRemote response;
response.Printf("F%u", error.GetError());
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
return SendErrorResponse(19);
}
response.PutCString (";qXfer:auxv:read+");
#endif
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
StreamString response;
response.PutChar('E');
response.PutCString(m_process_launch_error.AsCString("<unknown error>"));
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
GDBRemoteCommunication::PacketResult
GDBRemoteCommunicationServerCommon::Handle_qEcho (StringExtractorGDBRemote &packet)
{
// Just echo back the exact same packet for qEcho...
- return SendPacketNoLock(packet.GetStringRef().c_str(), packet.GetStringRef().size());
+ return SendPacketNoLock(packet.GetStringRef());
}
GDBRemoteCommunication::PacketResult
response.PutHex64(file_size);
response.PutChar(';');
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
void
StreamGDBRemote response;
response.PutChar ('E');
response.PutHex8 (GDBRemoteServerError::eErrorExitStatus);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
else
{
// POSIX exit status limited to unsigned 8 bits.
response.PutHex8 (return_code);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
}
}
}
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
void
response.PutChar ('O');
response.PutBytesAsRawHex8 (buffer, len);
- return SendPacketNoLock (response.GetData (), response.GetSize ());
+ return SendPacketNoLock (response.GetString());
}
Error
StreamString response;
CreateProcessInfoResponse_DebugServerStyle(proc_info, response);
- return SendPacketNoLock (response.GetData (), response.GetSize ());
+ return SendPacketNoLock (response.GetString());
}
GDBRemoteCommunication::PacketResult
StreamString response;
response.Printf ("QC%" PRIx64, thread_sp->GetID ());
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
GDBRemoteCommunication::PacketResult
{
StreamString response;
response.PutCStringAsRawHex8(working_dir.GetCString());
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
return SendErrorResponse(14);
StreamString response;
response.Printf("vCont;c;C;s;S");
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
response.PutHex8 (reg_info->dynamic_size_dwarf_expr_bytes[i]);
response.PutChar(';');
}
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
if (log)
log->Printf ("GDBRemoteCommunicationServerLLGS::%s() finished thread iteration", __FUNCTION__);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
GDBRemoteCommunicationServerLLGS::Handle_qsThreadInfo (StringExtractorGDBRemote &packet)
{
// FIXME for now we return the full thread list in the initial packet and always do nothing here.
- return SendPacketNoLock ("l", 1);
+ return SendPacketNoLock ("l");
}
GDBRemoteCommunication::PacketResult
for (uint32_t i = 0; i < reg_value.GetByteSize (); ++i)
response.PutHex8 (data[i]);
- return SendPacketNoLock (response.GetData (), response.GetSize ());
+ return SendPacketNoLock (response.GetString());
}
GDBRemoteCommunication::PacketResult
response.PutHex8(buf[i]);
}
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
}
}
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
if (done_with_buffer)
m_active_auxv_buffer_sp.reset ();
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
#else
return SendUnimplementedResponse ("not implemented on this platform");
#endif
// Write the response.
StreamGDBRemote response;
response.Printf ("%" PRIu32, save_id);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
threads_array_sp->Write(response);
StreamGDBRemote escaped_response;
escaped_response.PutEscapedBytes(response.GetData(), response.GetSize());
- return SendPacketNoLock (escaped_response.GetData(), escaped_response.GetSize());
+ return SendPacketNoLock (escaped_response.GetString());
}
GDBRemoteCommunication::PacketResult
uint32_t num = m_debugged_process_sp->GetMaxWatchpoints();
StreamGDBRemote response;
response.Printf ("num:%d;", num);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
StreamGDBRemote response;
response.PutHex64(file_load_address);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
void
StreamGDBRemote escaped_response;
escaped_response.PutEscapedBytes(response.GetData(), response.GetSize());
- return SendPacketNoLock(escaped_response.GetData(), escaped_response.GetSize());
+ return SendPacketNoLock(escaped_response.GetString());
}
GDBRemoteCommunication::PacketResult
StreamString response;
CreateProcessInfoResponse_DebugServerStyle(proc_info, response);
- return SendPacketNoLock (response.GetData (), response.GetSize ());
+ return SendPacketNoLock (response.GetString());
}
GDBRemoteCommunication::PacketResult
StreamString response;
response.PutBytesAsRawHex8(cwd, strlen(cwd));
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
GDBRemoteCommunication::PacketResult
m_process_launch_info.Clear();
}
- return SendPacketNoLock (response.GetData(), response.GetSize());
+ return SendPacketNoLock (response.GetString());
}
GDBRemoteCommunication::PacketResult
StreamString response;
signal_array.Dump(response);
- return SendPacketNoLock(response.GetData(), response.GetSize());
+ return SendPacketNoLock(response.GetString());
}
bool
PacketResult
SendPacket(llvm::StringRef payload)
{
- return GDBRemoteCommunicationServer::SendPacketNoLock(payload.data(), payload.size());
+ return GDBRemoteCommunicationServer::SendPacketNoLock(payload);
}
PacketResult