[Lldb-commits] [lldb] r155734 - in /lldb/branches/lldb-platform-work: include/lldb/Host/ include/lldb/Target/ source/Host/common/ source/Plugins/Platform/MacOSX/ source/Plugins/Platform/POSIX/ source/Plugins/Process/gdb-remote/ source/Target/ source/Utility/ test/functionalities/inferior-changed/

Enrico Granata egranata at apple.com
Fri Apr 27 14:12:06 PDT 2012


Author: enrico
Date: Fri Apr 27 16:12:06 2012
New Revision: 155734

URL: http://llvm.org/viewvc/llvm-project?rev=155734&view=rev
Log:
Fixing a bug where the platform was not checking for changes to files stored in the local cache when asked to locate a module - this would lead to failures in the test suite when trying to replace an executable

Modified:
    lldb/branches/lldb-platform-work/include/lldb/Host/FileSpec.h
    lldb/branches/lldb-platform-work/include/lldb/Host/Host.h
    lldb/branches/lldb-platform-work/include/lldb/Target/Platform.h
    lldb/branches/lldb-platform-work/source/Host/common/FileSpec.cpp
    lldb/branches/lldb-platform-work/source/Host/common/Host.cpp
    lldb/branches/lldb-platform-work/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp
    lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp
    lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.h
    lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
    lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
    lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
    lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h
    lldb/branches/lldb-platform-work/source/Target/Platform.cpp
    lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.cpp
    lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.h
    lldb/branches/lldb-platform-work/test/functionalities/inferior-changed/TestInferiorChanged.py

Modified: lldb/branches/lldb-platform-work/include/lldb/Host/FileSpec.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/include/lldb/Host/FileSpec.h?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/include/lldb/Host/FileSpec.h (original)
+++ lldb/branches/lldb-platform-work/include/lldb/Host/FileSpec.h Fri Apr 27 16:12:06 2012
@@ -564,10 +564,10 @@
     Resolve (const char *src_path, char *dst_path, size_t dst_len);
 
     FileSpec
-    CopyByAppendingPathComponent (const char *new_path);
+    CopyByAppendingPathComponent (const char *new_path) const;
     
     FileSpec
-    CopyByRemovingLastPathComponent ();
+    CopyByRemovingLastPathComponent () const;
     
     void
     AppendPathComponent (const char *new_path);

Modified: lldb/branches/lldb-platform-work/include/lldb/Host/Host.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/include/lldb/Host/Host.h?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/include/lldb/Host/Host.h (original)
+++ lldb/branches/lldb-platform-work/include/lldb/Host/Host.h Fri Apr 27 16:12:06 2012
@@ -482,6 +482,11 @@
     
     static bool
     GetFileExists (const FileSpec& file_spec);
+    
+    static bool
+    CalculateMD5 (const FileSpec& file_spec,
+                  uint64_t &low,
+                  uint64_t &high);
 
 };
 

Modified: lldb/branches/lldb-platform-work/include/lldb/Target/Platform.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/include/lldb/Target/Platform.h?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/include/lldb/Target/Platform.h (original)
+++ lldb/branches/lldb-platform-work/include/lldb/Target/Platform.h Fri Apr 27 16:12:06 2012
@@ -608,6 +608,11 @@
         {
             return "";
         }
+        
+        virtual bool
+        CalculateMD5 (const FileSpec& file_spec,
+                      uint64_t &low,
+                      uint64_t &high);
                 
     protected:
         bool m_is_host;

Modified: lldb/branches/lldb-platform-work/source/Host/common/FileSpec.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Host/common/FileSpec.cpp?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Host/common/FileSpec.cpp (original)
+++ lldb/branches/lldb-platform-work/source/Host/common/FileSpec.cpp Fri Apr 27 16:12:06 2012
@@ -979,7 +979,7 @@
 }
 
 FileSpec
-FileSpec::CopyByAppendingPathComponent (const char *new_path)
+FileSpec::CopyByAppendingPathComponent (const char *new_path)  const
 {
     const bool resolve = false;
     if (m_filename.IsEmpty() && m_directory.IsEmpty())
@@ -995,7 +995,7 @@
 }
 
 FileSpec
