PlatformRemoteiOS.h revision 74821595bdf8b75ceea1949b5a9370a71fd96e61
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- PlatformRemoteiOS.h ----------------------------------------*- C++ -*-===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef liblldb_PlatformRemoteiOS_h_ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define liblldb_PlatformRemoteiOS_h_ 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// C Includes 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// C++ Includes 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Other libraries and framework includes 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/Host/FileSpec.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Project includes 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "PlatformDarwin.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PlatformRemoteiOS : public PlatformDarwin 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public: 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Class Functions 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static lldb_private::Platform* 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateInstance (bool force, const lldb_private::ArchSpec *arch); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Initialize (); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Terminate (); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char * 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetPluginNameStatic (); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char * 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetShortPluginNameStatic(); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char * 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDescriptionStatic(); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Class Methods 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlatformRemoteiOS (); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~PlatformRemoteiOS(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // lldb_private::PluginInterface functions 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const char * 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetPluginName() 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetPluginNameStatic(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const char * 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetShortPluginName() 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetShortPluginNameStatic(); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual uint32_t 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetPluginVersion() 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // lldb_private::Platform functions 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //------------------------------------------------------------ 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual lldb_private::Error 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResolveExecutable (const lldb_private::FileSpec &exe_file, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb_private::ArchSpec &arch, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb::ModuleSP &module_sp, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb_private::FileSpecList *module_search_paths_ptr); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const char * 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDescription () 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetDescriptionStatic(); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetStatus (lldb_private::Stream &strm); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual lldb_private::Error 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetFile (const lldb_private::FileSpec &platform_file, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb_private::UUID *uuid_ptr, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb_private::FileSpec &local_file); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual lldb_private::Error 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetSharedModule (const lldb_private::ModuleSpec &module_spec, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb::ModuleSP &module_sp, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb_private::FileSpecList *module_search_paths_ptr, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb::ModuleSP *old_module_sp_ptr, 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool *did_create_ptr); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual uint32_t 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindProcesses (const lldb_private::ProcessInstanceInfoMatch &match_info, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb_private::ProcessInstanceInfoList &process_infos); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetProcessInfo (lldb::pid_t pid, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb_private::ProcessInstanceInfo &proc_info); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetSupportedArchitectureAtIndex (uint32_t idx, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb_private::ArchSpec &arch); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protected: 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct SDKDirectoryInfo 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SDKDirectoryInfo (const lldb_private::FileSpec &sdk_dir_spec); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb_private::FileSpec directory; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb_private::ConstString build; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t version_major; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t version_minor; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t version_update; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool user_cached; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SDKDirectoryInfoCollection m_sdk_directory_infos; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string m_device_support_directory; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string m_device_support_directory_for_os_version; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string m_build_update; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t m_last_module_sdk_idx; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateSDKDirectoryInfosInNeeded(); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char * 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDeviceSupportDirectory(); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 141 const char * 142 GetDeviceSupportDirectoryForOSVersion(); 143 144 const SDKDirectoryInfo * 145 GetSDKDirectoryForLatestOSVersion (); 146 147 const SDKDirectoryInfo * 148 GetSDKDirectoryForCurrentOSVersion (); 149 150 static lldb_private::FileSpec::EnumerateDirectoryResult 151 GetContainedFilesIntoVectorOfStringsCallback (void *baton, 152 lldb_private::FileSpec::FileType file_type, 153 const lldb_private::FileSpec &file_spec); 154 155 uint32_t 156 FindFileInAllSDKs (const char *platform_file_path, 157 lldb_private::FileSpecList &file_list); 158 159 bool 160 GetFileInSDK (const char *platform_file_path, 161 uint32_t sdk_idx, 162 lldb_private::FileSpec &local_file); 163 164 bool 165 GetFileInSDKRoot (const char *platform_file_path, 166 const char *sdkroot_path, 167 bool symbols_dirs_only, 168 lldb_private::FileSpec &local_file); 169 170 uint32_t 171 FindFileInAllSDKs (const lldb_private::FileSpec &platform_file, 172 lldb_private::FileSpecList &file_list); 173 174private: 175 DISALLOW_COPY_AND_ASSIGN (PlatformRemoteiOS); 176 177}; 178 179#endif // liblldb_PlatformRemoteiOS_h_ 180