1061da546Spatrick //===-- PlatformPOSIX.h -----------------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9dda28197Spatrick #ifndef LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H 10dda28197Spatrick #define LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H 11061da546Spatrick 12061da546Spatrick #include <map> 13061da546Spatrick #include <memory> 14061da546Spatrick 15061da546Spatrick #include "lldb/Interpreter/Options.h" 16061da546Spatrick #include "lldb/Target/RemoteAwarePlatform.h" 17061da546Spatrick 18061da546Spatrick class PlatformPOSIX : public lldb_private::RemoteAwarePlatform { 19061da546Spatrick public: 20061da546Spatrick PlatformPOSIX(bool is_host); 21061da546Spatrick 22061da546Spatrick ~PlatformPOSIX() override; 23061da546Spatrick 24061da546Spatrick // lldb_private::Platform functions 25061da546Spatrick 26061da546Spatrick lldb_private::OptionGroupOptions * 27061da546Spatrick GetConnectionOptions(lldb_private::CommandInterpreter &interpreter) override; 28061da546Spatrick 29061da546Spatrick lldb_private::Status PutFile(const lldb_private::FileSpec &source, 30061da546Spatrick const lldb_private::FileSpec &destination, 31061da546Spatrick uint32_t uid = UINT32_MAX, 32061da546Spatrick uint32_t gid = UINT32_MAX) override; 33061da546Spatrick 34061da546Spatrick lldb_private::Status 35061da546Spatrick GetFile(const lldb_private::FileSpec &source, 36061da546Spatrick const lldb_private::FileSpec &destination) override; 37061da546Spatrick 38061da546Spatrick const lldb::UnixSignalsSP &GetRemoteUnixSignals() override; 39061da546Spatrick 40061da546Spatrick lldb::ProcessSP Attach(lldb_private::ProcessAttachInfo &attach_info, 41061da546Spatrick lldb_private::Debugger &debugger, 42061da546Spatrick lldb_private::Target *target, // Can be nullptr, if 43061da546Spatrick // nullptr create a new 44061da546Spatrick // target, else use 45061da546Spatrick // existing one 46061da546Spatrick lldb_private::Status &error) override; 47061da546Spatrick 48061da546Spatrick lldb::ProcessSP DebugProcess(lldb_private::ProcessLaunchInfo &launch_info, 49061da546Spatrick lldb_private::Debugger &debugger, 50*f6aab3d8Srobert lldb_private::Target &target, 51061da546Spatrick lldb_private::Status &error) override; 52061da546Spatrick 53061da546Spatrick std::string GetPlatformSpecificConnectionInformation() override; 54061da546Spatrick 55061da546Spatrick void CalculateTrapHandlerSymbolNames() override; 56061da546Spatrick 57061da546Spatrick lldb_private::Status ConnectRemote(lldb_private::Args &args) override; 58061da546Spatrick 59061da546Spatrick lldb_private::Status DisconnectRemote() override; 60061da546Spatrick 61061da546Spatrick uint32_t DoLoadImage(lldb_private::Process *process, 62061da546Spatrick const lldb_private::FileSpec &remote_file, 63061da546Spatrick const std::vector<std::string> *paths, 64061da546Spatrick lldb_private::Status &error, 65061da546Spatrick lldb_private::FileSpec *loaded_image) override; 66061da546Spatrick 67061da546Spatrick lldb_private::Status UnloadImage(lldb_private::Process *process, 68061da546Spatrick uint32_t image_token) override; 69061da546Spatrick 70061da546Spatrick lldb_private::ConstString GetFullNameForDylib(lldb_private::ConstString basename) override; 71061da546Spatrick 72061da546Spatrick protected: 73061da546Spatrick std::unique_ptr<lldb_private::OptionGroupPlatformRSync> 74061da546Spatrick m_option_group_platform_rsync; 75061da546Spatrick std::unique_ptr<lldb_private::OptionGroupPlatformSSH> 76061da546Spatrick m_option_group_platform_ssh; 77061da546Spatrick std::unique_ptr<lldb_private::OptionGroupPlatformCaching> 78061da546Spatrick m_option_group_platform_caching; 79061da546Spatrick 80061da546Spatrick std::map<lldb_private::CommandInterpreter *, 81061da546Spatrick std::unique_ptr<lldb_private::OptionGroupOptions>> 82061da546Spatrick m_options; 83061da546Spatrick 84061da546Spatrick lldb_private::Status 85061da546Spatrick EvaluateLibdlExpression(lldb_private::Process *process, const char *expr_cstr, 86061da546Spatrick llvm::StringRef expr_prefix, 87061da546Spatrick lldb::ValueObjectSP &result_valobj_sp); 88061da546Spatrick 89061da546Spatrick std::unique_ptr<lldb_private::UtilityFunction> 90061da546Spatrick MakeLoadImageUtilityFunction(lldb_private::ExecutionContext &exe_ctx, 91061da546Spatrick lldb_private::Status &error); 92061da546Spatrick 93061da546Spatrick virtual 94061da546Spatrick llvm::StringRef GetLibdlFunctionDeclarations(lldb_private::Process *process); 95061da546Spatrick 96061da546Spatrick private: 97dda28197Spatrick PlatformPOSIX(const PlatformPOSIX &) = delete; 98dda28197Spatrick const PlatformPOSIX &operator=(const PlatformPOSIX &) = delete; 99061da546Spatrick }; 100061da546Spatrick 101dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_PLATFORM_POSIX_PLATFORMPOSIX_H 102