-FileSpec::CopyByRemovingLastPathComponent ()
+FileSpec::CopyByRemovingLastPathComponent ()  const
 {
     const bool resolve = false;
     if (m_filename.IsEmpty() && m_directory.IsEmpty())

Modified: lldb/branches/lldb-platform-work/source/Host/common/Host.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Host/common/Host.cpp?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Host/common/Host.cpp (original)
+++ lldb/branches/lldb-platform-work/source/Host/common/Host.cpp Fri Apr 27 16:12:06 2012
@@ -1535,3 +1535,34 @@
 {
     return file_spec.Exists();
 }
+
+bool
+Host::CalculateMD5 (const FileSpec& file_spec,
+                    uint64_t &low,
+                    uint64_t &high)
+{
+#if defined (__APPLE__)
+    std::string hash_string;
+    file_spec.GetPath(hash_string);
+    StreamString md5_cmd_line;
+    md5_cmd_line.Printf("md5 -q %s",hash_string.c_str());
+    hash_string.clear();
+    Error err = Host::RunShellCommand(md5_cmd_line.GetData(), NULL, NULL, NULL, &hash_string, 60);
+    if (err.Fail())
+        return false;
+    // a correctly formed MD5 is 16-bytes, that is 32 hex digits
+    // if the output is any other length it is probably wrong
+    if (hash_string.size() != 32)
+        return false;
+    std::string part1(hash_string,0,16);
+    std::string part2(hash_string,16);
+    const char* part1_cstr = part1.c_str();
+    const char* part2_cstr = part2.c_str();
+    high = ::strtoull(part1_cstr, NULL, 16);
+    low = ::strtoull(part2_cstr, NULL, 16);
+    return true;
+#else
+    // your own MD5 implementation here
+    return false;
+#endif
+}

Modified: lldb/branches/lldb-platform-work/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp (original)
+++ lldb/branches/lldb-platform-work/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp Fri Apr 27 16:12:06 2012
@@ -212,6 +212,30 @@
 #endif
 }
 
+static lldb_private::Error
+MakeCacheFolderForFile (const FileSpec& module_cache_spec)
+{
+    FileSpec module_cache_folder = module_cache_spec.CopyByRemovingLastPathComponent();
+    StreamString mkdir_folder_cmd;
+    mkdir_folder_cmd.Printf("mkdir -p %s/%s", module_cache_folder.GetDirectory().AsCString(), module_cache_folder.GetFilename().AsCString());
+    return Host::RunShellCommand(mkdir_folder_cmd.GetData(),
+                          NULL,
+                          NULL,
+                          NULL,
+                          NULL,
+                          60);
+}
+
+static lldb_private::Error
+BringInRemoteFile (Platform* platform,
+                   const lldb_private::ModuleSpec &module_spec,
+                   const FileSpec& module_cache_spec)
+{
+    MakeCacheFolderForFile(module_cache_spec);
+    Error err = platform->GetFile(module_spec.GetFileSpec(), module_cache_spec);
+    return err;
+}
+
 lldb_private::Error
 PlatformMacOSX::GetSharedModule (const lldb_private::ModuleSpec &module_spec,
                                  lldb::ModuleSP &module_sp,
@@ -229,35 +253,61 @@
            module_spec.GetSymbolFileSpec().GetDirectory().AsCString(),
            module_spec.GetSymbolFileSpec().GetFilename().AsCString());
 
