[Lldb-commits] [lldb] r279917 - Convert some functions to use StringRef instead of c_str, len

2016-08-27 Thread Zachary Turner via lldb-commits
Author: zturner
Date: Sat Aug 27 10:52:29 2016
New Revision: 279917

URL: http://llvm.org/viewvc/llvm-project?rev=279917&view=rev
Log:
Convert some functions to use StringRef instead of c_str, len

This started as an effort to change StringExtractor to store a
StringRef internally instead of a std::string.  I got that working
locally with just 1 test failure which I was unable to figure out the
cause of.  But it was also a massive changelist due to a trickle
down effect of changes.

So I'm starting over, using what I learned from the first time to
tackle smaller, more isolated changes hopefully leading up to
a full conversion by the end.

At first the changes (such as in this CL) will seem mostly
a matter of preference and pointless otherwise.  However, there
are some places in my larger CL where using StringRef turned 20+
lines of code into 2, drastically simplifying logic.  Hopefully
once these go in they will illustrate some of the benefits of
thinking in terms of StringRef.

Modified:
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h

lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp

lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp

lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp

lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
lldb/trunk/unittests/Process/gdb-remote/GDBRemoteTestUtils.h

Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp?rev=279917&r1=279916&r2=279917&view=diff
==
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp 
(original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp Sat 
Aug 27 10:52:29 2016
@@ -216,7 +216,7 @@ GDBRemoteClientBase::SendPacketAndWaitFo
   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;
 
@@ -255,7 +255,7 @@ GDBRemoteClientBase::SendvContPacket(llv
 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);
@@ -354,8 +354,7 @@ GDBRemoteClientBase::ContinueLock::lock(
 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);

Modified: 
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp?rev=279917&r1=279916&r2=279917&view=diff
==
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp 
(original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Sat 
Aug 27 10:52:29 2016
@@ -187,12 +187,12 @@ GDBRemoteCommunication::~GDBRemoteCommun
 }
 
 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;
 }
@@ -224,16 +224,16 @@ GDBRemoteCommunication::SendNack ()
 }
 
 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 

[Lldb-commits] [lldb] r279919 - Add some unit tests for StringExtractor::GetNameColonValue.

2016-08-27 Thread Zachary Turner via lldb-commits
Author: zturner
Date: Sat Aug 27 11:35:15 2016
New Revision: 279919

URL: http://llvm.org/viewvc/llvm-project?rev=279919&view=rev
Log:
Add some unit tests for StringExtractor::GetNameColonValue.

These are helpful on their own, but will be even more useful
once the GetNameColonValue is updated to return StringRefs
instead of std::strings.

Modified:
lldb/trunk/unittests/Utility/StringExtractorTest.cpp

Modified: lldb/trunk/unittests/Utility/StringExtractorTest.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/StringExtractorTest.cpp?rev=279919&r1=279918&r2=279919&view=diff
==
--- lldb/trunk/unittests/Utility/StringExtractorTest.cpp (original)
+++ lldb/trunk/unittests/Utility/StringExtractorTest.cpp Sat Aug 27 11:35:15 
2016
@@ -403,4 +403,57 @@ TEST_F (StringExtractorTest, GetHexBytes
 ASSERT_EQ('2', *ex.Peek());
 }
 
