Home | History | Annotate | Download | only in MacOSX
      1 //===-- PlatformRemoteiOS.h ----------------------------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #ifndef liblldb_PlatformRemoteiOS_h_
     11 #define liblldb_PlatformRemoteiOS_h_
     12 
     13 // C Includes
     14 // C++ Includes
     15 // Other libraries and framework includes
     16 #include "lldb/Host/FileSpec.h"
     17 
     18 // Project includes
     19 #include "PlatformDarwin.h"
     20 
     21 class PlatformRemoteiOS : public PlatformDarwin
     22 {
     23 public:
     24 
     25     //------------------------------------------------------------
     26     // Class Functions
     27     //------------------------------------------------------------
     28     static lldb_private::Platform*
     29     CreateInstance (bool force, const lldb_private::ArchSpec *arch);
     30 
     31     static void
     32     Initialize ();
     33 
     34     static void
     35     Terminate ();
     36 
     37     static lldb_private::ConstString
     38     GetPluginNameStatic ();
     39 
     40     static const char *
     41     GetDescriptionStatic();
     42 
     43     //------------------------------------------------------------
     44     // Class Methods
     45     //------------------------------------------------------------
     46     PlatformRemoteiOS ();
     47 
     48     virtual
     49     ~PlatformRemoteiOS();
     50 
     51     //------------------------------------------------------------
     52     // lldb_private::PluginInterface functions
     53     //------------------------------------------------------------
     54     virtual lldb_private::ConstString
     55     GetPluginName()
     56     {
     57         return GetPluginNameStatic();
     58     }
     59 
     60     virtual uint32_t
     61     GetPluginVersion()
     62     {
     63         return 1;
     64     }
     65 
     66     //------------------------------------------------------------
     67     // lldb_private::Platform functions
     68     //------------------------------------------------------------
     69     virtual lldb_private::Error
     70     ResolveExecutable (const lldb_private::FileSpec &exe_file,
     71                        const lldb_private::ArchSpec &arch,
     72                        lldb::ModuleSP &module_sp,
     73                        const lldb_private::FileSpecList *module_search_paths_ptr);
     74 
     75     virtual const char *
     76     GetDescription ()
     77     {
     78         return GetDescriptionStatic();
     79     }
     80 
     81     virtual void
     82     GetStatus (lldb_private::Stream &strm);
     83 
     84     virtual lldb_private::Error
     85     GetSymbolFile (const lldb_private::FileSpec &platform_file,
     86                    const lldb_private::UUID *uuid_ptr,
     87                    lldb_private::FileSpec &local_file);
     88 
     89     virtual lldb_private::Error
     90     GetSharedModule (const lldb_private::ModuleSpec &module_spec,
     91                      lldb::ModuleSP &module_sp,
     92                      const lldb_private::FileSpecList *module_search_paths_ptr,
     93                      lldb::ModuleSP *old_module_sp_ptr,
     94                      bool *did_create_ptr);
     95 
     96     virtual uint32_t
     97     FindProcesses (const lldb_private::ProcessInstanceInfoMatch &match_info,
     98                    lldb_private::ProcessInstanceInfoList &process_infos);
     99 
    100     virtual bool
    101     GetProcessInfo (lldb::pid_t pid,
    102                     lldb_private::ProcessInstanceInfo &proc_info);
    103 
    104     virtual bool
    105     GetSupportedArchitectureAtIndex (uint32_t idx,
    106                                      lldb_private::ArchSpec &arch);
    107 
    108 protected:
    109     struct SDKDirectoryInfo
    110     {
    111         SDKDirectoryInfo (const lldb_private::FileSpec &sdk_dir_spec);
    112         lldb_private::FileSpec directory;
    113         lldb_private::ConstString build;
    114         uint32_t version_major;
    115         uint32_t version_minor;
    116         uint32_t version_update;
    117         bool user_cached;
    118     };
    119     typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;
    120     SDKDirectoryInfoCollection m_sdk_directory_infos;
    121     std::string m_device_support_directory;
    122     std::string m_device_support_directory_for_os_version;
    123     std::string m_build_update;
    124     uint32_t m_last_module_sdk_idx;
    125 
    126     bool
    127     UpdateSDKDirectoryInfosInNeeded();
    128 
    129     const char *
    130     GetDeviceSupportDirectory();
    131 
    132     const char *
    133     GetDeviceSupportDirectoryForOSVersion();
    134 
    135     const SDKDirectoryInfo *
    136     GetSDKDirectoryForLatestOSVersion ();
    137 
    138     const SDKDirectoryInfo *
    139     GetSDKDirectoryForCurrentOSVersion ();
    140 
    141     static lldb_private::FileSpec::EnumerateDirectoryResult
    142     GetContainedFilesIntoVectorOfStringsCallback (void *baton,
    143                                                   lldb_private::FileSpec::FileType file_type,
    144                                                   const lldb_private::FileSpec &file_spec);
    145 
    146     uint32_t
    147     FindFileInAllSDKs (const char *platform_file_path,
    148                        lldb_private::FileSpecList &file_list);
    149 
    150     bool
    151     GetFileInSDK (const char *platform_file_path,
    152                   uint32_t sdk_idx,
    153                   lldb_private::FileSpec &local_file);
    154 
    155     bool
    156     GetFileInSDKRoot (const char *platform_file_path,
    157                       const char *sdkroot_path,
    158                       bool symbols_dirs_only,
    159                       lldb_private::FileSpec &local_file);
    160 
    161     uint32_t
    162     FindFileInAllSDKs (const lldb_private::FileSpec &platform_file,
    163                        lldb_private::FileSpecList &file_list);
    164 
    165 private:
    166     DISALLOW_COPY_AND_ASSIGN (PlatformRemoteiOS);
    167 
    168 };
    169 
    170 #endif  // liblldb_PlatformRemoteiOS_h_
    171