1 //===-- PlatformWindows.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_PlatformWindows_h_ 11 #define liblldb_PlatformWindows_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/Target/Platform.h" 18 19 namespace lldb_private 20 { 21 22 class PlatformWindows : public Platform 23 { 24 public: 25 PlatformWindows(bool is_host); 26 27 ~PlatformWindows() override; 28 29 static void 30 Initialize(); 31 32 static void 33 Terminate(); 34 35 //------------------------------------------------------------ 36 // lldb_private::PluginInterface functions 37 //------------------------------------------------------------ 38 static lldb::PlatformSP 39 CreateInstance (bool force, const lldb_private::ArchSpec *arch); 40 41 static lldb_private::ConstString 42 GetPluginNameStatic(bool is_host); 43 44 static const char * 45 GetPluginDescriptionStatic(bool is_host); 46 47 lldb_private::ConstString 48 GetPluginName() override; 49 50 uint32_t 51 GetPluginVersion() override 52 { 53 return 1; 54 } 55 56 //------------------------------------------------------------ 57 // lldb_private::Platform functions 58 //------------------------------------------------------------ 59 bool 60 GetModuleSpec (const lldb_private::FileSpec& module_file_spec, 61 const lldb_private::ArchSpec& arch, 62 lldb_private::ModuleSpec &module_spec) override; 63 64 Error 65 ResolveExecutable(const lldb_private::ModuleSpec &module_spec, 66 lldb::ModuleSP &module_sp, 67 const FileSpecList *module_search_paths_ptr) override; 68 69 const char * 70 GetDescription() override 71 { 72 return GetPluginDescriptionStatic(IsHost()); 73 } 74 75 size_t 76 GetSoftwareBreakpointTrapOpcode(lldb_private::Target &target, 77 lldb_private::BreakpointSite *bp_site) override; 78 79 bool 80 GetRemoteOSVersion() override; 81 82 bool 83 GetRemoteOSBuildString(std::string &s) override; 84 85 bool 86 GetRemoteOSKernelDescription(std::string &s) override; 87 88 // Remote Platform subclasses need to override this function 89 lldb_private::ArchSpec 90 GetRemoteSystemArchitecture() override; 91 92 bool 93 IsConnected() const override; 94 95 lldb_private::Error 96 ConnectRemote(lldb_private::Args& args) override; 97 98 lldb_private::Error 99 DisconnectRemote() override; 100 101 const char * 102 GetHostname() override; 103 104 const char * 105 GetUserName(uint32_t uid) override; 106 107 const char * 108 GetGroupName(uint32_t gid) override; 109 110 bool 111 GetProcessInfo(lldb::pid_t pid, 112 lldb_private::ProcessInstanceInfo &proc_info) override; 113 114 uint32_t 115 FindProcesses(const lldb_private::ProcessInstanceInfoMatch &match_info, 116 lldb_private::ProcessInstanceInfoList &process_infos) override; 117 118 lldb_private::Error 119 LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) override; 120 121 lldb::ProcessSP 122 DebugProcess(lldb_private::ProcessLaunchInfo &launch_info, lldb_private::Debugger &debugger, 123 lldb_private::Target *target, lldb_private::Error &error) override; 124 125 lldb::ProcessSP 126 Attach(lldb_private::ProcessAttachInfo &attach_info, lldb_private::Debugger &debugger, 127 lldb_private::Target *target, lldb_private::Error &error) override; 128 129 lldb_private::Error 130 GetFileWithUUID(const lldb_private::FileSpec &platform_file, 131 const lldb_private::UUID* uuid, lldb_private::FileSpec &local_file) override; 132 133 lldb_private::Error 134 GetSharedModule(const lldb_private::ModuleSpec &module_spec, 135 lldb_private::Process* process, 136 lldb::ModuleSP &module_sp, 137 const lldb_private::FileSpecList *module_search_paths_ptr, 138 lldb::ModuleSP *old_module_sp_ptr, 139 bool *did_create_ptr) override; 140 141 bool 142 GetSupportedArchitectureAtIndex(uint32_t idx, lldb_private::ArchSpec &arch) override; 143 144 void 145 GetStatus(lldb_private::Stream &strm) override; 146 147 bool CanDebugProcess() override; 148 149 size_t GetEnvironment(StringList &env) override; 150 151 // FIXME not sure what the _sigtramp equivalent would be on this platform 152 void 153 CalculateTrapHandlerSymbolNames () override 154 { 155 } 156 157 ConstString 158 GetFullNameForDylib (ConstString basename) override; 159 160 protected: 161 lldb::PlatformSP m_remote_platform_sp; 162 163 private: 164 DISALLOW_COPY_AND_ASSIGN (PlatformWindows); 165 }; 166 167 } // namespace lldb_private 168 169 #endif // liblldb_PlatformWindows_h_ 170