diff options
Diffstat (limited to 'lldb/source/Plugins/Platform/MacOSX')
6 files changed, 57 insertions, 223 deletions
diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp index 30af2bb2250..7827ae84e71 100644 --- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp @@ -613,82 +613,33 @@ PlatformRemoteAppleTV::GetFileInSDK (const char *platform_file_path, uint32_t sdk_idx, lldb_private::FileSpec &local_file) { + Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); if (sdk_idx < m_sdk_directory_infos.size()) { - char sdkroot_path[PATH_MAX]; - const SDKDirectoryInfo &sdk_dir_info = m_sdk_directory_infos[sdk_idx]; - if (sdk_dir_info.directory.GetPath(sdkroot_path, sizeof(sdkroot_path))) + std::string sdkroot_path = m_sdk_directory_infos[sdk_idx].directory.GetPath(); + if (!sdkroot_path.empty() && platform_file_path && platform_file_path[0]) { - const bool symbols_dirs_only = true; + // We may need to interpose "/Symbols/" or "/Symbols.Internal/" between the + // SDK root directory and the file path. - return GetFileInSDKRoot (platform_file_path, - sdkroot_path, - symbols_dirs_only, - local_file); - } - } - return false; -} - -bool -PlatformRemoteAppleTV::GetFileInSDKRoot (const char *platform_file_path, - const char *sdkroot_path, - bool symbols_dirs_only, - lldb_private::FileSpec &local_file) -{ - Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); - if (sdkroot_path && sdkroot_path[0] && platform_file_path && platform_file_path[0]) - { - char resolved_path[PATH_MAX]; - - if (!symbols_dirs_only) - { - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) + const char *paths_to_try[] = { "Symbols", "", "Symbols.Internal", nullptr }; + for (size_t i = 0; paths_to_try[i] != nullptr; i++) { - if (log) + local_file.SetFile (sdkroot_path.c_str(), false); + if (paths_to_try[i][0] != '\0') + local_file.AppendPathComponent (paths_to_try[i]); + local_file.AppendPathComponent (platform_file_path); + local_file.ResolvePath(); + if (local_file.Exists()) { - log->Printf ("Found a copy of %s in the SDK dir %s", platform_file_path, sdkroot_path); + if (log) + log->Printf ("Found a copy of %s in the SDK dir %s/%s", platform_file_path, + sdkroot_path.c_str(), + paths_to_try[i]); + return true; } - return true; - } - } - - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s/Symbols.Internal%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) - { - if (log) - { - log->Printf ("Found a copy of %s in the SDK dir %s/Symbols.Internal", platform_file_path, sdkroot_path); - } - return true; - } - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s/Symbols%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) - { - if (log) - { - log->Printf ("Found a copy of %s in the SDK dir %s/Symbols", platform_file_path, sdkroot_path); + local_file.Clear(); } - return true; } } return false; diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h index 28bd9df0fad..fa1bc51ba43 100644 --- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h @@ -151,12 +151,6 @@ protected: uint32_t sdk_idx, lldb_private::FileSpec &local_file); - bool - GetFileInSDKRoot (const char *platform_file_path, - const char *sdkroot_path, - bool symbols_dirs_only, - lldb_private::FileSpec &local_file); - uint32_t FindFileInAllSDKs (const lldb_private::FileSpec &platform_file, lldb_private::FileSpecList &file_list); diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp index ba59887ccf2..54fc05978ed 100644 --- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp @@ -624,82 +624,33 @@ PlatformRemoteAppleWatch::GetFileInSDK (const char *platform_file_path, uint32_t sdk_idx, lldb_private::FileSpec &local_file) { + Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); if (sdk_idx < m_sdk_directory_infos.size()) { - char sdkroot_path[PATH_MAX]; - const SDKDirectoryInfo &sdk_dir_info = m_sdk_directory_infos[sdk_idx]; - if (sdk_dir_info.directory.GetPath(sdkroot_path, sizeof(sdkroot_path))) + std::string sdkroot_path = m_sdk_directory_infos[sdk_idx].directory.GetPath(); + if (!sdkroot_path.empty() && platform_file_path && platform_file_path[0]) { - const bool symbols_dirs_only = true; + // We may need to interpose "/Symbols/" or "/Symbols.Internal/" between the + // SDK root directory and the file path. - return GetFileInSDKRoot (platform_file_path, - sdkroot_path, - symbols_dirs_only, - local_file); - } - } - return false; -} - -bool -PlatformRemoteAppleWatch::GetFileInSDKRoot (const char *platform_file_path, - const char *sdkroot_path, - bool symbols_dirs_only, - lldb_private::FileSpec &local_file) -{ - Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); - if (sdkroot_path && sdkroot_path[0] && platform_file_path && platform_file_path[0]) - { - char resolved_path[PATH_MAX]; - - if (!symbols_dirs_only) - { - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) + const char *paths_to_try[] = { "Symbols", "", "Symbols.Internal", nullptr }; + for (size_t i = 0; paths_to_try[i] != nullptr; i++) { - if (log) + local_file.SetFile (sdkroot_path.c_str(), false); + if (paths_to_try[i][0] != '\0') + local_file.AppendPathComponent (paths_to_try[i]); + local_file.AppendPathComponent (platform_file_path); + local_file.ResolvePath(); + if (local_file.Exists()) { - log->Printf ("Found a copy of %s in the SDK dir %s", platform_file_path, sdkroot_path); + if (log) + log->Printf ("Found a copy of %s in the SDK dir %s/%s", platform_file_path, + sdkroot_path.c_str(), + paths_to_try[i]); + return true; } - return true; - } - } - - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s/Symbols.Internal%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) - { - if (log) - { - log->Printf ("Found a copy of %s in the SDK dir %s/Symbols.Internal", platform_file_path, sdkroot_path); - } - return true; - } - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s/Symbols%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) - { - if (log) - { - log->Printf ("Found a copy of %s in the SDK dir %s/Symbols", platform_file_path, sdkroot_path); + local_file.Clear(); } - return true; } } return false; diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h index 891bc5d1c6e..1cf93c21ac7 100644 --- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h @@ -153,12 +153,6 @@ protected: uint32_t sdk_idx, lldb_private::FileSpec &local_file); - bool - GetFileInSDKRoot (const char *platform_file_path, - const char *sdkroot_path, - bool symbols_dirs_only, - lldb_private::FileSpec &local_file); - uint32_t FindFileInAllSDKs (const lldb_private::FileSpec &platform_file, lldb_private::FileSpecList &file_list); diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp index abc429a7234..b67a246b26a 100644 --- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp @@ -610,83 +610,33 @@ PlatformRemoteiOS::GetFileInSDK (const char *platform_file_path, uint32_t sdk_idx, lldb_private::FileSpec &local_file) { + Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); if (sdk_idx < m_sdk_directory_infos.size()) { - char sdkroot_path[PATH_MAX]; - const SDKDirectoryInfo &sdk_dir_info = m_sdk_directory_infos[sdk_idx]; - if (sdk_dir_info.directory.GetPath(sdkroot_path, sizeof(sdkroot_path))) - { - const bool symbols_dirs_only = true; - - return GetFileInSDKRoot (platform_file_path, - sdkroot_path, - symbols_dirs_only, - local_file); - } - } - return false; -} - + std::string sdkroot_path = m_sdk_directory_infos[sdk_idx].directory.GetPath(); + local_file.Clear(); -bool -PlatformRemoteiOS::GetFileInSDKRoot (const char *platform_file_path, - const char *sdkroot_path, - bool symbols_dirs_only, - lldb_private::FileSpec &local_file) -{ - Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); - if (sdkroot_path && sdkroot_path[0] && platform_file_path && platform_file_path[0]) - { - char resolved_path[PATH_MAX]; - - if (!symbols_dirs_only) + if (!sdkroot_path.empty() && platform_file_path && platform_file_path[0]) { - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) + // We may need to interpose "/Symbols/" or "/Symbols.Internal/" between the + // SDK root directory and the file path. + + const char *paths_to_try[] = { "Symbols", "", "Symbols.Internal", nullptr }; + for (size_t i = 0; paths_to_try[i] != nullptr; i++) { - if (log) + local_file.SetFile (sdkroot_path.c_str(), false); + if (paths_to_try[i][0] != '\0') + local_file.AppendPathComponent (paths_to_try[i]); + local_file.AppendPathComponent (platform_file_path); + local_file.ResolvePath(); + if (local_file.Exists()) { - log->Printf ("Found a copy of %s in the SDK dir %s", platform_file_path, sdkroot_path); + if (log) + log->Printf ("Found a copy of %s in the SDK dir %s/%s", platform_file_path, sdkroot_path.c_str(), paths_to_try[i]); + return true; } - return true; - } - } - - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s/Symbols.Internal%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) - { - if (log) - { - log->Printf ("Found a copy of %s in the SDK dir %s/Symbols.Internal", platform_file_path, sdkroot_path); - } - return true; - } - ::snprintf (resolved_path, - sizeof(resolved_path), - "%s/Symbols%s", - sdkroot_path, - platform_file_path); - - local_file.SetFile(resolved_path, true); - if (local_file.Exists()) - { - if (log) - { - log->Printf ("Found a copy of %s in the SDK dir %s/Symbols", platform_file_path, sdkroot_path); + local_file.Clear(); } - return true; } } return false; diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h index 9726d8238e1..56e76f495e1 100644 --- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h @@ -149,12 +149,6 @@ protected: uint32_t sdk_idx, lldb_private::FileSpec &local_file); - bool - GetFileInSDKRoot (const char *platform_file_path, - const char *sdkroot_path, - bool symbols_dirs_only, - lldb_private::FileSpec &local_file); - uint32_t FindFileInAllSDKs (const lldb_private::FileSpec &platform_file, lldb_private::FileSpecList &file_list); |