1 //===-- PlatformRemoteDarwinDevice.h ----------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMREMOTEDARWINDEVICE_H 10 #define LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMREMOTEDARWINDEVICE_H 11 12 #include "PlatformDarwinDevice.h" 13 #include "lldb/Host/FileSystem.h" 14 #include "lldb/Utility/ConstString.h" 15 #include "lldb/Utility/FileSpec.h" 16 #include "lldb/Utility/Status.h" 17 #include "lldb/Utility/XcodeSDK.h" 18 #include "lldb/lldb-forward.h" 19 #include "llvm/ADT/SmallVector.h" 20 #include "llvm/ADT/StringRef.h" 21 #include "llvm/Support/FileSystem.h" 22 #include "llvm/Support/VersionTuple.h" 23 24 #include <mutex> 25 #include <string> 26 #include <vector> 27 28 namespace lldb_private { 29 class FileSpecList; 30 class ModuleSpec; 31 class Process; 32 class Stream; 33 class Target; 34 class UUID; 35 36 class PlatformRemoteDarwinDevice : public PlatformDarwinDevice { 37 public: 38 PlatformRemoteDarwinDevice(); 39 40 ~PlatformRemoteDarwinDevice() override; 41 42 // Platform functions 43 Status 44 ResolveExecutable(const ModuleSpec &module_spec, lldb::ModuleSP &module_sp, 45 const FileSpecList *module_search_paths_ptr) override; 46 47 void GetStatus(Stream &strm) override; 48 49 virtual Status GetSymbolFile(const FileSpec &platform_file, 50 const UUID *uuid_ptr, FileSpec &local_file); 51 52 Status GetSharedModule(const ModuleSpec &module_spec, Process *process, 53 lldb::ModuleSP &module_sp, 54 const FileSpecList *module_search_paths_ptr, 55 llvm::SmallVectorImpl<lldb::ModuleSP> *old_modules, 56 bool *did_create_ptr) override; 57 58 void AddClangModuleCompilationOptions(Target * target,std::vector<std::string> & options)59 AddClangModuleCompilationOptions(Target *target, 60 std::vector<std::string> &options) override { 61 return PlatformDarwin::AddClangModuleCompilationOptionsForSDKType( 62 target, options, XcodeSDK::Type::iPhoneOS); 63 } 64 65 protected: 66 std::string m_build_update; 67 uint32_t m_last_module_sdk_idx = UINT32_MAX; 68 uint32_t m_connected_module_sdk_idx = UINT32_MAX; 69 70 bool GetFileInSDK(const char *platform_file_path, uint32_t sdk_idx, 71 FileSpec &local_file); 72 73 uint32_t GetConnectedSDKIndex(); 74 75 // Get index of SDK in SDKDirectoryInfoCollection by its pointer and return 76 // UINT32_MAX if that SDK not found. 77 uint32_t GetSDKIndexBySDKDirectoryInfo(const SDKDirectoryInfo *sdk_info); 78 79 private: 80 PlatformRemoteDarwinDevice(const PlatformRemoteDarwinDevice &) = delete; 81 const PlatformRemoteDarwinDevice & 82 operator=(const PlatformRemoteDarwinDevice &) = delete; 83 }; 84 85 } // namespace lldb_private 86 87 #endif // LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMREMOTEDARWINDEVICE_H 88