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