-    if (module_spec.GetFileSpec().Exists() && !module_sp)
+    std::string cache_path(GetLocalCacheDirectory());
+    std::string module_path;
+    module_spec.GetFileSpec().GetPath(module_path);
+    cache_path.append(module_path);
+    FileSpec module_cache_spec(cache_path.c_str(),false);
+    
+    // if rsync is supported, always bring in the file - rsync will be very efficient
+    // when files are the same on the local and remote end of the connection
+    if (this->GetSupportsRSync())
     {
-        module_sp.reset(new Module(module_spec));
-        if (module_spec.GetUUID() == module_sp->GetUUID())
-        {
-            printf("[%s] module %s/%s was found\n",
-                   (IsHost() ? "host" : "remote"),
-                   module_spec.GetFileSpec().GetDirectory().AsCString(),
-                   module_spec.GetFileSpec().GetFilename().AsCString());
-            return Error();
-        }
-        else
+        Error err = BringInRemoteFile (this, module_spec, module_cache_spec);
+        if (err.Fail())
+            return err;
+        if (module_cache_spec.Exists())
         {
-            printf("[%s] module %s/%s had UUID mismatch\n",
+            printf("[%s] module %s/%s was rsynced and is now there\n",
                    (IsHost() ? "host" : "remote"),
                    module_spec.GetFileSpec().GetDirectory().AsCString(),
                    module_spec.GetFileSpec().GetFilename().AsCString());
+            ModuleSpec local_spec(module_cache_spec, module_spec.GetArchitecture());
+            module_sp.reset(new Module(local_spec));
+            module_sp->SetPlatformFileSpec(module_spec.GetFileSpec());
             return Error();
-            module_sp.reset();
         }
     }
+
+    if (module_spec.GetFileSpec().Exists() && !module_sp)
+    {
+        module_sp.reset(new Module(module_spec));
+        return Error();
+    }
+    
     // try to find the module in the cache
-    std::string cache_path(GetLocalCacheDirectory());
-    std::string module_path;
-    module_spec.GetFileSpec().GetPath(module_path);
-    cache_path.append(module_path);
-    FileSpec module_cache_spec(cache_path.c_str(),false);
     if (module_cache_spec.Exists())
     {
+        // get the local and remote MD5 and compare
+        {
+            // when going over the *slow* GDB remote transfer mechanism we first check
+            // the hashes of the files - and only do the actual transfer if they differ
+            uint64_t high_local,high_remote,low_local,low_remote;
+            Host::CalculateMD5 (module_cache_spec, low_local, high_local);
+            m_remote_platform_sp->CalculateMD5(module_spec.GetFileSpec(), low_remote, high_remote);
+            if (low_local != low_remote || high_local != high_remote)
+            {
+                // bring in the remote file
+                printf("[%s] module %s/%s needs to be replaced from remote copy\n",
+                       (IsHost() ? "host" : "remote"),
+                       module_spec.GetFileSpec().GetDirectory().AsCString(),
+                       module_spec.GetFileSpec().GetFilename().AsCString());
+                Error err = BringInRemoteFile (this, module_spec, module_cache_spec);
+                if (err.Fail())
+                    return err;
+            }
+        }
+        
         ModuleSpec local_spec(module_cache_spec, module_spec.GetArchitecture());
         module_sp.reset(new Module(local_spec));
         module_sp->SetPlatformFileSpec(module_spec.GetFileSpec());
@@ -267,22 +317,13 @@
                module_spec.GetFileSpec().GetFilename().AsCString());
         return Error();
     }
+    
     // bring in the remote module file
     printf("[%s] module %s/%s needs to come in remotely\n",
            (IsHost() ? "host" : "remote"),
            module_spec.GetFileSpec().GetDirectory().AsCString(),
            module_spec.GetFileSpec().GetFilename().AsCString());
-    FileSpec module_cache_folder = module_cache_spec.CopyByRemovingLastPathComponent();
-    StreamString mkdir_folder_cmd;
-    // try to make the local directory first
-    mkdir_folder_cmd.Printf("mkdir -p %s/%s", module_cache_folder.GetDirectory().AsCString(), module_cache_folder.GetFilename().AsCString());
-    Host::RunShellCommand(mkdir_folder_cmd.GetData(),
-                          NULL,
-                          NULL,
-                          NULL,
-                          NULL,
-                          60);
-    Error err = GetFile(module_spec.GetFileSpec(), module_cache_spec);
+    Error err = BringInRemoteFile (this, module_spec, module_cache_spec);
     if (err.Fail())
         return err;
     if (module_cache_spec.Exists())

