1 //===-- RemoteAwarePlatform.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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_TARGET_REMOTEAWAREPLATFORM_H 10 #define LLDB_TARGET_REMOTEAWAREPLATFORM_H 11 12 #include "lldb/Target/Platform.h" 13 14 namespace lldb_private { 15 16 /// A base class for platforms which automatically want to be able to forward 17 /// operations to a remote platform instance (such as PlatformRemoteGDBServer). 18 class RemoteAwarePlatform : public Platform { 19 public: 20 using Platform::Platform; 21 22 bool GetModuleSpec(const FileSpec &module_file_spec, const ArchSpec &arch, 23 ModuleSpec &module_spec) override; 24 25 Status 26 ResolveExecutable(const ModuleSpec &module_spec, lldb::ModuleSP &module_sp, 27 const FileSpecList *module_search_paths_ptr) override; 28 29 lldb::user_id_t OpenFile(const FileSpec &file_spec, File::OpenOptions flags, 30 uint32_t mode, Status &error) override; 31 32 bool CloseFile(lldb::user_id_t fd, Status &error) override; 33 34 uint64_t ReadFile(lldb::user_id_t fd, uint64_t offset, void *dst, 35 uint64_t dst_len, Status &error) override; 36 37 uint64_t WriteFile(lldb::user_id_t fd, uint64_t offset, const void *src, 38 uint64_t src_len, Status &error) override; 39 40 lldb::user_id_t GetFileSize(const FileSpec &file_spec) override; 41 42 Status CreateSymlink(const FileSpec &src, const FileSpec &dst) override; 43 44 bool GetFileExists(const FileSpec &file_spec) override; 45 46 Status Unlink(const FileSpec &file_spec) override; 47 48 FileSpec GetRemoteWorkingDirectory() override; 49 50 bool SetRemoteWorkingDirectory(const FileSpec &working_dir) override; 51 52 Status MakeDirectory(const FileSpec &file_spec, uint32_t mode) override; 53 54 Status GetFilePermissions(const FileSpec &file_spec, 55 uint32_t &file_permissions) override; 56 57 Status SetFilePermissions(const FileSpec &file_spec, 58 uint32_t file_permissions) override; 59 60 bool CalculateMD5(const FileSpec &file_spec, uint64_t &low, 61 uint64_t &high) override; 62 63 Status GetFileWithUUID(const FileSpec &platform_file, const UUID *uuid, 64 FileSpec &local_file) override; 65 66 bool GetRemoteOSVersion() override; 67 bool GetRemoteOSBuildString(std::string &s) override; 68 bool GetRemoteOSKernelDescription(std::string &s) override; 69 ArchSpec GetRemoteSystemArchitecture() override; 70 71 Status RunShellCommand(llvm::StringRef command, const FileSpec &working_dir, 72 int *status_ptr, int *signo_ptr, 73 std::string *command_output, 74 const Timeout<std::micro> &timeout) override; 75 76 Status RunShellCommand(llvm::StringRef interpreter, llvm::StringRef command, 77 const FileSpec &working_dir, int *status_ptr, 78 int *signo_ptr, std::string *command_output, 79 const Timeout<std::micro> &timeout) override; 80 81 const char *GetHostname() override; 82 UserIDResolver &GetUserIDResolver() override; 83 lldb_private::Environment GetEnvironment() override; 84 85 bool IsConnected() const override; 86 87 bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info) override; 88 uint32_t FindProcesses(const ProcessInstanceInfoMatch &match_info, 89 ProcessInstanceInfoList &process_infos) override; 90 91 lldb::ProcessSP ConnectProcess(llvm::StringRef connect_url, 92 llvm::StringRef plugin_name, 93 Debugger &debugger, Target *target, 94 Status &error) override; 95 96 Status LaunchProcess(ProcessLaunchInfo &launch_info) override; 97 98 Status KillProcess(const lldb::pid_t pid) override; 99 100 protected: 101 lldb::PlatformSP m_remote_platform_sp; 102 }; 103 104 } // namespace lldb_private 105 106 #endif // LLDB_TARGET_REMOTEAWAREPLATFORM_H 107