1e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===-- PlatformLinux.h -----------------------------------------*- C++ -*-===// 2e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// 3e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// The LLVM Compiler Infrastructure 4e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// 5e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// This file is distributed under the University of Illinois Open Source 6e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// License. See LICENSE.TXT for details. 7e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// 8e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===----------------------------------------------------------------------===// 9e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 10e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#ifndef liblldb_PlatformLinux_h_ 11e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#define liblldb_PlatformLinux_h_ 12e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 13e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// C Includes 14e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// C++ Includes 15e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// Other libraries and framework includes 16e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// Project includes 17e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#include "lldb/Target/Platform.h" 18e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 19e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Claytonnamespace lldb_private { 20e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 21e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton class PlatformLinux : public Platform 22e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton { 23e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton public: 24e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 25e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton static void 26e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton Initialize (); 27e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 28e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton static void 29e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton Terminate (); 30e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 3148a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton PlatformLinux (bool is_host); 32e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 33e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton virtual 34e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton ~PlatformLinux(); 35e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 36e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton //------------------------------------------------------------ 37e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton // lldb_private::PluginInterface functions 38e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton //------------------------------------------------------------ 393600d497832c398ffafcba1935389125e15683a3Stephen Wilson static Platform * 40b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton CreateInstance (bool force, const lldb_private::ArchSpec *arch); 413600d497832c398ffafcba1935389125e15683a3Stephen Wilson 420e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton static lldb_private::ConstString 430e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton GetPluginNameStatic (bool is_host); 4448a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton 4548a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton static const char * 460e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton GetPluginDescriptionStatic (bool is_host); 473600d497832c398ffafcba1935389125e15683a3Stephen Wilson 480e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton virtual lldb_private::ConstString 490e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton GetPluginName(); 50e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 51e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton virtual uint32_t 52e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton GetPluginVersion() 53e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton { 54e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton return 1; 55e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton } 56e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 57e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton //------------------------------------------------------------ 58e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton // lldb_private::Platform functions 59e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton //------------------------------------------------------------ 60e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton virtual Error 61e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton ResolveExecutable (const FileSpec &exe_file, 62e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton const ArchSpec &arch, 63a605c64524e6bb1e43de4ca0ea95967a596f08ddGreg Clayton lldb::ModuleSP &module_sp, 64a605c64524e6bb1e43de4ca0ea95967a596f08ddGreg Clayton const FileSpecList *module_search_paths_ptr); 65e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 663600d497832c398ffafcba1935389125e15683a3Stephen Wilson virtual const char * 673600d497832c398ffafcba1935389125e15683a3Stephen Wilson GetDescription () 683600d497832c398ffafcba1935389125e15683a3Stephen Wilson { 6948a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton return GetPluginDescriptionStatic(IsHost()); 703600d497832c398ffafcba1935389125e15683a3Stephen Wilson } 713600d497832c398ffafcba1935389125e15683a3Stephen Wilson 723600d497832c398ffafcba1935389125e15683a3Stephen Wilson virtual void 733600d497832c398ffafcba1935389125e15683a3Stephen Wilson GetStatus (Stream &strm); 743600d497832c398ffafcba1935389125e15683a3Stephen Wilson 75e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton virtual Error 76f4aad907d1d186d6410575bb5d99fb76910c1fe9Stephen Wilson GetFile (const FileSpec &platform_file, 77f4aad907d1d186d6410575bb5d99fb76910c1fe9Stephen Wilson const UUID* uuid, FileSpec &local_file); 78e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 79e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton virtual bool 800b0e3fc7fc077a79293f6780fc63afa4ab787e83Johnny Chen GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &proc_info); 81e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 82e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton virtual bool 83e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch); 84e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 853600d497832c398ffafcba1935389125e15683a3Stephen Wilson virtual size_t 863600d497832c398ffafcba1935389125e15683a3Stephen Wilson GetSoftwareBreakpointTrapOpcode (Target &target, 873600d497832c398ffafcba1935389125e15683a3Stephen Wilson BreakpointSite *bp_site); 883600d497832c398ffafcba1935389125e15683a3Stephen Wilson 8948a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton virtual lldb_private::Error 9048a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton LaunchProcess (lldb_private::ProcessLaunchInfo &launch_info); 9148a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton 920b0e3fc7fc077a79293f6780fc63afa4ab787e83Johnny Chen virtual lldb::ProcessSP 930a66c059da5a4d91aa81c2bbe5512a96e0817c34Peter Collingbourne Attach(ProcessAttachInfo &attach_info, Debugger &debugger, 940a66c059da5a4d91aa81c2bbe5512a96e0817c34Peter Collingbourne Target *target, Listener &listener, Error &error); 950b0e3fc7fc077a79293f6780fc63afa4ab787e83Johnny Chen 967e9964783acae183c23a7ea470cedd64472eb233Johnny Chen // Linux processes can not be launched by spawning and attaching. 97df2ac386095d5bc1953fb1216852d452d40d5c72Greg Clayton virtual bool 98df2ac386095d5bc1953fb1216852d452d40d5c72Greg Clayton CanDebugProcess () 99df2ac386095d5bc1953fb1216852d452d40d5c72Greg Clayton { 100df2ac386095d5bc1953fb1216852d452d40d5c72Greg Clayton return false; 101df2ac386095d5bc1953fb1216852d452d40d5c72Greg Clayton } 102df2ac386095d5bc1953fb1216852d452d40d5c72Greg Clayton 103e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton protected: 10448a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton lldb::PlatformSP m_remote_platform_sp; // Allow multiple ways to connect to a remote darwin OS 105e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 106e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton private: 107e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton DISALLOW_COPY_AND_ASSIGN (PlatformLinux); 108e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton }; 109e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton} // namespace lldb_private 110e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 111e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#endif // liblldb_PlatformLinux_h_ 112