[Lldb-commits] [PATCH] Fix SDK selection using "platform select" when --sysroot/--version/--build options were specified
Ilia K
ki.stfu at gmail.com
Thu Mar 12 00:23:47 PDT 2015
REPOSITORY
rL LLVM
http://reviews.llvm.org/D8249
Files:
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
Index: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
===================================================================
--- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
+++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
@@ -304,6 +304,14 @@
{
if (m_sdk_directory_infos.empty())
{
+ // A --sysroot option was supplied - add it to our list of SDKs to check
+ if (m_sdk_sysroot)
+ {
+ FileSpec sdk_sysroot_fspec(m_sdk_sysroot.GetCString(), true);
+ const SDKDirectoryInfo sdk_sysroot_directory_info(sdk_sysroot_fspec);
+ m_sdk_directory_infos.push_back(sdk_sysroot_directory_info);
+ return true;
+ }
const char *device_support_dir = GetDeviceSupportDirectory();
if (device_support_dir)
{
@@ -745,7 +753,28 @@
}
}
- // First try for an exact match of major, minor and update
+ // First try for an exact match of major, minor and update:
+ // If a particalar SDK version was specified via --version or --build, look for a match on disk.
+ const SDKDirectoryInfo *current_sdk_info = GetSDKDirectoryForCurrentOSVersion();
+ const uint32_t current_sdk_idx = GetSDKIndexBySDKDirectoryInfo(current_sdk_info);
+ if (current_sdk_idx < num_sdk_infos && current_sdk_idx != m_last_module_sdk_idx)
+ {
+ if (GetFileInSDK (platform_file_path, current_sdk_idx, platform_module_spec.GetFileSpec()))
+ {
+ module_sp.reset();
+ error = ResolveExecutable (platform_module_spec,
+ module_sp,
+ NULL);
+ if (module_sp)
+ {
+ m_last_module_sdk_idx = current_sdk_idx;
+ error.Clear();
+ return error;
+ }
+ }
+ }
+
+ // Second try all SDKs that were found.
for (uint32_t sdk_idx=0; sdk_idx<num_sdk_infos; ++sdk_idx)
{
if (m_last_module_sdk_idx == sdk_idx)
@@ -827,3 +856,13 @@
return m_connected_module_sdk_idx;
}
+uint32_t
+PlatformRemoteiOS::GetSDKIndexBySDKDirectoryInfo (const SDKDirectoryInfo *sdk_info)
+{
+ if (sdk_info == NULL)
+ {
+ return UINT32_MAX;
+ }
+
+ return sdk_info - &m_sdk_directory_infos[0];
+}
Index: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
===================================================================
--- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
+++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
@@ -163,6 +163,10 @@
uint32_t
GetConnectedSDKIndex ();
+ // Get index of SDK in SDKDirectoryInfoCollection by its pointer and return UINT32_MAX if that SDK not found.
+ uint32_t
+ GetSDKIndexBySDKDirectoryInfo (const SDKDirectoryInfo *sdk_info);
+
private:
DISALLOW_COPY_AND_ASSIGN (PlatformRemoteiOS);
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D8249.21802.patch
Type: text/x-patch
Size: 3060 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150312/4408ac44/attachment.bin>
More information about the lldb-commits
mailing list