[Lldb-commits] [lldb] r154244 - in /lldb/branches/lldb-platform-work/source: Commands/CommandObjectPlatform.cpp Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp Utility/StringExtractor.cpp Utility/StringExtractor.h
Johnny Chen
johnny.chen at apple.com
Sat Apr 7 14:46:50 PDT 2012
Hi Enrico,
Were you importing the same patch for StringExtractor that I've merged previously?
Please check.
Sent from my iPad
On Apr 6, 2012, at 6:40 PM, Enrico Granata <egranata at apple.com> wrote:
> Author: enrico
> Date: Fri Apr 6 20:40:39 2012
> New Revision: 154244
>
> URL: http://llvm.org/viewvc/llvm-project?rev=154244&view=rev
> Log:
> Fixing several issues with the first version of the file I/O commands - importing Greg's patch to mainline StringExtractor into the branch
>
> Modified:
> lldb/branches/lldb-platform-work/source/Commands/CommandObjectPlatform.cpp
> lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
> lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
> lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
> lldb/branches/lldb-platform-work/source/Utility/StringExtractor.cpp
> lldb/branches/lldb-platform-work/source/Utility/StringExtractor.h
>
> Modified: lldb/branches/lldb-platform-work/source/Commands/CommandObjectPlatform.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Commands/CommandObjectPlatform.cpp?rev=154244&r1=154243&r2=154244&view=diff
> ==============================================================================
> --- lldb/branches/lldb-platform-work/source/Commands/CommandObjectPlatform.cpp (original)
> +++ lldb/branches/lldb-platform-work/source/Commands/CommandObjectPlatform.cpp Fri Apr 6 20:40:39 2012
> @@ -327,6 +327,7 @@
> {
> std::string cmd_line;
> args.GetCommandString(cmd_line);
> + // TODO: make permissions safer
> uint32_t retcode = platform_sp->OpenFile(FileSpec(cmd_line.c_str(),false),0x0200 | 0x0002, 0000700 | 0000070 | 0000007);
> result.AppendMessageWithFormat("Status = %d\n",retcode);
> result.SetStatus (eReturnStatusSuccessFinishResult);
> @@ -412,10 +413,10 @@
> std::string cmd_line;
> args.GetCommandString(cmd_line);
> uint32_t fd = ::atoi(cmd_line.c_str());
> - std::string buffer(m_options.m_count,' ');
> + std::string buffer(m_options.m_count,0);
> uint32_t retcode = platform_sp->ReadFile(fd, m_options.m_offset, &buffer[0], m_options.m_count);
> result.AppendMessageWithFormat("Return = %d\n",retcode);
> - result.AppendMessageWithFormat("Data = %s\n",buffer.c_str());
> + result.AppendMessageWithFormat("Data = \"%s\"\n",buffer.c_str());
> result.SetStatus (eReturnStatusSuccessFinishResult);
> }
> else
> @@ -583,7 +584,7 @@
> if (!success)
> error.SetErrorStringWithFormat("invalid offset: '%s'", option_arg);
> break;
> - case 's':
> + case 'd':
> m_data.assign(option_arg);
> break;
>
>
> Modified: lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp?rev=154244&r1=154243&r2=154244&view=diff
> ==============================================================================
> --- lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp (original)
> +++ lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Fri Apr 6 20:40:39 2012
> @@ -38,7 +38,11 @@
> const char *listener_name,
> bool is_platform) :
> Communication(comm_name),
> +#ifdef LLDB_CONFIGURATION_DEBUG
> + m_packet_timeout (1000),
> +#else
> m_packet_timeout (1),
> +#endif
> m_sequence_mutex (Mutex::eMutexTypeRecursive),
> m_public_is_running (false),
> m_private_is_running (false),
>
> Modified: lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp?rev=154244&r1=154243&r2=154244&view=diff
> ==============================================================================
> --- lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp (original)
> +++ lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp Fri Apr 6 20:40:39 2012
> @@ -1969,7 +1969,7 @@
> void *data_ptr, size_t len)
> {
> lldb_private::StreamString stream;
> - stream.PutCString("vFile:read:");
> + stream.PutCString("vFile:pread:");
> stream.PutHex32(fd);
> stream.PutChar(',');
> stream.PutHex32(len);
> @@ -1985,10 +1985,12 @@
> uint32_t retcode = response.GetHexMaxU32(false, UINT32_MAX);
> if (retcode == UINT32_MAX)
> return retcode;
> - if (response.GetChar() == ',')
> + const char next = (response.Peek() ? *response.Peek() : 0);
> + if (next == ',')
> return UINT32_MAX;
> - if (response.GetChar() == ';')
> + if (next == ';')
> {
> + response.GetChar(); // skip the semicolon
> std::string buffer;
> response.GetEscapedBinaryData(buffer);
> size_t data_to_write = len;
> @@ -2006,7 +2008,7 @@
> void* data, size_t len)
> {
> lldb_private::StreamGDBRemote stream;
> - stream.PutCString("vFile:write:");
> + stream.PutCString("vFile:pwrite:");
> stream.PutHex32(fd);
> stream.PutChar(',');
> stream.PutHex32(offset);
>
> Modified: lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp?rev=154244&r1=154243&r2=154244&view=diff
> ==============================================================================
> --- lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp (original)
> +++ lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp Fri Apr 6 20:40:39 2012
> @@ -886,7 +886,9 @@
> {
> packet.SetFilePos(::strlen("vFile:open:"));
> std::string path;
> - packet.GetHexByteString(path);
> + packet.GetHexByteStringTerminatedBy(path,',');
> + if (path.size() == 0)
> + return false;
> if (packet.GetChar() != ',')
> return false;
> uint32_t flags = packet.GetHexMaxU32(false, UINT32_MAX);
> @@ -945,7 +947,7 @@
> SendPacket(response);
> return true;
> }
> - std::string buffer(' ',count);
> + std::string buffer(count, 0);
> uint32_t retcode = Host::ReadFile(fd, offset, &buffer[0], count);
> response.PutChar('F');
> response.PutHex32(retcode);
> @@ -971,6 +973,8 @@
> if (packet.GetChar() != ',')
> return false;
> uint32_t offset = packet.GetHexMaxU32(false, UINT32_MAX);
> + if (packet.GetChar() != ',')
> + return false;
> std::string buffer;
> packet.GetEscapedBinaryData(buffer);
> uint32_t retcode = Host::WriteFile(fd, offset, &buffer[0], buffer.size());
>
> Modified: lldb/branches/lldb-platform-work/source/Utility/StringExtractor.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Utility/StringExtractor.cpp?rev=154244&r1=154243&r2=154244&view=diff
> ==============================================================================
> --- lldb/branches/lldb-platform-work/source/Utility/StringExtractor.cpp (original)
> +++ lldb/branches/lldb-platform-work/source/Utility/StringExtractor.cpp Fri Apr 6 20:40:39 2012
> @@ -361,6 +361,20 @@
> return str.size();
> }
>
> +size_t
> +StringExtractor::GetHexByteStringTerminatedBy (std::string &str,
> + char terminator)
> +{
> + str.clear();
> + char ch;
> + while ((ch = GetHexU8(0,false)) != '\0')
> + str.append(1, ch);
> + if (Peek() && *Peek() == terminator)
> + return str.size();
> + str.clear();
> + return str.size();
> +}
> +
> bool
> StringExtractor::GetNameColonValue (std::string &name, std::string &value)
> {
>
> Modified: lldb/branches/lldb-platform-work/source/Utility/StringExtractor.h
> URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Utility/StringExtractor.h?rev=154244&r1=154243&r2=154244&view=diff
> ==============================================================================
> --- lldb/branches/lldb-platform-work/source/Utility/StringExtractor.h (original)
> +++ lldb/branches/lldb-platform-work/source/Utility/StringExtractor.h Fri Apr 6 20:40:39 2012
> @@ -116,6 +116,10 @@
> size_t
> GetHexByteString (std::string &str);
>
> + size_t
> + GetHexByteStringTerminatedBy (std::string &str,
> + char terminator);
> +
> const char *
> Peek ()
> {
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list