[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

Enrico Granata egranata at apple.com
Sat Apr 7 20:28:33 PDT 2012


Hi Johnny,
yes apparently we merged the same patch unaware of one another's effort.
Luckily, looking at the code, it looks like my double merge has not resulted in a double definition of the relevant code snippet.
I guess not a big deal this one time, but I will make sure to synchronize with you about merging from TOT into the platform branch in the future.

Have a nice weekend.

Enrico Granata
✉ egranata@.com
✆ (four oh eight) 862-7683



On Apr 7, 2012, at 2:46 PM, Johnny Chen wrote:

> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20120407/5454223c/attachment.html>


More information about the lldb-commits mailing list