Modified: lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp (original)
+++ lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp Fri Apr 27 16:12:06 2012
@@ -459,3 +459,15 @@
     else
         return "";
 }
+
+bool
+PlatformPOSIX::CalculateMD5 (const FileSpec& file_spec,
+                            uint64_t &low,
+                            uint64_t &high)
+{
+    if (IsHost())
+        return Platform::CalculateMD5 (file_spec, low, high);
+    if (m_remote_platform_sp)
+        return m_remote_platform_sp->CalculateMD5(file_spec, low, high);
+    return false;
+}

Modified: lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.h?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.h (original)
+++ lldb/branches/lldb-platform-work/source/Plugins/Platform/POSIX/PlatformPOSIX.h Fri Apr 27 16:12:06 2012
@@ -80,6 +80,11 @@
     
     virtual std::string
     GetPlatformSpecificConnectionInformation();
+    
+    virtual bool
+    CalculateMD5 (const lldb_private::FileSpec& file_spec,
+                  uint64_t &low,
+                  uint64_t &high);
 
 protected:
     std::auto_ptr<lldb_private::OptionGroupOptions> m_options;

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=155734&r1=155733&r2=155734&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 27 16:12:06 2012
@@ -2120,3 +2120,30 @@
     return false;
 }
 
+bool
+GDBRemoteCommunicationClient::CalculateMD5 (const lldb_private::FileSpec& file_spec,
+                                            uint64_t &high,
+                                            uint64_t &low)
+{
+    lldb_private::StreamString stream;
+    stream.PutCString("vFile:MD5:");
+    std::string path;
+    file_spec.GetPath(path);
+    stream.PutCStringAsRawHex8(path.c_str());
+    const char* packet = stream.GetData();
+    int packet_len = stream.GetSize();
+    StringExtractorGDBRemote response;
+    if (SendPacketAndWaitForResponse(packet, packet_len, response, false))
+    {
+        if (response.GetChar() != 'F')
+            return false;
+        if (response.GetChar() != ',')
+            return false;
+        if (response.Peek() && *response.Peek() == 'x')
+            return false;
+        low = response.GetHexMaxU64(false, UINT64_MAX);
+        high = response.GetHexMaxU64(false, UINT64_MAX);
+        return true;
+    }
+    return false;
+}

Modified: lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h (original)
+++ lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h Fri Apr 27 16:12:06 2012
@@ -372,6 +372,11 @@
                      std::string *command_output,   // Pass NULL if you don't want the command output
                      uint32_t timeout_sec);         // Timeout in seconds to wait for shell program to finish
     
+    virtual bool
+    CalculateMD5 (const lldb_private::FileSpec& file_spec,
+                  uint64_t &high,
+                  uint64_t &low);
+    
 protected:
 
     //------------------------------------------------------------------

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=155734&r1=155733&r2=155734&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 27 16:12:06 2012
@@ -185,6 +185,12 @@
                 
             case StringExtractorGDBRemote::eServerPacketType_vFile_Exists:
                 return Handle_vFile_Exists (packet);
+                
+            case StringExtractorGDBRemote::eServerPacketType_vFile_Stat:
+                return Handle_vFile_Stat (packet);
+                
+            case StringExtractorGDBRemote::eServerPacketType_vFile_MD5:
+                return Handle_vFile_MD5 (packet);
         }
         return true;
     }
@@ -1063,3 +1069,34 @@
     SendPacketNoLock(response.GetData(), response.GetSize());
     return true;
 }
+
+bool
+GDBRemoteCommunicationServer::Handle_vFile_Stat (StringExtractorGDBRemote &packet)
+{
+    return false;
+}
+
+bool
+GDBRemoteCommunicationServer::Handle_vFile_MD5 (StringExtractorGDBRemote &packet)
+{
+    packet.SetFilePos(::strlen("vFile:exists:"));
+    std::string path;
+    packet.GetHexByteString(path);
+    if (path.size() == 0)
+        return false;
+    uint64_t a,b;
+    StreamGDBRemote response;
+    if (Host::CalculateMD5(FileSpec(path.c_str(),false),a,b) == false)
+    {
+        response.PutCString("F,");
+        response.PutCString("x");
+    }
+    else
+    {
+        response.PutCString("F,");
+        response.PutHex64(a);
+        response.PutHex64(b);
+    }
+    SendPacketNoLock(response.GetData(), response.GetSize());
+    return true;
+}

