1 //===-- ProcessFreeBSD.cpp ----------------------------------------*- 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 // C Includes 11 #include <errno.h> 12 13 // C++ Includes 14 // Other libraries and framework includes 15 #include "lldb/Core/PluginManager.h" 16 #include "lldb/Core/State.h" 17 #include "lldb/Host/Host.h" 18 #include "lldb/Symbol/ObjectFile.h" 19 #include "lldb/Target/DynamicLoader.h" 20 #include "lldb/Target/Target.h" 21 22 #include "ProcessFreeBSD.h" 23 #include "ProcessPOSIXLog.h" 24 #include "Plugins/Process/Utility/InferiorCallPOSIX.h" 25 #include "ProcessMonitor.h" 26 #include "POSIXThread.h" 27 28 using namespace lldb; 29 using namespace lldb_private; 30 31 //------------------------------------------------------------------------------ 32 // Static functions. 33 34 lldb::ProcessSP 35 ProcessFreeBSD::CreateInstance(Target& target, 36 Listener &listener, 37 const FileSpec *crash_file_path) 38 { 39 lldb::ProcessSP process_sp; 40 if (crash_file_path == NULL) 41 process_sp.reset(new ProcessFreeBSD (target, listener)); 42 return process_sp; 43 } 44 45 void 46 ProcessFreeBSD::Initialize() 47 { 48 static bool g_initialized = false; 49 50 if (!g_initialized) 51 { 52 PluginManager::RegisterPlugin(GetPluginNameStatic(), 53 GetPluginDescriptionStatic(), 54 CreateInstance); 55 Log::Callbacks log_callbacks = { 56 ProcessPOSIXLog::DisableLog, 57 ProcessPOSIXLog::EnableLog, 58 ProcessPOSIXLog::ListLogCategories 59 }; 60 61 Log::RegisterLogChannel (ProcessFreeBSD::GetPluginNameStatic(), log_callbacks); 62 ProcessPOSIXLog::RegisterPluginName(GetPluginNameStatic()); 63 g_initialized = true; 64 } 65 } 66 67 lldb_private::ConstString 68 ProcessFreeBSD::GetPluginNameStatic() 69 { 70 static ConstString g_name("freebsd"); 71 return g_name; 72 } 73 74 const char * 75 ProcessFreeBSD::GetPluginDescriptionStatic() 76 { 77 return "Process plugin for FreeBSD"; 78 } 79 80 //------------------------------------------------------------------------------ 81 // ProcessInterface protocol. 82 83 lldb_private::ConstString 84 ProcessFreeBSD::GetPluginName() 85 { 86 return GetPluginNameStatic(); 87 } 88 89 uint32_t 90 ProcessFreeBSD::GetPluginVersion() 91 { 92 return 1; 93 } 94 95 void 96 ProcessFreeBSD::GetPluginCommandHelp(const char *command, Stream *strm) 97 { 98 } 99 100 Error 101 ProcessFreeBSD::ExecutePluginCommand(Args &command, Stream *strm) 102 { 103 return Error(1, eErrorTypeGeneric); 104 } 105 106 Log * 107 ProcessFreeBSD::EnablePluginLogging(Stream *strm, Args &command) 108 { 109 return NULL; 110 } 111 112 //------------------------------------------------------------------------------ 113 // Constructors and destructors. 114 115 ProcessFreeBSD::ProcessFreeBSD(Target& target, Listener &listener) 116 : ProcessPOSIX(target, listener) 117 { 118 } 119 120 void 121 ProcessFreeBSD::Terminate() 122 { 123 } 124 125 bool 126 ProcessFreeBSD::UpdateThreadList(ThreadList &old_thread_list, ThreadList &new_thread_list) 127 { 128 // XXX haxx 129 new_thread_list = old_thread_list; 130 131 return false; 132 } 133