1 //===-- PlatformFreeBSD.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_SOURCE_PLUGINS_PLATFORM_FREEBSD_PLATFORMFREEBSD_H 10 #define LLDB_SOURCE_PLUGINS_PLATFORM_FREEBSD_PLATFORMFREEBSD_H 11 12 #include "Plugins/Platform/POSIX/PlatformPOSIX.h" 13 #include "Plugins/TypeSystem/Clang/TypeSystemClang.h" 14 15 namespace lldb_private { 16 namespace platform_freebsd { 17 18 class PlatformFreeBSD : public PlatformPOSIX { 19 public: 20 PlatformFreeBSD(bool is_host); 21 22 static void Initialize(); 23 24 static void Terminate(); 25 26 // lldb_private::PluginInterface functions 27 static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch); 28 29 static llvm::StringRef GetPluginNameStatic(bool is_host) { 30 return is_host ? Platform::GetHostPlatformName() : "remote-freebsd"; 31 } 32 33 static llvm::StringRef GetPluginDescriptionStatic(bool is_host); 34 35 llvm::StringRef GetPluginName() override { 36 return GetPluginNameStatic(IsHost()); 37 } 38 39 // lldb_private::Platform functions 40 llvm::StringRef GetDescription() override { 41 return GetPluginDescriptionStatic(IsHost()); 42 } 43 44 void GetStatus(Stream &strm) override; 45 46 std::vector<ArchSpec> 47 GetSupportedArchitectures(const ArchSpec &process_host_arch) override; 48 49 bool CanDebugProcess() override; 50 51 void CalculateTrapHandlerSymbolNames() override; 52 53 MmapArgList GetMmapArgumentList(const ArchSpec &arch, lldb::addr_t addr, 54 lldb::addr_t length, unsigned prot, 55 unsigned flags, lldb::addr_t fd, 56 lldb::addr_t offset) override; 57 58 CompilerType GetSiginfoType(const llvm::Triple &triple) override; 59 60 std::vector<ArchSpec> m_supported_architectures; 61 62 private: 63 std::mutex m_mutex; 64 std::shared_ptr<TypeSystemClang> m_type_system; 65 }; 66 67 } // namespace platform_freebsd 68 } // namespace lldb_private 69 70 #endif // LLDB_SOURCE_PLUGINS_PLATFORM_FREEBSD_PLATFORMFREEBSD_H 71