PlatformFreeBSD.h revision 269024
1//===-- PlatformFreeBSD.h -----------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef liblldb_PlatformFreeBSD_h_ 11#define liblldb_PlatformFreeBSD_h_ 12 13// C Includes 14// C++ Includes 15// Other libraries and framework includes 16// Project includes 17#include "lldb/Target/Platform.h" 18 19class PlatformFreeBSD : public lldb_private::Platform 20{ 21public: 22 // Mostly taken from PlatformDarwin and PlatformMacOSX 23 24 //------------------------------------------------------------ 25 // Class functions 26 //------------------------------------------------------------ 27 static lldb_private::Platform* 28 CreateInstance (bool force, const lldb_private::ArchSpec *arch); 29 30 static void 31 Initialize (); 32 33 static void 34 Terminate (); 35 36 static lldb_private::ConstString 37 GetPluginNameStatic (bool is_host); 38 39 static const char * 40 GetDescriptionStatic (bool is_host); 41 42 //------------------------------------------------------------ 43 // Class Methods 44 //------------------------------------------------------------ 45 PlatformFreeBSD (bool is_host); 46 47 virtual 48 ~PlatformFreeBSD(); 49 50 //------------------------------------------------------------ 51 // lldb_private::PluginInterface functions 52 //------------------------------------------------------------ 53 virtual lldb_private::ConstString 54 GetPluginName() 55 { 56 return GetPluginNameStatic (IsHost()); 57 } 58 59 virtual uint32_t 60 GetPluginVersion() 61 { 62 return 1; 63 } 64 65 virtual const char * 66 GetDescription () 67 { 68 return GetDescriptionStatic(IsHost()); 69 } 70 71 //------------------------------------------------------------ 72 // lldb_private::Platform functions 73 //------------------------------------------------------------ 74 virtual lldb_private::Error 75 RunShellCommand (const char *command, 76 const char *working_dir, 77 int *status_ptr, 78 int *signo_ptr, 79 std::string *command_output, 80 uint32_t timeout_sec); 81 82 virtual lldb_private::Error 83 ResolveExecutable (const lldb_private::FileSpec &exe_file, 84 const lldb_private::ArchSpec &arch, 85 lldb::ModuleSP &module_sp, 86 const lldb_private::FileSpecList *module_search_paths_ptr); 87 88 virtual size_t 89 GetSoftwareBreakpointTrapOpcode (lldb_private::Target &target, 90 lldb_private::BreakpointSite *bp_site); 91 92 virtual bool 93 GetRemoteOSVersion (); 94 95 virtual bool 96 GetRemoteOSBuildString (std::string &s); 97 98 virtual bool 99 GetRemoteOSKernelDescription (std::string &s); 100 101 // Remote Platform subclasses need to override this function 102 virtual lldb_private::ArchSpec 103 GetRemoteSystemArchitecture (); 104 105 virtual bool 106 IsConnected () const; 107 108 virtual lldb_private::Error 109 ConnectRemote (lldb_private::Args& args); 110 111 virtual lldb_private::Error 112 DisconnectRemote (); 113 114 virtual const char * 115 GetHostname (); 116 117 virtual const char * 118 GetUserName (uint32_t uid); 119 120 virtual const char * 121 GetGroupName (uint32_t gid); 122 123 virtual bool 124 GetProcessInfo (lldb::pid_t pid, 125 lldb_private::ProcessInstanceInfo &proc_info); 126 127 virtual uint32_t 128 FindProcesses (const lldb_private::ProcessInstanceInfoMatch &match_info, 129 lldb_private::ProcessInstanceInfoList &process_infos); 130 131 virtual lldb_private::Error 132 LaunchProcess (lldb_private::ProcessLaunchInfo &launch_info); 133 134 virtual lldb::ProcessSP 135 Attach(lldb_private::ProcessAttachInfo &attach_info, 136 lldb_private::Debugger &debugger, 137 lldb_private::Target *target, 138 lldb_private::Listener &listener, 139 lldb_private::Error &error); 140 141 // FreeBSD processes can not be launched by spawning and attaching. 142 virtual bool 143 CanDebugProcess () { return false; } 144 145 // Only on PlatformMacOSX: 146 virtual lldb_private::Error 147 GetFileWithUUID (const lldb_private::FileSpec &platform_file, 148 const lldb_private::UUID* uuid, lldb_private::FileSpec &local_file); 149 150 lldb_private::Error 151 GetSharedModule (const lldb_private::ModuleSpec &module_spec, 152 lldb::ModuleSP &module_sp, 153 const lldb_private::FileSpecList *module_search_paths_ptr, 154 lldb::ModuleSP *old_module_sp_ptr, 155 bool *did_create_ptr); 156 157 virtual bool 158 GetSupportedArchitectureAtIndex (uint32_t idx, lldb_private::ArchSpec &arch); 159 160 virtual void 161 GetStatus (lldb_private::Stream &strm); 162 163 virtual void 164 CalculateTrapHandlerSymbolNames (); 165 166protected: 167 lldb::PlatformSP m_remote_platform_sp; // Allow multiple ways to connect to a remote freebsd OS 168 169private: 170 DISALLOW_COPY_AND_ASSIGN (PlatformFreeBSD); 171}; 172 173#endif // liblldb_PlatformFreeBSD_h_ 174