LLDB  mainline
RemoteAwarePlatform.h
Go to the documentation of this file.
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 
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;
70 
71  Status RunShellCommand(const char *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  const char *GetHostname() override;
79 
80  bool IsConnected() const override;
81 
82  bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info) override;
84  ProcessInstanceInfoList &process_infos) override;
85 
86  lldb::ProcessSP ConnectProcess(llvm::StringRef connect_url,
87  llvm::StringRef plugin_name,
88  Debugger &debugger, Target *target,
89  Status &error) override;
90 
91  Status LaunchProcess(ProcessLaunchInfo &launch_info) override;
92 
93  Status KillProcess(const lldb::pid_t pid) override;
94 
95 protected:
96  lldb::PlatformSP m_remote_platform_sp;
97 };
98 
99 } // namespace lldb_private
100 
101 #endif // LLDB_TARGET_REMOTEAWAREPLATFORM_H
A class to manage flag bits.
Definition: Debugger.h:70
A class that represents a running process on the host machine.
uint64_t WriteFile(lldb::user_id_t fd, uint64_t offset, const void *src, uint64_t src_len, Status &error) override
std::vector< ProcessInstanceInfo > ProcessInstanceInfoList
Definition: Host.h:30
Status CreateSymlink(const FileSpec &src, const FileSpec &dst) override
bool GetRemoteOSKernelDescription(std::string &s) override
lldb::user_id_t GetFileSize(const FileSpec &file_spec) override
Status LaunchProcess(ProcessLaunchInfo &launch_info) override
Launch a new process on a platform, not necessarily for debugging, it could be just for running the p...
uint32_t FindProcesses(const ProcessInstanceInfoMatch &match_info, ProcessInstanceInfoList &process_infos) override
Attach to an existing process by process name.
Platform(bool is_host_platform)
Default Constructor.
Definition: Platform.cpp:389
A file utility class.
Definition: FileSpec.h:56
An architecture specification class.
Definition: ArchSpec.h:33
Status MakeDirectory(const FileSpec &file_spec, uint32_t mode) override
Status ResolveExecutable(const ModuleSpec &module_spec, lldb::ModuleSP &module_sp, const FileSpecList *module_search_paths_ptr) override
Find a platform plugin for a given process.
bool CloseFile(lldb::user_id_t fd, Status &error) override
bool CalculateMD5(const FileSpec &file_spec, uint64_t &low, uint64_t &high) override
bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info) override
Status Unlink(const FileSpec &file_spec) override
uint64_t user_id_t
Definition: lldb-types.h:84
uint64_t ReadFile(lldb::user_id_t fd, uint64_t offset, void *dst, uint64_t dst_len, Status &error) override
bool GetRemoteOSBuildString(std::string &s) override
lldb::ProcessSP ConnectProcess(llvm::StringRef connect_url, llvm::StringRef plugin_name, Debugger &debugger, Target *target, Status &error) override
bool SetRemoteWorkingDirectory(const FileSpec &working_dir) override
A plug-in interface definition class for debug platform that includes many platform abilities such as...
Definition: Platform.h:72
lldb_private::Environment GetEnvironment() override
bool GetFileExists(const FileSpec &file_spec) override
Status GetFileWithUUID(const FileSpec &platform_file, const UUID *uuid, FileSpec &local_file) override
Locate a file for a platform.
An abstract interface for things that know how to map numeric user/group IDs into names...
Status KillProcess(const lldb::pid_t pid) override
Kill process on a platform.
UserIDResolver & GetUserIDResolver() override
bool GetModuleSpec(const FileSpec &module_file_spec, const ArchSpec &arch, ModuleSpec &module_spec) override
uint64_t pid_t
Definition: lldb-types.h:85
A base class for platforms which automatically want to be able to forward operations to a remote plat...
Status GetFilePermissions(const FileSpec &file_spec, uint32_t &file_permissions) override
lldb::user_id_t OpenFile(const FileSpec &file_spec, File::OpenOptions flags, uint32_t mode, Status &error) override
Status RunShellCommand(const char *command, const FileSpec &working_dir, int *status_ptr, int *signo_ptr, std::string *command_output, const Timeout< std::micro > &timeout) override
An error handling class.
Definition: Status.h:44
Status SetFilePermissions(const FileSpec &file_spec, uint32_t file_permissions) override