diff options
Diffstat (limited to 'source/Initialization')
-rw-r--r-- | source/Initialization/SystemInitializer.cpp | 7 | ||||
-rw-r--r-- | source/Initialization/SystemInitializerCommon.cpp | 81 | ||||
-rw-r--r-- | source/Initialization/SystemLifetimeManager.cpp | 11 |
3 files changed, 47 insertions, 52 deletions
diff --git a/source/Initialization/SystemInitializer.cpp b/source/Initialization/SystemInitializer.cpp index 4a8e10caef9f..1e40c2694464 100644 --- a/source/Initialization/SystemInitializer.cpp +++ b/source/Initialization/SystemInitializer.cpp @@ -1,9 +1,8 @@ //===-- SystemInitializer.cpp -----------------------------------*- C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// diff --git a/source/Initialization/SystemInitializerCommon.cpp b/source/Initialization/SystemInitializerCommon.cpp index d1d55fcfde74..8558911c2f4c 100644 --- a/source/Initialization/SystemInitializerCommon.cpp +++ b/source/Initialization/SystemInitializerCommon.cpp @@ -1,32 +1,28 @@ //===-- SystemInitializerCommon.cpp -----------------------------*- C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "lldb/Initialization/SystemInitializerCommon.h" -#include "Plugins/Instruction/ARM/EmulateInstructionARM.h" -#include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h" -#include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h" -#include "Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h" -#include "Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h" #include "lldb/Host/FileSystem.h" #include "lldb/Host/Host.h" #include "lldb/Host/HostInfo.h" +#include "lldb/Host/Socket.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/Reproducer.h" #include "lldb/Utility/Timer.h" +#include "lldb/lldb-private.h" #if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) #include "Plugins/Process/POSIX/ProcessPOSIXLog.h" #endif -#if defined(_MSC_VER) +#if defined(_WIN32) #include "Plugins/Process/Windows/Common/ProcessWindowsLog.h" #include "lldb/Host/windows/windows.h" #endif @@ -42,9 +38,8 @@ SystemInitializerCommon::SystemInitializerCommon() {} SystemInitializerCommon::~SystemInitializerCommon() {} -llvm::Error -SystemInitializerCommon::Initialize(const InitializerOptions &options) { -#if defined(_MSC_VER) +llvm::Error SystemInitializerCommon::Initialize() { +#if defined(_WIN32) const char *disable_crash_dialog_var = getenv("LLDB_DISABLE_CRASH_DIALOG"); if (disable_crash_dialog_var && llvm::StringRef(disable_crash_dialog_var).equals_lower("true")) { @@ -66,39 +61,47 @@ SystemInitializerCommon::Initialize(const InitializerOptions &options) { } #endif - ReproducerMode mode = ReproducerMode::Off; - if (options.reproducer_capture) - mode = ReproducerMode::Capture; - if (options.reproducer_replay) - mode = ReproducerMode::Replay; + // If the reproducer wasn't initialized before, we can safely assume it's + // off. + if (!Reproducer::Initialized()) { + if (auto e = Reproducer::Initialize(ReproducerMode::Off, llvm::None)) + return e; + } - if (auto e = Reproducer::Initialize(mode, FileSpec(options.reproducer_path))) - return e; + auto &r = repro::Reproducer::Instance(); + if (repro::Loader *loader = r.GetLoader()) { + FileSpec vfs_mapping = loader->GetFile<FileProvider::Info>(); + if (vfs_mapping) { + if (llvm::Error e = FileSystem::Initialize(vfs_mapping)) + return e; + } else { + FileSystem::Initialize(); + } + } else if (repro::Generator *g = r.GetGenerator()) { + repro::VersionProvider &vp = g->GetOrCreate<repro::VersionProvider>(); + vp.SetVersion(lldb_private::GetVersion()); + repro::FileProvider &fp = g->GetOrCreate<repro::FileProvider>(); + FileSystem::Initialize(fp.GetFileCollector()); + } else { + FileSystem::Initialize(); + } - FileSystem::Initialize(); Log::Initialize(); HostInfo::Initialize(); + + llvm::Error error = Socket::Initialize(); + if (error) + return error; + static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); process_gdb_remote::ProcessGDBRemoteLog::Initialize(); - // Initialize plug-ins - ObjectContainerBSDArchive::Initialize(); - - EmulateInstructionARM::Initialize(); - EmulateInstructionMIPS::Initialize(); - EmulateInstructionMIPS64::Initialize(); - - //---------------------------------------------------------------------- - // Apple/Darwin hosted plugins - //---------------------------------------------------------------------- - ObjectContainerUniversalMachO::Initialize(); - #if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) ProcessPOSIXLog::Initialize(); #endif -#if defined(_MSC_VER) +#if defined(_WIN32) ProcessWindowsLog::Initialize(); #endif @@ -108,18 +111,12 @@ SystemInitializerCommon::Initialize(const InitializerOptions &options) { void SystemInitializerCommon::Terminate() { static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); - ObjectContainerBSDArchive::Terminate(); - - EmulateInstructionARM::Terminate(); - EmulateInstructionMIPS::Terminate(); - EmulateInstructionMIPS64::Terminate(); - - ObjectContainerUniversalMachO::Terminate(); -#if defined(_MSC_VER) +#if defined(_WIN32) ProcessWindowsLog::Terminate(); #endif + Socket::Terminate(); HostInfo::Terminate(); Log::DisableAllLogChannels(); FileSystem::Terminate(); diff --git a/source/Initialization/SystemLifetimeManager.cpp b/source/Initialization/SystemLifetimeManager.cpp index 65431bf6017d..97f60489f04b 100644 --- a/source/Initialization/SystemLifetimeManager.cpp +++ b/source/Initialization/SystemLifetimeManager.cpp @@ -1,9 +1,8 @@ //===-- SystemLifetimeManager.cpp ------------------------------*- C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// @@ -26,7 +25,7 @@ SystemLifetimeManager::~SystemLifetimeManager() { llvm::Error SystemLifetimeManager::Initialize( std::unique_ptr<SystemInitializer> initializer, - const InitializerOptions &options, LoadPluginCallbackType plugin_callback) { + LoadPluginCallbackType plugin_callback) { std::lock_guard<std::recursive_mutex> guard(m_mutex); if (!m_initialized) { assert(!m_initializer && "Attempting to call " @@ -35,7 +34,7 @@ llvm::Error SystemLifetimeManager::Initialize( m_initialized = true; m_initializer = std::move(initializer); - if (auto e = m_initializer->Initialize(options)) + if (auto e = m_initializer->Initialize()) return e; Debugger::Initialize(plugin_callback); |