diff options
Diffstat (limited to 'source/Initialization/SystemInitializerCommon.cpp')
-rw-r--r-- | source/Initialization/SystemInitializerCommon.cpp | 81 |
1 files changed, 39 insertions, 42 deletions
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(); |