[Lldb-commits] [lldb] r244737 - Fetch SDK version from PlatformAndroid

Tamas Berghammer via lldb-commits lldb-commits at lists.llvm.org
Wed Aug 12 04:10:19 PDT 2015


Author: tberghammer
Date: Wed Aug 12 06:10:19 2015
New Revision: 244737

URL: http://llvm.org/viewvc/llvm-project?rev=244737&view=rev
Log:
Fetch SDK version from PlatformAndroid

The SDK version implies the features supported by a given android
device. This version number will be used in future changes to execute
the right command on the device.

Differential revision: http://reviews.llvm.org/D11935

Modified:
    lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.cpp
    lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.h

Modified: lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.cpp?rev=244737&r1=244736&r2=244737&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.cpp (original)
+++ lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.cpp Wed Aug 12 06:10:19 2015
@@ -13,6 +13,7 @@
 #include "lldb/Core/Log.h"
 #include "lldb/Core/PluginManager.h"
 #include "lldb/Host/HostInfo.h"
+#include "lldb/Host/StringConvert.h"
 #include "Utility/UriParser.h"
 
 // Project includes
@@ -133,7 +134,8 @@ PlatformAndroid::CreateInstance (bool fo
 }
 
 PlatformAndroid::PlatformAndroid (bool is_host) :
-    PlatformLinux(is_host)
+    PlatformLinux(is_host),
+    m_sdk_version(0)
 {
 }
 
@@ -257,3 +259,46 @@ PlatformAndroid::DownloadModuleSlice (co
 
     return GetFile (src_file_spec, dst_file_spec);
 }
+
+Error
+PlatformAndroid::DisconnectRemote()
+{
+    Error error = PlatformLinux::DisconnectRemote();
+    if (error.Success())
+    {
+        m_device_id.clear();
+        m_sdk_version = 0;
+    }
+    return error;
+}
+
+uint32_t
+PlatformAndroid::GetSdkVersion()
+{
+    if (!IsConnected())
+        return 0;
+
+    if (m_sdk_version != 0)
+        return m_sdk_version;
+
+    int status = 0;
+    std::string version_string;
+    Error error = RunShellCommand("getprop ro.build.version.sdk",
+                                  GetWorkingDirectory(),
+                                  &status,
+                                  nullptr,
+                                  &version_string,
+                                  1);
+    if (error.Fail() || status != 0 || version_string.empty())
+    {
+        Log* log = GetLogIfAllCategoriesSet(LIBLLDB_LOG_PLATFORM);
+        if (log)
+            log->Printf("Get SDK version failed. (status: %d, error: %s, output: %s)",
+                        status, error.AsCString(), version_string.c_str());
+        return 0;
+    }
+    version_string.erase(version_string.size() - 1); // Remove trailing new line
+
+    m_sdk_version = StringConvert::ToUInt32(version_string.c_str());
+    return m_sdk_version;
+}

Modified: lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.h?rev=244737&r1=244736&r2=244737&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.h (original)
+++ lldb/trunk/source/Plugins/Platform/Android/PlatformAndroid.h Wed Aug 12 06:10:19 2015
@@ -73,6 +73,12 @@ namespace platform_android {
                  const FileSpec& destination,
                  uint32_t uid = UINT32_MAX,
                  uint32_t gid = UINT32_MAX) override;
+        
+        uint32_t
+        GetSdkVersion();
+        
+        Error
+        DisconnectRemote () override;
 
      protected:
         const char *
@@ -86,6 +92,8 @@ namespace platform_android {
 
     private:
         std::string m_device_id;
+        uint32_t m_sdk_version;
+
         DISALLOW_COPY_AND_ASSIGN (PlatformAndroid);
     };
 




More information about the lldb-commits mailing list