Summary: This commit adds the glue code necessary to integrate the SymbolFileBreakpad into the plugin system. Most of the methods are stubbed out. The only method implemented method is AddSymbols, which parses the PUBLIC "section" of the breakpad "object file", and fills out the Module's symtab. To enable testing this, I've made two additional changes: - dump Symtab from the SymbolVendor class. The symtab was already being dumped as a part of the object file dump, but that happened before symbol vendor kicked in, so it did not reflect any symbols added there. - add ability to explicitly specify the external symbol file in lldb-test (so that the object file could be linked with the breakpad symbol file). To make things simpler, I've changed lldb-test from consuming multiple inputs (and dumping their symbols) to having it just process a single file per invocation. This was not a problem since everyone was using it that way already. Reviewers: clayborg, zturner, lemo, markmentovai, amccarth Subscribers: mgorny, lldb-commits Differential Revision: https://reviews.llvm.org/D56173 llvm-svn: 350924
547 lines
20 KiB
C++
547 lines
20 KiB
C++
//===-- SystemInitializerFull.cpp -------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
|
#include "Plugins/ScriptInterpreter/Python/lldb-python.h"
|
|
#endif
|
|
|
|
#include "SystemInitializerFull.h"
|
|
|
|
#include "lldb/API/SBCommandInterpreter.h"
|
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
|
#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h"
|
|
#endif
|
|
|
|
#include "lldb/Core/Debugger.h"
|
|
#include "lldb/Host/Host.h"
|
|
#include "lldb/Initialization/SystemInitializerCommon.h"
|
|
#include "lldb/Interpreter/CommandInterpreter.h"
|
|
#include "lldb/Symbol/ClangASTContext.h"
|
|
#include "lldb/Utility/Timer.h"
|
|
|
|
#include "Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h"
|
|
#include "Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h"
|
|
#include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h"
|
|
#include "Plugins/ABI/SysV-arm/ABISysV_arm.h"
|
|
#include "Plugins/ABI/SysV-arm64/ABISysV_arm64.h"
|
|
#include "Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h"
|
|
#include "Plugins/ABI/SysV-i386/ABISysV_i386.h"
|
|
#include "Plugins/ABI/SysV-mips/ABISysV_mips.h"
|
|
#include "Plugins/ABI/SysV-mips64/ABISysV_mips64.h"
|
|
#include "Plugins/ABI/SysV-ppc/ABISysV_ppc.h"
|
|
#include "Plugins/ABI/SysV-ppc64/ABISysV_ppc64.h"
|
|
#include "Plugins/ABI/SysV-s390x/ABISysV_s390x.h"
|
|
#include "Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h"
|
|
#include "Plugins/Architecture/Arm/ArchitectureArm.h"
|
|
#include "Plugins/Architecture/Mips/ArchitectureMips.h"
|
|
#include "Plugins/Architecture/PPC64/ArchitecturePPC64.h"
|
|
#include "Plugins/Disassembler/llvm/DisassemblerLLVMC.h"
|
|
#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h"
|
|
#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h"
|
|
#include "Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h"
|
|
#include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h"
|
|
#include "Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h"
|
|
#include "Plugins/Instruction/ARM64/EmulateInstructionARM64.h"
|
|
#include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h"
|
|
#include "Plugins/InstrumentationRuntime/ASan/ASanRuntime.h"
|
|
#include "Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h"
|
|
#include "Plugins/InstrumentationRuntime/TSan/TSanRuntime.h"
|
|
#include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h"
|
|
#include "Plugins/JITLoader/GDB/JITLoaderGDB.h"
|
|
#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
|
|
#include "Plugins/Language/ObjC/ObjCLanguage.h"
|
|
#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h"
|
|
#include "Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h"
|
|
#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h"
|
|
#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h"
|
|
#include "Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h"
|
|
#include "Plugins/MemoryHistory/asan/MemoryHistoryASan.h"
|
|
#include "Plugins/ObjectFile/Breakpad/ObjectFileBreakpad.h"
|
|
#include "Plugins/ObjectFile/ELF/ObjectFileELF.h"
|
|
#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h"
|
|
#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h"
|
|
#include "Plugins/OperatingSystem/Python/OperatingSystemPython.h"
|
|
#include "Plugins/Platform/Android/PlatformAndroid.h"
|
|
#include "Plugins/Platform/FreeBSD/PlatformFreeBSD.h"
|
|
#include "Plugins/Platform/Kalimba/PlatformKalimba.h"
|
|
#include "Plugins/Platform/Linux/PlatformLinux.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformMacOSX.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h"
|
|
#include "Plugins/Platform/NetBSD/PlatformNetBSD.h"
|
|
#include "Plugins/Platform/OpenBSD/PlatformOpenBSD.h"
|
|
#include "Plugins/Platform/Windows/PlatformWindows.h"
|
|
#include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h"
|
|
#include "Plugins/Process/elf-core/ProcessElfCore.h"
|
|
#include "Plugins/Process/gdb-remote/ProcessGDBRemote.h"
|
|
#include "Plugins/Process/mach-core/ProcessMachCore.h"
|
|
#include "Plugins/Process/minidump/ProcessMinidump.h"
|
|
#include "Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h"
|
|
#include "Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.h"
|
|
#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h"
|
|
#include "Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h"
|
|
#include "Plugins/SymbolFile/PDB/SymbolFilePDB.h"
|
|
#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h"
|
|
#include "Plugins/SymbolVendor/ELF/SymbolVendorELF.h"
|
|
#include "Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.h"
|
|
#include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h"
|
|
#include "Plugins/UnwindAssembly/x86/UnwindAssembly-x86.h"
|
|
|
|
#if defined(__APPLE__)
|
|
#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformDarwinKernel.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteAppleBridge.h"
|
|
#include "Plugins/Platform/MacOSX/PlatformiOSSimulator.h"
|
|
#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h"
|
|
#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h"
|
|
#endif
|
|
#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h"
|
|
|
|
#if defined(__FreeBSD__)
|
|
#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h"
|
|
#endif
|
|
|
|
#if defined(_WIN32)
|
|
#include "Plugins/Process/Windows/Common/ProcessWindows.h"
|
|
#include "lldb/Host/windows/windows.h"
|
|
#endif
|
|
|
|
#include "llvm/Support/TargetSelect.h"
|
|
|
|
#include <string>
|
|
|
|
using namespace lldb_private;
|
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
|
|
|
// Defined in the SWIG source file
|
|
#if PY_MAJOR_VERSION >= 3
|
|
extern "C" PyObject *PyInit__lldb(void);
|
|
|
|
#define LLDBSwigPyInit PyInit__lldb
|
|
|
|
#else
|
|
extern "C" void init_lldb(void);
|
|
|
|
#define LLDBSwigPyInit init_lldb
|
|
#endif
|
|
|
|
// these are the Pythonic implementations of the required callbacks these are
|
|
// scripting-language specific, which is why they belong here we still need to
|
|
// use function pointers to them instead of relying on linkage-time resolution
|
|
// because the SWIG stuff and this file get built at different times
|
|
extern "C" bool LLDBSwigPythonBreakpointCallbackFunction(
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
const lldb::StackFrameSP &sb_frame,
|
|
const lldb::BreakpointLocationSP &sb_bp_loc);
|
|
|
|
extern "C" bool LLDBSwigPythonWatchpointCallbackFunction(
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
const lldb::StackFrameSP &sb_frame, const lldb::WatchpointSP &sb_wp);
|
|
|
|
extern "C" bool LLDBSwigPythonCallTypeScript(
|
|
const char *python_function_name, void *session_dictionary,
|
|
const lldb::ValueObjectSP &valobj_sp, void **pyfunct_wrapper,
|
|
const lldb::TypeSummaryOptionsSP &options_sp, std::string &retval);
|
|
|
|
extern "C" void *
|
|
LLDBSwigPythonCreateSyntheticProvider(const char *python_class_name,
|
|
const char *session_dictionary_name,
|
|
const lldb::ValueObjectSP &valobj_sp);
|
|
|
|
extern "C" void *
|
|
LLDBSwigPythonCreateCommandObject(const char *python_class_name,
|
|
const char *session_dictionary_name,
|
|
const lldb::DebuggerSP debugger_sp);
|
|
|
|
extern "C" void *LLDBSwigPythonCreateScriptedThreadPlan(
|
|
const char *python_class_name, const char *session_dictionary_name,
|
|
const lldb::ThreadPlanSP &thread_plan_sp);
|
|
|
|
extern "C" bool LLDBSWIGPythonCallThreadPlan(void *implementor,
|
|
const char *method_name,
|
|
Event *event_sp, bool &got_error);
|
|
|
|
extern "C" void *LLDBSwigPythonCreateScriptedBreakpointResolver(
|
|
const char *python_class_name,
|
|
const char *session_dictionary_name,
|
|
lldb_private::StructuredDataImpl *args,
|
|
lldb::BreakpointSP &bkpt_sp);
|
|
|
|
extern "C" unsigned int LLDBSwigPythonCallBreakpointResolver(
|
|
void *implementor,
|
|
const char *method_name,
|
|
lldb_private::SymbolContext *sym_ctx
|
|
);
|
|
|
|
extern "C" size_t LLDBSwigPython_CalculateNumChildren(void *implementor,
|
|
uint32_t max);
|
|
|
|
extern "C" void *LLDBSwigPython_GetChildAtIndex(void *implementor,
|
|
uint32_t idx);
|
|
|
|
extern "C" int LLDBSwigPython_GetIndexOfChildWithName(void *implementor,
|
|
const char *child_name);
|
|
|
|
extern "C" void *LLDBSWIGPython_CastPyObjectToSBValue(void *data);
|
|
|
|
extern lldb::ValueObjectSP
|
|
LLDBSWIGPython_GetValueObjectSPFromSBValue(void *data);
|
|
|
|
extern "C" bool LLDBSwigPython_UpdateSynthProviderInstance(void *implementor);
|
|
|
|
extern "C" bool
|
|
LLDBSwigPython_MightHaveChildrenSynthProviderInstance(void *implementor);
|
|
|
|
extern "C" void *
|
|
LLDBSwigPython_GetValueSynthProviderInstance(void *implementor);
|
|
|
|
extern "C" bool
|
|
LLDBSwigPythonCallCommand(const char *python_function_name,
|
|
const char *session_dictionary_name,
|
|
lldb::DebuggerSP &debugger, const char *args,
|
|
lldb_private::CommandReturnObject &cmd_retobj,
|
|
lldb::ExecutionContextRefSP exe_ctx_ref_sp);
|
|
|
|
extern "C" bool
|
|
LLDBSwigPythonCallCommandObject(void *implementor, lldb::DebuggerSP &debugger,
|
|
const char *args,
|
|
lldb_private::CommandReturnObject &cmd_retobj,
|
|
lldb::ExecutionContextRefSP exe_ctx_ref_sp);
|
|
|
|
extern "C" bool
|
|
LLDBSwigPythonCallModuleInit(const char *python_module_name,
|
|
const char *session_dictionary_name,
|
|
lldb::DebuggerSP &debugger);
|
|
|
|
extern "C" void *
|
|
LLDBSWIGPythonCreateOSPlugin(const char *python_class_name,
|
|
const char *session_dictionary_name,
|
|
const lldb::ProcessSP &process_sp);
|
|
|
|
extern "C" void *LLDBSWIGPython_CreateFrameRecognizer(
|
|
const char *python_class_name,
|
|
const char *session_dictionary_name);
|
|
|
|
extern "C" void *LLDBSwigPython_GetRecognizedArguments(void *implementor,
|
|
const lldb::StackFrameSP& frame_sp);
|
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordProcess(
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
lldb::ProcessSP &process, std::string &output);
|
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordThread(
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
lldb::ThreadSP &thread, std::string &output);
|
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordTarget(
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
lldb::TargetSP &target, std::string &output);
|
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordFrame(
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
lldb::StackFrameSP &frame, std::string &output);
|
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordValue(
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
lldb::ValueObjectSP &value, std::string &output);
|
|
|
|
extern "C" void *
|
|
LLDBSWIGPython_GetDynamicSetting(void *module, const char *setting,
|
|
const lldb::TargetSP &target_sp);
|
|
|
|
#endif
|
|
|
|
SystemInitializerFull::SystemInitializerFull() {}
|
|
|
|
SystemInitializerFull::~SystemInitializerFull() {}
|
|
|
|
llvm::Error
|
|
SystemInitializerFull::Initialize(const InitializerOptions &options) {
|
|
if (auto e = SystemInitializerCommon::Initialize(options))
|
|
return e;
|
|
|
|
breakpad::ObjectFileBreakpad::Initialize();
|
|
ObjectFileELF::Initialize();
|
|
ObjectFileMachO::Initialize();
|
|
ObjectFilePECOFF::Initialize();
|
|
|
|
ScriptInterpreterNone::Initialize();
|
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
|
OperatingSystemPython::Initialize();
|
|
#endif
|
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
|
InitializeSWIG();
|
|
|
|
// ScriptInterpreterPython::Initialize() depends on things like HostInfo
|
|
// being initialized so it can compute the python directory etc, so we need
|
|
// to do this after SystemInitializerCommon::Initialize().
|
|
ScriptInterpreterPython::Initialize();
|
|
#endif
|
|
|
|
platform_freebsd::PlatformFreeBSD::Initialize();
|
|
platform_linux::PlatformLinux::Initialize();
|
|
platform_netbsd::PlatformNetBSD::Initialize();
|
|
platform_openbsd::PlatformOpenBSD::Initialize();
|
|
PlatformWindows::Initialize();
|
|
PlatformKalimba::Initialize();
|
|
platform_android::PlatformAndroid::Initialize();
|
|
PlatformRemoteiOS::Initialize();
|
|
PlatformMacOSX::Initialize();
|
|
#if defined(__APPLE__)
|
|
PlatformiOSSimulator::Initialize();
|
|
PlatformDarwinKernel::Initialize();
|
|
#endif
|
|
|
|
// Initialize LLVM and Clang
|
|
llvm::InitializeAllTargets();
|
|
llvm::InitializeAllAsmPrinters();
|
|
llvm::InitializeAllTargetMCs();
|
|
llvm::InitializeAllDisassemblers();
|
|
|
|
ClangASTContext::Initialize();
|
|
|
|
ABIMacOSX_i386::Initialize();
|
|
ABIMacOSX_arm::Initialize();
|
|
ABIMacOSX_arm64::Initialize();
|
|
ABISysV_arm::Initialize();
|
|
ABISysV_arm64::Initialize();
|
|
ABISysV_hexagon::Initialize();
|
|
ABISysV_i386::Initialize();
|
|
ABISysV_x86_64::Initialize();
|
|
ABISysV_ppc::Initialize();
|
|
ABISysV_ppc64::Initialize();
|
|
ABISysV_mips::Initialize();
|
|
ABISysV_mips64::Initialize();
|
|
ABISysV_s390x::Initialize();
|
|
|
|
ArchitectureArm::Initialize();
|
|
ArchitectureMips::Initialize();
|
|
ArchitecturePPC64::Initialize();
|
|
|
|
DisassemblerLLVMC::Initialize();
|
|
|
|
JITLoaderGDB::Initialize();
|
|
ProcessElfCore::Initialize();
|
|
ProcessMachCore::Initialize();
|
|
minidump::ProcessMinidump::Initialize();
|
|
MemoryHistoryASan::Initialize();
|
|
AddressSanitizerRuntime::Initialize();
|
|
ThreadSanitizerRuntime::Initialize();
|
|
UndefinedBehaviorSanitizerRuntime::Initialize();
|
|
MainThreadCheckerRuntime::Initialize();
|
|
|
|
SymbolVendorELF::Initialize();
|
|
breakpad::SymbolFileBreakpad::Initialize();
|
|
SymbolFileDWARF::Initialize();
|
|
SymbolFilePDB::Initialize();
|
|
SymbolFileSymtab::Initialize();
|
|
UnwindAssemblyInstEmulation::Initialize();
|
|
UnwindAssembly_x86::Initialize();
|
|
EmulateInstructionARM64::Initialize();
|
|
EmulateInstructionPPC64::Initialize();
|
|
SymbolFileDWARFDebugMap::Initialize();
|
|
ItaniumABILanguageRuntime::Initialize();
|
|
AppleObjCRuntimeV2::Initialize();
|
|
AppleObjCRuntimeV1::Initialize();
|
|
SystemRuntimeMacOSX::Initialize();
|
|
RenderScriptRuntime::Initialize();
|
|
|
|
CPlusPlusLanguage::Initialize();
|
|
ObjCLanguage::Initialize();
|
|
ObjCPlusPlusLanguage::Initialize();
|
|
|
|
#if defined(_WIN32)
|
|
ProcessWindows::Initialize();
|
|
#endif
|
|
#if defined(__FreeBSD__)
|
|
ProcessFreeBSD::Initialize();
|
|
#endif
|
|
#if defined(__APPLE__)
|
|
SymbolVendorMacOSX::Initialize();
|
|
ProcessKDP::Initialize();
|
|
PlatformAppleTVSimulator::Initialize();
|
|
PlatformAppleWatchSimulator::Initialize();
|
|
PlatformRemoteAppleTV::Initialize();
|
|
PlatformRemoteAppleWatch::Initialize();
|
|
PlatformRemoteAppleBridge::Initialize();
|
|
DynamicLoaderDarwinKernel::Initialize();
|
|
#endif
|
|
|
|
// This plugin is valid on any host that talks to a Darwin remote. It
|
|
// shouldn't be limited to __APPLE__.
|
|
StructuredDataDarwinLog::Initialize();
|
|
|
|
//----------------------------------------------------------------------
|
|
// Platform agnostic plugins
|
|
//----------------------------------------------------------------------
|
|
platform_gdb_server::PlatformRemoteGDBServer::Initialize();
|
|
|
|
process_gdb_remote::ProcessGDBRemote::Initialize();
|
|
DynamicLoaderMacOSXDYLD::Initialize();
|
|
DynamicLoaderMacOS::Initialize();
|
|
DynamicLoaderPOSIXDYLD::Initialize();
|
|
DynamicLoaderStatic::Initialize();
|
|
DynamicLoaderWindowsDYLD::Initialize();
|
|
|
|
// Scan for any system or user LLDB plug-ins
|
|
PluginManager::Initialize();
|
|
|
|
// The process settings need to know about installed plug-ins, so the
|
|
// Settings must be initialized
|
|
// AFTER PluginManager::Initialize is called.
|
|
|
|
Debugger::SettingsInitialize();
|
|
|
|
return llvm::Error::success();
|
|
}
|
|
|
|
void SystemInitializerFull::InitializeSWIG() {
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
|
ScriptInterpreterPython::InitializeInterpreter(
|
|
LLDBSwigPyInit, LLDBSwigPythonBreakpointCallbackFunction,
|
|
LLDBSwigPythonWatchpointCallbackFunction, LLDBSwigPythonCallTypeScript,
|
|
LLDBSwigPythonCreateSyntheticProvider, LLDBSwigPythonCreateCommandObject,
|
|
LLDBSwigPython_CalculateNumChildren, LLDBSwigPython_GetChildAtIndex,
|
|
LLDBSwigPython_GetIndexOfChildWithName,
|
|
LLDBSWIGPython_CastPyObjectToSBValue,
|
|
LLDBSWIGPython_GetValueObjectSPFromSBValue,
|
|
LLDBSwigPython_UpdateSynthProviderInstance,
|
|
LLDBSwigPython_MightHaveChildrenSynthProviderInstance,
|
|
LLDBSwigPython_GetValueSynthProviderInstance, LLDBSwigPythonCallCommand,
|
|
LLDBSwigPythonCallCommandObject, LLDBSwigPythonCallModuleInit,
|
|
LLDBSWIGPythonCreateOSPlugin, LLDBSWIGPython_CreateFrameRecognizer,
|
|
LLDBSwigPython_GetRecognizedArguments,
|
|
LLDBSWIGPythonRunScriptKeywordProcess,
|
|
LLDBSWIGPythonRunScriptKeywordThread,
|
|
LLDBSWIGPythonRunScriptKeywordTarget, LLDBSWIGPythonRunScriptKeywordFrame,
|
|
LLDBSWIGPythonRunScriptKeywordValue, LLDBSWIGPython_GetDynamicSetting,
|
|
LLDBSwigPythonCreateScriptedThreadPlan, LLDBSWIGPythonCallThreadPlan,
|
|
LLDBSwigPythonCreateScriptedBreakpointResolver, LLDBSwigPythonCallBreakpointResolver);
|
|
#endif
|
|
}
|
|
|
|
void SystemInitializerFull::Terminate() {
|
|
static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
|
|
Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);
|
|
|
|
Debugger::SettingsTerminate();
|
|
|
|
// Terminate and unload and loaded system or user LLDB plug-ins
|
|
PluginManager::Terminate();
|
|
|
|
ClangASTContext::Terminate();
|
|
|
|
ArchitectureArm::Terminate();
|
|
ArchitectureMips::Terminate();
|
|
ArchitecturePPC64::Terminate();
|
|
|
|
ABIMacOSX_i386::Terminate();
|
|
ABIMacOSX_arm::Terminate();
|
|
ABIMacOSX_arm64::Terminate();
|
|
ABISysV_arm::Terminate();
|
|
ABISysV_arm64::Terminate();
|
|
ABISysV_hexagon::Terminate();
|
|
ABISysV_i386::Terminate();
|
|
ABISysV_x86_64::Terminate();
|
|
ABISysV_ppc::Terminate();
|
|
ABISysV_ppc64::Terminate();
|
|
ABISysV_mips::Terminate();
|
|
ABISysV_mips64::Terminate();
|
|
ABISysV_s390x::Terminate();
|
|
DisassemblerLLVMC::Terminate();
|
|
|
|
JITLoaderGDB::Terminate();
|
|
ProcessElfCore::Terminate();
|
|
ProcessMachCore::Terminate();
|
|
minidump::ProcessMinidump::Terminate();
|
|
MemoryHistoryASan::Terminate();
|
|
AddressSanitizerRuntime::Terminate();
|
|
ThreadSanitizerRuntime::Terminate();
|
|
UndefinedBehaviorSanitizerRuntime::Terminate();
|
|
MainThreadCheckerRuntime::Terminate();
|
|
SymbolVendorELF::Terminate();
|
|
breakpad::SymbolFileBreakpad::Terminate();
|
|
SymbolFileDWARF::Terminate();
|
|
SymbolFilePDB::Terminate();
|
|
SymbolFileSymtab::Terminate();
|
|
UnwindAssembly_x86::Terminate();
|
|
UnwindAssemblyInstEmulation::Terminate();
|
|
EmulateInstructionARM64::Terminate();
|
|
EmulateInstructionPPC64::Terminate();
|
|
SymbolFileDWARFDebugMap::Terminate();
|
|
ItaniumABILanguageRuntime::Terminate();
|
|
AppleObjCRuntimeV2::Terminate();
|
|
AppleObjCRuntimeV1::Terminate();
|
|
SystemRuntimeMacOSX::Terminate();
|
|
RenderScriptRuntime::Terminate();
|
|
|
|
CPlusPlusLanguage::Terminate();
|
|
ObjCLanguage::Terminate();
|
|
ObjCPlusPlusLanguage::Terminate();
|
|
|
|
#if defined(__APPLE__)
|
|
DynamicLoaderDarwinKernel::Terminate();
|
|
ProcessKDP::Terminate();
|
|
SymbolVendorMacOSX::Terminate();
|
|
PlatformAppleTVSimulator::Terminate();
|
|
PlatformAppleWatchSimulator::Terminate();
|
|
PlatformRemoteAppleTV::Terminate();
|
|
PlatformRemoteAppleWatch::Terminate();
|
|
PlatformRemoteAppleBridge::Terminate();
|
|
#endif
|
|
|
|
#if defined(__FreeBSD__)
|
|
ProcessFreeBSD::Terminate();
|
|
#endif
|
|
Debugger::SettingsTerminate();
|
|
|
|
platform_gdb_server::PlatformRemoteGDBServer::Terminate();
|
|
process_gdb_remote::ProcessGDBRemote::Terminate();
|
|
StructuredDataDarwinLog::Terminate();
|
|
|
|
DynamicLoaderMacOSXDYLD::Terminate();
|
|
DynamicLoaderMacOS::Terminate();
|
|
DynamicLoaderPOSIXDYLD::Terminate();
|
|
DynamicLoaderStatic::Terminate();
|
|
DynamicLoaderWindowsDYLD::Terminate();
|
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
|
OperatingSystemPython::Terminate();
|
|
#endif
|
|
|
|
platform_freebsd::PlatformFreeBSD::Terminate();
|
|
platform_linux::PlatformLinux::Terminate();
|
|
platform_netbsd::PlatformNetBSD::Terminate();
|
|
platform_openbsd::PlatformOpenBSD::Terminate();
|
|
PlatformWindows::Terminate();
|
|
PlatformKalimba::Terminate();
|
|
platform_android::PlatformAndroid::Terminate();
|
|
PlatformMacOSX::Terminate();
|
|
PlatformRemoteiOS::Terminate();
|
|
#if defined(__APPLE__)
|
|
PlatformiOSSimulator::Terminate();
|
|
PlatformDarwinKernel::Terminate();
|
|
#endif
|
|
|
|
breakpad::ObjectFileBreakpad::Terminate();
|
|
ObjectFileELF::Terminate();
|
|
ObjectFileMachO::Terminate();
|
|
ObjectFilePECOFF::Terminate();
|
|
|
|
// Now shutdown the common parts, in reverse order.
|
|
SystemInitializerCommon::Terminate();
|
|
}
|