1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
//===-- PlatformWindows.h ---------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_PlatformWindows_h_
#define liblldb_PlatformWindows_h_
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Target/Platform.h"
namespace lldb_private {
class PlatformWindows : public Platform {
public:
PlatformWindows(bool is_host);
~PlatformWindows() override;
static void Initialize();
static void Terminate();
//------------------------------------------------------------
// lldb_private::PluginInterface functions
//------------------------------------------------------------
static lldb::PlatformSP CreateInstance(bool force,
const lldb_private::ArchSpec *arch);
static lldb_private::ConstString GetPluginNameStatic(bool is_host);
static const char *GetPluginDescriptionStatic(bool is_host);
lldb_private::ConstString GetPluginName() override;
uint32_t GetPluginVersion() override { return 1; }
//------------------------------------------------------------
// lldb_private::Platform functions
//------------------------------------------------------------
bool GetModuleSpec(const lldb_private::FileSpec &module_file_spec,
const lldb_private::ArchSpec &arch,
lldb_private::ModuleSpec &module_spec) override;
Status
ResolveExecutable(const lldb_private::ModuleSpec &module_spec,
lldb::ModuleSP &module_sp,
const FileSpecList *module_search_paths_ptr) override;
const char *GetDescription() override {
return GetPluginDescriptionStatic(IsHost());
}
bool GetRemoteOSVersion() override;
bool GetRemoteOSBuildString(std::string &s) override;
bool GetRemoteOSKernelDescription(std::string &s) override;
// Remote Platform subclasses need to override this function
lldb_private::ArchSpec GetRemoteSystemArchitecture() override;
bool IsConnected() const override;
lldb_private::Status ConnectRemote(lldb_private::Args &args) override;
lldb_private::Status DisconnectRemote() override;
const char *GetHostname() override;
const char *GetUserName(uint32_t uid) override;
const char *GetGroupName(uint32_t gid) override;
bool GetProcessInfo(lldb::pid_t pid,
lldb_private::ProcessInstanceInfo &proc_info) override;
uint32_t
FindProcesses(const lldb_private::ProcessInstanceInfoMatch &match_info,
lldb_private::ProcessInstanceInfoList &process_infos) override;
lldb_private::Status
LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) override;
lldb::ProcessSP DebugProcess(lldb_private::ProcessLaunchInfo &launch_info,
lldb_private::Debugger &debugger,
lldb_private::Target *target,
lldb_private::Status &error) override;
lldb::ProcessSP Attach(lldb_private::ProcessAttachInfo &attach_info,
lldb_private::Debugger &debugger,
lldb_private::Target *target,
lldb_private::Status &error) override;
lldb_private::Status
GetFileWithUUID(const lldb_private::FileSpec &platform_file,
const lldb_private::UUID *uuid,
lldb_private::FileSpec &local_file) override;
lldb_private::Status
GetSharedModule(const lldb_private::ModuleSpec &module_spec,
lldb_private::Process *process, lldb::ModuleSP &module_sp,
const lldb_private::FileSpecList *module_search_paths_ptr,
lldb::ModuleSP *old_module_sp_ptr,
bool *did_create_ptr) override;
bool GetSupportedArchitectureAtIndex(uint32_t idx,
lldb_private::ArchSpec &arch) override;
void GetStatus(lldb_private::Stream &strm) override;
bool CanDebugProcess() override;
size_t GetEnvironment(StringList &env) override;
// FIXME not sure what the _sigtramp equivalent would be on this platform
void CalculateTrapHandlerSymbolNames() override {}
ConstString GetFullNameForDylib(ConstString basename) override;
protected:
lldb::PlatformSP m_remote_platform_sp;
private:
DISALLOW_COPY_AND_ASSIGN(PlatformWindows);
};
} // namespace lldb_private
#endif // liblldb_PlatformWindows_h_
|