xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.h (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1*f6aab3d8Srobert //===-- PlatformQemuUser.h ------------------------------------------------===//
2*f6aab3d8Srobert //
3*f6aab3d8Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*f6aab3d8Srobert // See https://llvm.org/LICENSE.txt for license information.
5*f6aab3d8Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*f6aab3d8Srobert //
7*f6aab3d8Srobert //===----------------------------------------------------------------------===//
8*f6aab3d8Srobert 
9*f6aab3d8Srobert #ifndef LLDB_SOURCE_PLUGINS_PLATFORM_QEMUUSER_PLATFORMQEMUUSER_H
10*f6aab3d8Srobert #define LLDB_SOURCE_PLUGINS_PLATFORM_QEMUUSER_PLATFORMQEMUUSER_H
11*f6aab3d8Srobert 
12*f6aab3d8Srobert #include "lldb/Host/Host.h"
13*f6aab3d8Srobert #include "lldb/Host/HostInfo.h"
14*f6aab3d8Srobert #include "lldb/Target/Platform.h"
15*f6aab3d8Srobert 
16*f6aab3d8Srobert namespace lldb_private {
17*f6aab3d8Srobert 
18*f6aab3d8Srobert class PlatformQemuUser : public Platform {
19*f6aab3d8Srobert public:
20*f6aab3d8Srobert   static void Initialize();
21*f6aab3d8Srobert   static void Terminate();
22*f6aab3d8Srobert 
GetPluginNameStatic()23*f6aab3d8Srobert   static llvm::StringRef GetPluginNameStatic() { return "qemu-user"; }
24*f6aab3d8Srobert   static llvm::StringRef GetPluginDescriptionStatic();
25*f6aab3d8Srobert 
GetPluginName()26*f6aab3d8Srobert   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
GetDescription()27*f6aab3d8Srobert   llvm::StringRef GetDescription() override {
28*f6aab3d8Srobert     return GetPluginDescriptionStatic();
29*f6aab3d8Srobert   }
30*f6aab3d8Srobert 
GetUserIDResolver()31*f6aab3d8Srobert   UserIDResolver &GetUserIDResolver() override {
32*f6aab3d8Srobert     return HostInfo::GetUserIDResolver();
33*f6aab3d8Srobert   }
34*f6aab3d8Srobert 
35*f6aab3d8Srobert   std::vector<ArchSpec>
36*f6aab3d8Srobert   GetSupportedArchitectures(const ArchSpec &process_host_arch) override;
37*f6aab3d8Srobert 
38*f6aab3d8Srobert   lldb::ProcessSP DebugProcess(ProcessLaunchInfo &launch_info,
39*f6aab3d8Srobert                                Debugger &debugger, Target &target,
40*f6aab3d8Srobert                                Status &error) override;
41*f6aab3d8Srobert 
Attach(ProcessAttachInfo & attach_info,Debugger & debugger,Target * target,Status & status)42*f6aab3d8Srobert   lldb::ProcessSP Attach(ProcessAttachInfo &attach_info, Debugger &debugger,
43*f6aab3d8Srobert                          Target *target, Status &status) override {
44*f6aab3d8Srobert     status.SetErrorString("Not supported");
45*f6aab3d8Srobert     return nullptr;
46*f6aab3d8Srobert   }
47*f6aab3d8Srobert 
FindProcesses(const ProcessInstanceInfoMatch & match_info,ProcessInstanceInfoList & proc_infos)48*f6aab3d8Srobert   uint32_t FindProcesses(const ProcessInstanceInfoMatch &match_info,
49*f6aab3d8Srobert                          ProcessInstanceInfoList &proc_infos) override {
50*f6aab3d8Srobert     return 0;
51*f6aab3d8Srobert   }
52*f6aab3d8Srobert 
GetProcessInfo(lldb::pid_t pid,ProcessInstanceInfo & proc_info)53*f6aab3d8Srobert   bool GetProcessInfo(lldb::pid_t pid,
54*f6aab3d8Srobert                       ProcessInstanceInfo &proc_info) override {
55*f6aab3d8Srobert     return false;
56*f6aab3d8Srobert   }
57*f6aab3d8Srobert 
IsConnected()58*f6aab3d8Srobert   bool IsConnected() const override { return true; }
59*f6aab3d8Srobert 
CalculateTrapHandlerSymbolNames()60*f6aab3d8Srobert   void CalculateTrapHandlerSymbolNames() override {}
61*f6aab3d8Srobert 
62*f6aab3d8Srobert   Environment GetEnvironment() override;
63*f6aab3d8Srobert 
GetMmapArgumentList(const ArchSpec & arch,lldb::addr_t addr,lldb::addr_t length,unsigned prot,unsigned flags,lldb::addr_t fd,lldb::addr_t offset)64*f6aab3d8Srobert   MmapArgList GetMmapArgumentList(const ArchSpec &arch, lldb::addr_t addr,
65*f6aab3d8Srobert                                   lldb::addr_t length, unsigned prot,
66*f6aab3d8Srobert                                   unsigned flags, lldb::addr_t fd,
67*f6aab3d8Srobert                                   lldb::addr_t offset) override {
68*f6aab3d8Srobert     return Platform::GetHostPlatform()->GetMmapArgumentList(
69*f6aab3d8Srobert         arch, addr, length, prot, flags, fd, offset);
70*f6aab3d8Srobert   }
71*f6aab3d8Srobert 
72*f6aab3d8Srobert private:
73*f6aab3d8Srobert   static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch);
74*f6aab3d8Srobert   static void DebuggerInitialize(Debugger &debugger);
75*f6aab3d8Srobert 
PlatformQemuUser()76*f6aab3d8Srobert   PlatformQemuUser() : Platform(/*is_host=*/true) {}
77*f6aab3d8Srobert };
78*f6aab3d8Srobert 
79*f6aab3d8Srobert } // namespace lldb_private
80*f6aab3d8Srobert 
81*f6aab3d8Srobert #endif // LLDB_SOURCE_PLUGINS_PLATFORM_QEMUUSER_PLATFORMQEMUUSER_H
82