98 lines · c
1//===-- PlatformWindows.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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_PLATFORM_WINDOWS_PLATFORMWINDOWS_H10#define LLDB_SOURCE_PLUGINS_PLATFORM_WINDOWS_PLATFORMWINDOWS_H11 12#include "lldb/Target/RemoteAwarePlatform.h"13 14namespace lldb_private {15 16class PlatformWindows : public RemoteAwarePlatform {17public:18 PlatformWindows(bool is_host);19 20 static void Initialize();21 22 static void Terminate();23 24 // lldb_private::PluginInterface functions25 static lldb::PlatformSP CreateInstance(bool force,26 const lldb_private::ArchSpec *arch);27 28 static llvm::StringRef GetPluginNameStatic(bool is_host) {29 return is_host ? Platform::GetHostPlatformName() : "remote-windows";30 }31 32 static llvm::StringRef GetPluginDescriptionStatic(bool is_host);33 34 llvm::StringRef GetPluginName() override {35 return GetPluginNameStatic(IsHost());36 }37 38 // lldb_private::Platform functions39 llvm::StringRef GetDescription() override {40 return GetPluginDescriptionStatic(IsHost());41 }42 43 lldb_private::Status ConnectRemote(lldb_private::Args &args) override;44 45 lldb_private::Status DisconnectRemote() override;46 47 uint32_t DoLoadImage(lldb_private::Process *process,48 const lldb_private::FileSpec &remote_file,49 const std::vector<std::string> *paths,50 lldb_private::Status &error,51 lldb_private::FileSpec *loaded_path) override;52 53 lldb_private::Status UnloadImage(lldb_private::Process *process,54 uint32_t image_token) override;55 56 lldb::ProcessSP DebugProcess(lldb_private::ProcessLaunchInfo &launch_info,57 lldb_private::Debugger &debugger,58 lldb_private::Target &target,59 lldb_private::Status &error) override;60 61 lldb::ProcessSP Attach(lldb_private::ProcessAttachInfo &attach_info,62 lldb_private::Debugger &debugger,63 lldb_private::Target *target,64 lldb_private::Status &error) override;65 66 std::vector<ArchSpec>67 GetSupportedArchitectures(const ArchSpec &process_host_arch) override {68 return m_supported_architectures;69 }70 71 void GetStatus(lldb_private::Stream &strm) override;72 73 bool CanDebugProcess() override;74 75 // FIXME not sure what the _sigtramp equivalent would be on this platform76 void CalculateTrapHandlerSymbolNames() override {}77 78 ConstString GetFullNameForDylib(ConstString basename) override;79 80 size_t GetSoftwareBreakpointTrapOpcode(Target &target,81 BreakpointSite *bp_site) override;82 83 std::vector<ArchSpec> m_supported_architectures;84 85private:86 std::unique_ptr<lldb_private::UtilityFunction>87 MakeLoadImageUtilityFunction(lldb_private::ExecutionContext &context,88 lldb_private::Status &status);89 90 lldb_private::Status EvaluateLoaderExpression(lldb_private::Process *process,91 const char *expression,92 lldb::ValueObjectSP &value);93};94 95} // namespace lldb_private96 97#endif // LLDB_SOURCE_PLUGINS_PLATFORM_WINDOWS_PLATFORMWINDOWS_H98