brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 771133f Raw
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