+TEST_F(StringExtractorTest, GetNameColonValueSuccess)
+{
+const char kNameColonPairs[] = "key1:value1;key2:value2;";
+StringExtractor ex(kNameColonPairs);
 
+std::string name;
+std::string value;
+EXPECT_TRUE(ex.GetNameColonValue(name, value));
+EXPECT_EQ("key1", name);
+EXPECT_EQ("value1", value);
+EXPECT_TRUE(ex.GetNameColonValue(name, value));
+EXPECT_EQ("key2", name);
+EXPECT_EQ("value2", value);
+EXPECT_EQ(0, ex.GetBytesLeft());
+}
+
+
+TEST_F(StringExtractorTest, GetNameColonValueContainsColon)
+{
+const char kNameColonPairs[] = "key1:value1:value2;key2:value3;";
+StringExtractor ex(kNameColonPairs);
+
+std::string name;
+std::string value;
+EXPECT_TRUE(ex.GetNameColonValue(name, value));
+EXPECT_EQ("key1", name);
+EXPECT_EQ("value1:value2", value);
+EXPECT_TRUE(ex.GetNameColonValue(name, value));
+EXPECT_EQ("key2", name);
+EXPECT_EQ("value3", value);
+EXPECT_EQ(0, ex.GetBytesLeft());
+}
+
+TEST_F(StringExtractorTest, GetNameColonValueNoSemicolon)
+{
+const char kNameColonPairs[] = "key1:value1";
+StringExtractor ex(kNameColonPairs);
+
+std::string name;
+std::string value;
+EXPECT_FALSE(ex.GetNameColonValue(name, value));
+EXPECT_EQ(0, ex.GetBytesLeft());
+}
+
+TEST_F(StringExtractorTest, GetNameColonValueNoColon)
+{
+const char kNameColonPairs[] = "key1value1;";
+StringExtractor ex(kNameColonPairs);
+
+std::string name;
+std::string value;
+EXPECT_FALSE(ex.GetNameColonValue(name, value));
+EXPECT_EQ(0, ex.GetBytesLeft());
+}


___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] r279920 - Fix some build bot breakages.

2016-08-27 Thread Zachary Turner via lldb-commits
Author: zturner
Date: Sat Aug 27 11:38:11 2016
New Revision: 279920

URL: http://llvm.org/viewvc/llvm-project?rev=279920&view=rev
Log:
Fix some build bot breakages.

There was some code that was ifdef'ed out that I didn't catch
in my earlier patch.

Modified:

lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp

lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp

Modified: 
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp?rev=279920&r1=279919&r2=279920&view=diff
==
--- 
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
 (original)
+++ 
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
 Sat Aug 27 11:38:11 2016
@@ -418,7 +418,7 @@ GDBRemoteCommunicationServerCommon::Hand
 {
 StreamString response;
 response.PutCStringAsRawHex8 (name.c_str());
-return SendPacketNoLock (response.GetData(), response.GetSize());
+return SendPacketNoLock (response.GetString());
 }
 }
 if (log)
@@ -442,7 +442,7 @@ GDBRemoteCommunicationServerCommon::Hand
 {
 StreamString response;
 response.PutCStringAsRawHex8 (name.c_str());
-return SendPacketNoLock (response.GetData(), response.GetSize());
+return SendPacketNoLock (response.GetString());
 }
 }
 #endif
@@ -561,7 +561,7 @@ GDBRemoteCommunicationServerCommon::Hand
 if (count == UINT64_MAX)
 {
 response.Printf("F-1:%i", EINVAL);
-return SendPacketNoLock(response.GetData(), 
response.GetSize());
+return SendPacketNoLock(response.GetString());
 }
 
 std::string buffer(count, 0);
@@ -576,7 +576,7 @@ GDBRemoteCommunicationServerCommon::Hand
 response.PutChar(';');
 response.PutEscapedBytes(&buffer[0], bytes_read);
 }
-return SendPacketNoLock(response.GetData(), response.GetSize());
+return SendPacketNoLock(response.GetString());
 }
 }
 return SendErrorResponse(21);
@@ -614,7 +614,7 @@ GDBRemoteCommunicationServerCommon::Hand
 {
 response.Printf ("-1,%i", EINVAL);
 }
-return SendPacketNoLock(response.GetData(), response.GetSize());
+return SendPacketNoLock(response.GetString());
 }
 }
 return SendErrorResponse(27);

Modified: 
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp?rev=279920&r1=279919&r2=279920&view=diff
==
--- 
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
 (original)
+++ 
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
 Sat Aug 27 11:38:11 2016
@@ -217,7 +217,7 @@ GDBRemoteCommunicationServerPlatform::Ha
 response.PutChar(';');
 }
 
-PacketResult packet_result = SendPacketNoLock(response.GetData(), 
response.GetSize());
+PacketResult packet_result = SendPacketNoLock(response.GetString());
 if (packet_result != PacketResult::Success)
 {
 if (debugserver_pid != LLDB_INVALID_PROCESS_ID)


___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits