1e6e2bb38SZachary Turner //===-- SystemInitializerCommon.cpp -----------------------------*- C++ -*-===// 2e6e2bb38SZachary Turner // 3e6e2bb38SZachary Turner // The LLVM Compiler Infrastructure 4e6e2bb38SZachary Turner // 5e6e2bb38SZachary Turner // This file is distributed under the University of Illinois Open Source 6e6e2bb38SZachary Turner // License. See LICENSE.TXT for details. 7e6e2bb38SZachary Turner // 8e6e2bb38SZachary Turner //===----------------------------------------------------------------------===// 9e6e2bb38SZachary Turner 10e6e2bb38SZachary Turner #include "lldb/Initialization/SystemInitializerCommon.h" 11e6e2bb38SZachary Turner 12d8c338d4STamas Berghammer #include "Plugins/Instruction/ARM/EmulateInstructionARM.h" 13794a4d5aSBhushan D. Attarde #include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h" 14cdc22a88SMohit K. Bhakkad #include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h" 15e6e2bb38SZachary Turner #include "Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h" 16e6e2bb38SZachary Turner #include "Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h" 17e6e2bb38SZachary Turner #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" 18e6e2bb38SZachary Turner #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" 19e6e2bb38SZachary Turner #include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h" 20b9c1b51eSKate Stone #include "lldb/Core/Timer.h" 21b9c1b51eSKate Stone #include "lldb/Host/Host.h" 22b9c1b51eSKate Stone #include "lldb/Host/HostInfo.h" 23*6f9e6901SZachary Turner #include "lldb/Utility/Log.h" 24e6e2bb38SZachary Turner 25e6e2bb38SZachary Turner #if defined(__APPLE__) 26e6e2bb38SZachary Turner #include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" 27e6e2bb38SZachary Turner #endif 28e6e2bb38SZachary Turner 29c29f7ff3SPavel Labath #if defined(__linux__) || defined(__FreeBSD__) 30e6e2bb38SZachary Turner #include "Plugins/Process/POSIX/ProcessPOSIXLog.h" 31e6e2bb38SZachary Turner #endif 32e6e2bb38SZachary Turner 33e6e2bb38SZachary Turner #if defined(_MSC_VER) 3418a9135dSAdrian McCarthy #include "Plugins/Process/Windows/Common/ProcessWindowsLog.h" 3574e08ca0SZachary Turner #include "lldb/Host/windows/windows.h" 36e6e2bb38SZachary Turner #endif 37e6e2bb38SZachary Turner 38237c3ed9SSean Callanan #include "llvm/Support/PrettyStackTrace.h" 39e6e2bb38SZachary Turner #include "llvm/Support/TargetSelect.h" 40e6e2bb38SZachary Turner 41e6e2bb38SZachary Turner #include <string> 42e6e2bb38SZachary Turner 43e6e2bb38SZachary Turner using namespace lldb_private; 44e6e2bb38SZachary Turner 45b9c1b51eSKate Stone SystemInitializerCommon::SystemInitializerCommon() {} 46e6e2bb38SZachary Turner 47b9c1b51eSKate Stone SystemInitializerCommon::~SystemInitializerCommon() {} 48e6e2bb38SZachary Turner 49b9c1b51eSKate Stone void SystemInitializerCommon::Initialize() { 50e6e2bb38SZachary Turner #if defined(_MSC_VER) 51e6e2bb38SZachary Turner const char *disable_crash_dialog_var = getenv("LLDB_DISABLE_CRASH_DIALOG"); 52b9c1b51eSKate Stone if (disable_crash_dialog_var && 53b9c1b51eSKate Stone llvm::StringRef(disable_crash_dialog_var).equals_lower("true")) { 54b9c1b51eSKate Stone // This will prevent Windows from displaying a dialog box requiring user 55b9c1b51eSKate Stone // interaction when 56b9c1b51eSKate Stone // LLDB crashes. This is mostly useful when automating LLDB, for example 57b9c1b51eSKate Stone // via the test 58b9c1b51eSKate Stone // suite, so that a crash in LLDB does not prevent completion of the test 59b9c1b51eSKate Stone // suite. 60b9c1b51eSKate Stone ::SetErrorMode(GetErrorMode() | SEM_FAILCRITICALERRORS | 61b9c1b51eSKate Stone SEM_NOGPFAULTERRORBOX); 62e6e2bb38SZachary Turner 63e6e2bb38SZachary Turner _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); 64e6e2bb38SZachary Turner _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); 65e6e2bb38SZachary Turner _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); 66e6e2bb38SZachary Turner _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); 67e6e2bb38SZachary Turner _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); 68e6e2bb38SZachary Turner _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); 69e6e2bb38SZachary Turner } 70e6e2bb38SZachary Turner #endif 71e6e2bb38SZachary Turner 72237c3ed9SSean Callanan llvm::EnablePrettyStackTrace(); 73a2fc1e0cSPavel Labath InitializeLog(); 74e6e2bb38SZachary Turner HostInfo::Initialize(); 75f343968fSZachary Turner Timer scoped_timer(LLVM_PRETTY_FUNCTION, LLVM_PRETTY_FUNCTION); 76e6e2bb38SZachary Turner 77e6e2bb38SZachary Turner process_gdb_remote::ProcessGDBRemoteLog::Initialize(); 78e6e2bb38SZachary Turner 79e6e2bb38SZachary Turner // Initialize plug-ins 80e6e2bb38SZachary Turner ObjectContainerBSDArchive::Initialize(); 81e6e2bb38SZachary Turner ObjectFileELF::Initialize(); 82e6e2bb38SZachary Turner ObjectFilePECOFF::Initialize(); 83e6e2bb38SZachary Turner 84d8c338d4STamas Berghammer EmulateInstructionARM::Initialize(); 85794a4d5aSBhushan D. Attarde EmulateInstructionMIPS::Initialize(); 86cdc22a88SMohit K. Bhakkad EmulateInstructionMIPS64::Initialize(); 87d8c338d4STamas Berghammer 88e6e2bb38SZachary Turner //---------------------------------------------------------------------- 89e6e2bb38SZachary Turner // Apple/Darwin hosted plugins 90e6e2bb38SZachary Turner //---------------------------------------------------------------------- 91e6e2bb38SZachary Turner ObjectContainerUniversalMachO::Initialize(); 92e6e2bb38SZachary Turner 93e6e2bb38SZachary Turner #if defined(__APPLE__) 94e6e2bb38SZachary Turner ObjectFileMachO::Initialize(); 95e6e2bb38SZachary Turner #endif 96c29f7ff3SPavel Labath #if defined(__linux__) || defined(__FreeBSD__) 97c29f7ff3SPavel Labath ProcessPOSIXLog::Initialize(); 98e6e2bb38SZachary Turner #endif 9942b33806SAdrian McCarthy #if defined(_MSC_VER) 10042b33806SAdrian McCarthy ProcessWindowsLog::Initialize(); 10142b33806SAdrian McCarthy #endif 102e6e2bb38SZachary Turner } 103e6e2bb38SZachary Turner 104b9c1b51eSKate Stone void SystemInitializerCommon::Terminate() { 105f343968fSZachary Turner Timer scoped_timer(LLVM_PRETTY_FUNCTION, LLVM_PRETTY_FUNCTION); 106e6e2bb38SZachary Turner ObjectContainerBSDArchive::Terminate(); 107e6e2bb38SZachary Turner ObjectFileELF::Terminate(); 108e6e2bb38SZachary Turner ObjectFilePECOFF::Terminate(); 109e6e2bb38SZachary Turner 110d8c338d4STamas Berghammer EmulateInstructionARM::Terminate(); 111794a4d5aSBhushan D. Attarde EmulateInstructionMIPS::Terminate(); 112cdc22a88SMohit K. Bhakkad EmulateInstructionMIPS64::Terminate(); 113d8c338d4STamas Berghammer 114f1763537SPavel Labath ObjectContainerUniversalMachO::Terminate(); 115e6e2bb38SZachary Turner #if defined(__APPLE__) 116e6e2bb38SZachary Turner ObjectFileMachO::Terminate(); 117e6e2bb38SZachary Turner #endif 118e6e2bb38SZachary Turner 11923a4df27SHafiz Abid Qadeer #if defined(_MSC_VER) 120610e5291SZachary Turner ProcessWindowsLog::Terminate(); 121610e5291SZachary Turner #endif 122610e5291SZachary Turner 12341331afaSZachary Turner HostInfo::Terminate(); 124a2fc1e0cSPavel Labath Log::DisableAllLogChannels(nullptr); 125e6e2bb38SZachary Turner } 126