Modified: lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h (original)
+++ lldb/branches/lldb-platform-work/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h Fri Apr 27 16:12:06 2012
@@ -157,6 +157,12 @@
 
     bool
     Handle_vFile_Exists (StringExtractorGDBRemote &packet);
+
+    bool
+    Handle_vFile_Stat (StringExtractorGDBRemote &packet);
+    
+    bool
+    Handle_vFile_MD5 (StringExtractorGDBRemote &packet);
     
     bool
     Handle_qPlatform_RunCommand (StringExtractorGDBRemote &packet);

Modified: lldb/branches/lldb-platform-work/source/Target/Platform.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Target/Platform.cpp?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Target/Platform.cpp (original)
+++ lldb/branches/lldb-platform-work/source/Target/Platform.cpp Fri Apr 27 16:12:06 2012
@@ -725,6 +725,17 @@
 }
 
 
+bool
+Platform::CalculateMD5 (const FileSpec& file_spec,
+                        uint64_t &low,
+                        uint64_t &high)
+{
+    if (IsHost())
+        return Host::CalculateMD5(file_spec, low, high);
+    else
+        return false;
+}
+
 void
 Platform::SetLocalCacheDirectory (const char* local)
 {

Modified: lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.cpp?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.cpp (original)
+++ lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.cpp Fri Apr 27 16:12:06 2012
@@ -150,6 +150,9 @@
                 else if (PACKET_STARTS_WITH("vFile:pwrite"))         return eServerPacketType_vFile_pWrite;
                 else if (PACKET_STARTS_WITH("vFile:size"))           return eServerPacketType_vFile_Size;
                 else if (PACKET_STARTS_WITH("vFile:exists"))         return eServerPacketType_vFile_Exists;
+                else if (PACKET_STARTS_WITH("vFile:stat"))           return eServerPacketType_vFile_Stat;
+                else if (PACKET_STARTS_WITH("vFile:MD5"))            return eServerPacketType_vFile_MD5;
+
             }
             break;
     }

Modified: lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.h?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.h (original)
+++ lldb/branches/lldb-platform-work/source/Utility/StringExtractorGDBRemote.h Fri Apr 27 16:12:06 2012
@@ -72,6 +72,8 @@
         eServerPacketType_vFile_pWrite,
         eServerPacketType_vFile_Size,
         eServerPacketType_vFile_Exists,
+        eServerPacketType_vFile_MD5,
+        eServerPacketType_vFile_Stat
     };
     
     ServerPacketType

Modified: lldb/branches/lldb-platform-work/test/functionalities/inferior-changed/TestInferiorChanged.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/lldb-platform-work/test/functionalities/inferior-changed/TestInferiorChanged.py?rev=155734&r1=155733&r2=155734&view=diff
==============================================================================
--- lldb/branches/lldb-platform-work/test/functionalities/inferior-changed/TestInferiorChanged.py (original)
+++ lldb/branches/lldb-platform-work/test/functionalities/inferior-changed/TestInferiorChanged.py Fri Apr 27 16:12:06 2012
@@ -10,8 +10,6 @@
     mydir = os.path.join("functionalities", "inferior-changed")
 
     @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
-    # rdar://problem/11314533
-    @unittest2.expectedFailure
     def test_inferior_crashing_dsym(self):
         """Test lldb reloads the inferior after it was changed during the session."""
         self.buildDsym()
@@ -22,8 +20,6 @@
         self.setTearDownCleanup(dictionary=d)
         self.inferior_not_crashing()
 
-    # rdar://problem/11314533
-    @unittest2.expectedFailure
     def test_inferior_crashing_dwarf(self):
         """Test lldb reloads the inferior after it was changed during the session."""
         self.buildDwarf()





More information about the lldb-commits mailing list