1061da546Spatrick //===-- PlatformLinux.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_LINUX_PLATFORMLINUX_H 10dda28197Spatrick #define LLDB_SOURCE_PLUGINS_PLATFORM_LINUX_PLATFORMLINUX_H 11061da546Spatrick 12061da546Spatrick #include "Plugins/Platform/POSIX/PlatformPOSIX.h" 13*f6aab3d8Srobert #include "Plugins/TypeSystem/Clang/TypeSystemClang.h" 14061da546Spatrick 15061da546Spatrick namespace lldb_private { 16061da546Spatrick namespace platform_linux { 17061da546Spatrick 18061da546Spatrick class PlatformLinux : public PlatformPOSIX { 19061da546Spatrick public: 20061da546Spatrick PlatformLinux(bool is_host); 21061da546Spatrick 22061da546Spatrick static void Initialize(); 23061da546Spatrick 24061da546Spatrick static void Terminate(); 25061da546Spatrick 26061da546Spatrick // lldb_private::PluginInterface functions 27061da546Spatrick static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch); 28061da546Spatrick GetPluginNameStatic(bool is_host)29*f6aab3d8Srobert static llvm::StringRef GetPluginNameStatic(bool is_host) { 30*f6aab3d8Srobert return is_host ? Platform::GetHostPlatformName() : "remote-linux"; 31*f6aab3d8Srobert } 32061da546Spatrick 33*f6aab3d8Srobert static llvm::StringRef GetPluginDescriptionStatic(bool is_host); 34061da546Spatrick GetPluginName()35*f6aab3d8Srobert llvm::StringRef GetPluginName() override { 36*f6aab3d8Srobert return GetPluginNameStatic(IsHost()); 37*f6aab3d8Srobert } 38061da546Spatrick 39061da546Spatrick // lldb_private::Platform functions GetDescription()40*f6aab3d8Srobert llvm::StringRef GetDescription() override { 41061da546Spatrick return GetPluginDescriptionStatic(IsHost()); 42061da546Spatrick } 43061da546Spatrick 44061da546Spatrick void GetStatus(Stream &strm) override; 45061da546Spatrick 46*f6aab3d8Srobert std::vector<ArchSpec> 47*f6aab3d8Srobert GetSupportedArchitectures(const ArchSpec &process_host_arch) override; 48061da546Spatrick 49be691f3bSpatrick uint32_t GetResumeCountForLaunchInfo(ProcessLaunchInfo &launch_info) override; 50061da546Spatrick 51061da546Spatrick bool CanDebugProcess() override; 52061da546Spatrick 53061da546Spatrick void CalculateTrapHandlerSymbolNames() override; 54061da546Spatrick 55*f6aab3d8Srobert lldb::UnwindPlanSP GetTrapHandlerUnwindPlan(const llvm::Triple &triple, 56*f6aab3d8Srobert ConstString name) override; 57*f6aab3d8Srobert 58061da546Spatrick MmapArgList GetMmapArgumentList(const ArchSpec &arch, lldb::addr_t addr, 59061da546Spatrick lldb::addr_t length, unsigned prot, 60061da546Spatrick unsigned flags, lldb::addr_t fd, 61061da546Spatrick lldb::addr_t offset) override; 62*f6aab3d8Srobert 63*f6aab3d8Srobert CompilerType GetSiginfoType(const llvm::Triple &triple) override; 64*f6aab3d8Srobert 65*f6aab3d8Srobert std::vector<ArchSpec> m_supported_architectures; 66*f6aab3d8Srobert 67*f6aab3d8Srobert private: 68*f6aab3d8Srobert std::mutex m_mutex; 69*f6aab3d8Srobert std::shared_ptr<TypeSystemClang> m_type_system; 70061da546Spatrick }; 71061da546Spatrick 72061da546Spatrick } // namespace platform_linux 73061da546Spatrick } // namespace lldb_private 74061da546Spatrick 75dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_PLATFORM_LINUX_PLATFORMLINUX_H 76