102 lines · c
1//===-- PlatformPOSIX.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_POSIX_PLATFORMPOSIX_H10#define LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H11 12#include <map>13#include <memory>14 15#include "lldb/Interpreter/Options.h"16#include "lldb/Target/RemoteAwarePlatform.h"17 18class PlatformPOSIX : public lldb_private::RemoteAwarePlatform {19public:20 PlatformPOSIX(bool is_host);21 22 ~PlatformPOSIX() override;23 24 // lldb_private::Platform functions25 26 lldb_private::OptionGroupOptions *27 GetConnectionOptions(lldb_private::CommandInterpreter &interpreter) override;28 29 lldb_private::Status PutFile(const lldb_private::FileSpec &source,30 const lldb_private::FileSpec &destination,31 uint32_t uid = UINT32_MAX,32 uint32_t gid = UINT32_MAX) override;33 34 lldb_private::Status35 GetFile(const lldb_private::FileSpec &source,36 const lldb_private::FileSpec &destination) override;37 38 const lldb::UnixSignalsSP &GetRemoteUnixSignals() override;39 40 lldb::ProcessSP Attach(lldb_private::ProcessAttachInfo &attach_info,41 lldb_private::Debugger &debugger,42 lldb_private::Target *target, // Can be nullptr, if43 // nullptr create a new44 // target, else use45 // existing one46 lldb_private::Status &error) override;47 48 lldb::ProcessSP DebugProcess(lldb_private::ProcessLaunchInfo &launch_info,49 lldb_private::Debugger &debugger,50 lldb_private::Target &target,51 lldb_private::Status &error) override;52 53 std::string GetPlatformSpecificConnectionInformation() override;54 55 void CalculateTrapHandlerSymbolNames() override;56 57 lldb_private::Status ConnectRemote(lldb_private::Args &args) override;58 59 lldb_private::Status DisconnectRemote() override;60 61 uint32_t DoLoadImage(lldb_private::Process *process,62 const lldb_private::FileSpec &remote_file,63 const std::vector<std::string> *paths,64 lldb_private::Status &error,65 lldb_private::FileSpec *loaded_image) override;66 67 lldb_private::Status UnloadImage(lldb_private::Process *process,68 uint32_t image_token) override;69 70 lldb_private::ConstString GetFullNameForDylib(lldb_private::ConstString basename) override;71 72protected:73 std::unique_ptr<lldb_private::OptionGroupPlatformRSync>74 m_option_group_platform_rsync;75 std::unique_ptr<lldb_private::OptionGroupPlatformSSH>76 m_option_group_platform_ssh;77 std::unique_ptr<lldb_private::OptionGroupPlatformCaching>78 m_option_group_platform_caching;79 80 std::map<lldb_private::CommandInterpreter *,81 std::unique_ptr<lldb_private::OptionGroupOptions>>82 m_options;83 84 lldb_private::Status85 EvaluateLibdlExpression(lldb_private::Process *process, const char *expr_cstr,86 llvm::StringRef expr_prefix,87 lldb::ValueObjectSP &result_valobj_sp);88 89 std::unique_ptr<lldb_private::UtilityFunction>90 MakeLoadImageUtilityFunction(lldb_private::ExecutionContext &exe_ctx,91 lldb_private::Status &error);92 93 virtual94 llvm::StringRef GetLibdlFunctionDeclarations(lldb_private::Process *process);95 96private:97 PlatformPOSIX(const PlatformPOSIX &) = delete;98 const PlatformPOSIX &operator=(const PlatformPOSIX &) = delete;99};100 101#endif // LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H102