lldb.cpp revision ddd2962a3b9f22ddfe472ef6ba225d0c55b23727
1//===-- lldb.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#include "lldb/lldb-private.h" 11#include "lldb/lldb-private-log.h" 12#include "lldb/Core/ArchSpec.h" 13#include "lldb/Core/Log.h" 14#include "lldb/Core/Timer.h" 15#include "lldb/Host/Host.h" 16#include "lldb/Host/Mutex.h" 17 18#include "Plugins/Disassembler/llvm/DisassemblerLLVM.h" 19#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h" 20#include "Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h" 21#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" 22#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" 23#include "Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h" 24#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" 25#ifdef __APPLE__ 26#include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h" 27#include "Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h" 28#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h" 29#include "Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h" 30#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" 31#include "Plugins/Process/MacOSX-User/source/ProcessMacOSX.h" 32#include "Plugins/Process/gdb-remote/ProcessGDBRemote.h" 33#endif 34 35using namespace lldb_private; 36 37 38void 39lldb_private::Initialize () 40{ 41 // Make sure we inialize only once 42 static Mutex g_inited_mutex(Mutex::eMutexTypeNormal); 43 static bool g_inited = false; 44 45 Mutex::Locker locker(g_inited_mutex); 46 if (!g_inited) 47 { 48 g_inited = true; 49 Timer::Initialize (); 50 Timer scoped_timer (__PRETTY_FUNCTION__, __PRETTY_FUNCTION__); 51 52 Log::Callbacks log_callbacks = { DisableLog, EnableLog, ListLogCategories }; 53 54 Log::RegisterLogChannel ("lldb", log_callbacks); 55 DisassemblerLLVM::Initialize(); 56 ObjectContainerBSDArchive::Initialize(); 57 ObjectFileELF::Initialize(); 58 SymbolVendorMacOSX::Initialize(); 59 SymbolFileDWARF::Initialize(); 60 SymbolFileDWARFDebugMap::Initialize(); 61 SymbolFileSymtab::Initialize(); 62#ifdef __APPLE__ 63 ABIMacOSX_i386::Initialize(); 64 ABISysV_x86_64::Initialize(); 65 DynamicLoaderMacOSXDYLD::Initialize(); 66 ObjectContainerUniversalMachO::Initialize(); 67 ObjectFileMachO::Initialize(); 68 ProcessGDBRemote::Initialize(); 69// ProcessMacOSX::Initialize(); 70#endif 71 } 72} 73 74void 75lldb_private::WillTerminate() 76{ 77 Host::WillTerminate(); 78} 79 80void 81lldb_private::Terminate () 82{ 83 Timer scoped_timer (__PRETTY_FUNCTION__, __PRETTY_FUNCTION__); 84 DisassemblerLLVM::Terminate(); 85 ObjectContainerBSDArchive::Terminate(); 86 ObjectFileELF::Terminate(); 87 SymbolVendorMacOSX::Terminate(); 88 SymbolFileDWARF::Terminate(); 89 SymbolFileDWARFDebugMap::Terminate(); 90 SymbolFileSymtab::Terminate(); 91#ifdef __APPLE__ 92 DynamicLoaderMacOSXDYLD::Terminate(); 93 ObjectContainerUniversalMachO::Terminate(); 94 ObjectFileMachO::Terminate(); 95 ProcessGDBRemote::Terminate(); 96// ProcessMacOSX::Terminate(); 97#endif 98} 99 100extern "C" const double LLDBVersionNumber; 101const char * 102lldb_private::GetVersion () 103{ 104 static char g_version_string[32]; 105 if (g_version_string[0] == '\0') 106 ::snprintf (g_version_string, sizeof(g_version_string), "LLDB-%g", LLDBVersionNumber); 107 108 return g_version_string; 109} 110 111ArchSpec & 112lldb_private::GetDefaultArchitecture () 113{ 114 static ArchSpec g_default_arch; 115 return g_default_arch; 116} 117