2015-04-01 05:03:22 +08:00
|
|
|
//===-- SystemInitializerFull.cpp -------------------------------*- C++ -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
2015-07-31 04:28:07 +08:00
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
|
|
|
#include "Plugins/ScriptInterpreter/Python/lldb-python.h"
|
|
|
|
#endif
|
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "lldb/API/SystemInitializerFull.h"
|
|
|
|
|
2015-07-31 04:28:07 +08:00
|
|
|
#include "lldb/API/SBCommandInterpreter.h"
|
|
|
|
|
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
|
|
|
#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h"
|
|
|
|
#endif
|
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "lldb/Core/Debugger.h"
|
|
|
|
#include "lldb/Core/Timer.h"
|
|
|
|
#include "lldb/Host/Host.h"
|
|
|
|
#include "lldb/Initialization/SystemInitializerCommon.h"
|
2015-07-31 04:28:07 +08:00
|
|
|
#include "lldb/Interpreter/CommandInterpreter.h"
|
TypeSystem is now a plugin interface and removed any "ClangASTContext &Class::GetClangASTContext()" functions.
This cleans up type systems to be more pluggable. Prior to this we had issues:
- Module, SymbolFile, and many others has "ClangASTContext &GetClangASTContext()" functions. All have been switched over to use "TypeSystem *GetTypeSystemForLanguage()"
- Cleaned up any places that were using the GetClangASTContext() functions to use TypeSystem
- Cleaned up Module so that it no longer has dedicated type system member variables:
lldb::ClangASTContextUP m_ast; ///< The Clang AST context for this module.
lldb::GoASTContextUP m_go_ast; ///< The Go AST context for this module.
Now we have a type system map:
typedef std::map<lldb::LanguageType, lldb::TypeSystemSP> TypeSystemMap;
TypeSystemMap m_type_system_map; ///< A map of any type systems associated with this module
- Many places in code were using ClangASTContext static functions to place with CompilerType objects and add modifiers (const, volatile, restrict) and to make typedefs, L and R value references and more. These have been made into CompilerType functions that are abstract:
class CompilerType
{
...
//----------------------------------------------------------------------
// Return a new CompilerType that is a L value reference to this type if
// this type is valid and the type system supports L value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetLValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType that is a R value reference to this type if
// this type is valid and the type system supports R value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetRValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a const modifier to this type if
// this type is valid and the type system supports const modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddConstModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a volatile modifier to this type if
// this type is valid and the type system supports volatile modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddVolatileModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a restrict modifier to this type if
// this type is valid and the type system supports restrict modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddRestrictModifier () const;
//----------------------------------------------------------------------
// Create a typedef to this type using "name" as the name of the typedef
// this type is valid and the type system supports typedefs, else return
// an invalid type.
//----------------------------------------------------------------------
CompilerType
CreateTypedef (const char *name, const CompilerDeclContext &decl_ctx) const;
};
Other changes include:
- Removed "CompilerType TypeSystem::GetIntTypeFromBitSize(...)" and CompilerType TypeSystem::GetFloatTypeFromBitSize(...) and replaced it with "CompilerType TypeSystem::GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding, size_t bit_size);"
- Fixed code in Type.h to not request the full type for a type for no good reason, just request the forward type and let the type expand as needed
llvm-svn: 247953
2015-09-18 06:23:34 +08:00
|
|
|
#include "lldb/Symbol/ClangASTContext.h"
|
|
|
|
#include "lldb/Symbol/GoASTContext.h"
|
2016-02-26 22:21:23 +08:00
|
|
|
#include "lldb/Symbol/JavaASTContext.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
#include "Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h"
|
|
|
|
#include "Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h"
|
Add support for reading line tables from PDB files.
PDB is Microsoft's debug information format, and although we
cannot yet generate it, we still must be able to consume it.
Reason for this is that debug information for system libraries
(e.g. kernel32, C Runtime Library, etc) only have debug info
in PDB format, so in order to be able to support debugging
of system code, we must support it.
Currently this code should compile on every platform, but on
non-Windows platforms the PDB plugin will return 0 capabilities,
meaning that for now PDB is only supported on Windows. This
may change in the future, but the API is designed in such a way
that this will require few (if any) changes on the LLDB side.
In the future we can just flip a switch and everything will
work.
This patch only adds support for line tables. It does not return
information about functions, types, global variables, or anything
else. This functionality will be added in a followup patch.
Differential Revision: http://reviews.llvm.org/D17363
Reviewed by: Greg Clayton
llvm-svn: 262528
2016-03-03 06:05:52 +08:00
|
|
|
#include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h"
|
2015-04-29 18:49:45 +08:00
|
|
|
#include "Plugins/ABI/SysV-arm/ABISysV_arm.h"
|
2015-04-29 19:52:35 +08:00
|
|
|
#include "Plugins/ABI/SysV-arm64/ABISysV_arm64.h"
|
2015-12-11 01:53:07 +08:00
|
|
|
#include "Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h"
|
2015-06-26 01:50:15 +08:00
|
|
|
#include "Plugins/ABI/SysV-i386/ABISysV_i386.h"
|
2015-06-18 15:02:10 +08:00
|
|
|
#include "Plugins/ABI/SysV-mips/ABISysV_mips.h"
|
2015-06-19 12:25:07 +08:00
|
|
|
#include "Plugins/ABI/SysV-mips64/ABISysV_mips64.h"
|
Add support for reading line tables from PDB files.
PDB is Microsoft's debug information format, and although we
cannot yet generate it, we still must be able to consume it.
Reason for this is that debug information for system libraries
(e.g. kernel32, C Runtime Library, etc) only have debug info
in PDB format, so in order to be able to support debugging
of system code, we must support it.
Currently this code should compile on every platform, but on
non-Windows platforms the PDB plugin will return 0 capabilities,
meaning that for now PDB is only supported on Windows. This
may change in the future, but the API is designed in such a way
that this will require few (if any) changes on the LLDB side.
In the future we can just flip a switch and everything will
work.
This patch only adds support for line tables. It does not return
information about functions, types, global variables, or anything
else. This functionality will be added in a followup patch.
Differential Revision: http://reviews.llvm.org/D17363
Reviewed by: Greg Clayton
llvm-svn: 262528
2016-03-03 06:05:52 +08:00
|
|
|
#include "Plugins/ABI/SysV-ppc/ABISysV_ppc.h"
|
|
|
|
#include "Plugins/ABI/SysV-ppc64/ABISysV_ppc64.h"
|
|
|
|
#include "Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/Disassembler/llvm/DisassemblerLLVMC.h"
|
|
|
|
#include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h"
|
|
|
|
#include "Plugins/Instruction/ARM64/EmulateInstructionARM64.h"
|
|
|
|
#include "Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.h"
|
2016-03-23 23:36:22 +08:00
|
|
|
#include "Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/JITLoader/GDB/JITLoaderGDB.h"
|
2015-09-02 02:22:39 +08:00
|
|
|
#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
|
2015-11-05 08:24:36 +08:00
|
|
|
#include "Plugins/Language/Go/GoLanguage.h"
|
2016-02-26 22:21:23 +08:00
|
|
|
#include "Plugins/Language/Java/JavaLanguage.h"
|
2015-09-02 02:22:39 +08:00
|
|
|
#include "Plugins/Language/ObjC/ObjCLanguage.h"
|
|
|
|
#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h"
|
2015-10-07 04:29:31 +08:00
|
|
|
#include "Plugins/LanguageRuntime/Go/GoLanguageRuntime.h"
|
2016-02-26 22:21:23 +08:00
|
|
|
#include "Plugins/LanguageRuntime/Java/JavaLanguageRuntime.h"
|
Add support for reading line tables from PDB files.
PDB is Microsoft's debug information format, and although we
cannot yet generate it, we still must be able to consume it.
Reason for this is that debug information for system libraries
(e.g. kernel32, C Runtime Library, etc) only have debug info
in PDB format, so in order to be able to support debugging
of system code, we must support it.
Currently this code should compile on every platform, but on
non-Windows platforms the PDB plugin will return 0 capabilities,
meaning that for now PDB is only supported on Windows. This
may change in the future, but the API is designed in such a way
that this will require few (if any) changes on the LLDB side.
In the future we can just flip a switch and everything will
work.
This patch only adds support for line tables. It does not return
information about functions, types, global variables, or anything
else. This functionality will be added in a followup patch.
Differential Revision: http://reviews.llvm.org/D17363
Reviewed by: Greg Clayton
llvm-svn: 262528
2016-03-03 06:05:52 +08:00
|
|
|
#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h"
|
|
|
|
#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h"
|
2015-04-10 00:49:25 +08:00
|
|
|
#include "Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/MemoryHistory/asan/MemoryHistoryASan.h"
|
2016-03-16 16:48:56 +08:00
|
|
|
#include "Plugins/OperatingSystem/Python/OperatingSystemPython.h"
|
|
|
|
#include "Plugins/OperatingSystem/Go/OperatingSystemGo.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h"
|
|
|
|
#include "Plugins/Process/elf-core/ProcessElfCore.h"
|
|
|
|
#include "Plugins/Process/gdb-remote/ProcessGDBRemote.h"
|
2015-07-31 04:28:07 +08:00
|
|
|
#include "Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h"
|
|
|
|
#include "Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h"
|
Add support for reading line tables from PDB files.
PDB is Microsoft's debug information format, and although we
cannot yet generate it, we still must be able to consume it.
Reason for this is that debug information for system libraries
(e.g. kernel32, C Runtime Library, etc) only have debug info
in PDB format, so in order to be able to support debugging
of system code, we must support it.
Currently this code should compile on every platform, but on
non-Windows platforms the PDB plugin will return 0 capabilities,
meaning that for now PDB is only supported on Windows. This
may change in the future, but the API is designed in such a way
that this will require few (if any) changes on the LLDB side.
In the future we can just flip a switch and everything will
work.
This patch only adds support for line tables. It does not return
information about functions, types, global variables, or anything
else. This functionality will be added in a followup patch.
Differential Revision: http://reviews.llvm.org/D17363
Reviewed by: Greg Clayton
llvm-svn: 262528
2016-03-03 06:05:52 +08:00
|
|
|
#include "Plugins/SymbolFile/PDB/SymbolFilePDB.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h"
|
|
|
|
#include "Plugins/SymbolVendor/ELF/SymbolVendorELF.h"
|
|
|
|
#include "Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.h"
|
|
|
|
#include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h"
|
Add support for reading line tables from PDB files.
PDB is Microsoft's debug information format, and although we
cannot yet generate it, we still must be able to consume it.
Reason for this is that debug information for system libraries
(e.g. kernel32, C Runtime Library, etc) only have debug info
in PDB format, so in order to be able to support debugging
of system code, we must support it.
Currently this code should compile on every platform, but on
non-Windows platforms the PDB plugin will return 0 capabilities,
meaning that for now PDB is only supported on Windows. This
may change in the future, but the API is designed in such a way
that this will require few (if any) changes on the LLDB side.
In the future we can just flip a switch and everything will
work.
This patch only adds support for line tables. It does not return
information about functions, types, global variables, or anything
else. This functionality will be added in a followup patch.
Differential Revision: http://reviews.llvm.org/D17363
Reviewed by: Greg Clayton
llvm-svn: 262528
2016-03-03 06:05:52 +08:00
|
|
|
#include "Plugins/UnwindAssembly/x86/UnwindAssembly-x86.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
#if defined(__APPLE__)
|
|
|
|
#include "Plugins/Process/mach-core/ProcessMachCore.h"
|
|
|
|
#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h"
|
|
|
|
#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h"
|
2015-11-06 08:22:53 +08:00
|
|
|
#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h"
|
|
|
|
#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h"
|
|
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h"
|
|
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(__FreeBSD__)
|
|
|
|
#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(_MSC_VER)
|
|
|
|
#include "lldb/Host/windows/windows.h"
|
2015-10-29 02:21:45 +08:00
|
|
|
#include "Plugins/Process/Windows/Live/ProcessWindowsLive.h"
|
2015-08-25 00:00:51 +08:00
|
|
|
#include "Plugins/Process/Windows/MiniDump/ProcessWinMiniDump.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "llvm/Support/TargetSelect.h"
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
using namespace lldb_private;
|
|
|
|
|
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
|
|
|
|
|
|
|
// Defined in the SWIG source file
|
2015-10-17 01:52:03 +08:00
|
|
|
#if PY_MAJOR_VERSION >= 3
|
|
|
|
extern "C" PyObject*
|
|
|
|
PyInit__lldb(void);
|
|
|
|
|
|
|
|
#define LLDBSwigPyInit PyInit__lldb
|
|
|
|
|
|
|
|
#else
|
2016-01-04 09:43:47 +08:00
|
|
|
extern "C" void
|
2015-04-01 05:03:22 +08:00
|
|
|
init_lldb(void);
|
|
|
|
|
2015-10-17 01:52:03 +08:00
|
|
|
#define LLDBSwigPyInit init_lldb
|
|
|
|
#endif
|
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
// 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" size_t
|
2015-10-22 03:28:08 +08:00
|
|
|
LLDBSwigPython_CalculateNumChildren (void *implementor, uint32_t max);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
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" 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()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
SystemInitializerFull::Initialize()
|
|
|
|
{
|
2015-07-31 04:28:07 +08:00
|
|
|
SystemInitializerCommon::Initialize();
|
2015-08-23 17:05:29 +08:00
|
|
|
ScriptInterpreterNone::Initialize();
|
2015-07-31 04:28:07 +08:00
|
|
|
|
2016-03-16 16:48:56 +08:00
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
|
|
|
OperatingSystemPython::Initialize();
|
|
|
|
#endif
|
|
|
|
OperatingSystemGo::Initialize();
|
|
|
|
|
2015-07-31 04:28:07 +08:00
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
2015-04-01 05:03:22 +08:00
|
|
|
InitializeSWIG();
|
|
|
|
|
2015-07-31 04:28:07 +08:00
|
|
|
// 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
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
// Initialize LLVM and Clang
|
|
|
|
llvm::InitializeAllTargets();
|
|
|
|
llvm::InitializeAllAsmPrinters();
|
|
|
|
llvm::InitializeAllTargetMCs();
|
|
|
|
llvm::InitializeAllDisassemblers();
|
|
|
|
|
TypeSystem is now a plugin interface and removed any "ClangASTContext &Class::GetClangASTContext()" functions.
This cleans up type systems to be more pluggable. Prior to this we had issues:
- Module, SymbolFile, and many others has "ClangASTContext &GetClangASTContext()" functions. All have been switched over to use "TypeSystem *GetTypeSystemForLanguage()"
- Cleaned up any places that were using the GetClangASTContext() functions to use TypeSystem
- Cleaned up Module so that it no longer has dedicated type system member variables:
lldb::ClangASTContextUP m_ast; ///< The Clang AST context for this module.
lldb::GoASTContextUP m_go_ast; ///< The Go AST context for this module.
Now we have a type system map:
typedef std::map<lldb::LanguageType, lldb::TypeSystemSP> TypeSystemMap;
TypeSystemMap m_type_system_map; ///< A map of any type systems associated with this module
- Many places in code were using ClangASTContext static functions to place with CompilerType objects and add modifiers (const, volatile, restrict) and to make typedefs, L and R value references and more. These have been made into CompilerType functions that are abstract:
class CompilerType
{
...
//----------------------------------------------------------------------
// Return a new CompilerType that is a L value reference to this type if
// this type is valid and the type system supports L value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetLValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType that is a R value reference to this type if
// this type is valid and the type system supports R value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetRValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a const modifier to this type if
// this type is valid and the type system supports const modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddConstModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a volatile modifier to this type if
// this type is valid and the type system supports volatile modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddVolatileModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a restrict modifier to this type if
// this type is valid and the type system supports restrict modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddRestrictModifier () const;
//----------------------------------------------------------------------
// Create a typedef to this type using "name" as the name of the typedef
// this type is valid and the type system supports typedefs, else return
// an invalid type.
//----------------------------------------------------------------------
CompilerType
CreateTypedef (const char *name, const CompilerDeclContext &decl_ctx) const;
};
Other changes include:
- Removed "CompilerType TypeSystem::GetIntTypeFromBitSize(...)" and CompilerType TypeSystem::GetFloatTypeFromBitSize(...) and replaced it with "CompilerType TypeSystem::GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding, size_t bit_size);"
- Fixed code in Type.h to not request the full type for a type for no good reason, just request the forward type and let the type expand as needed
llvm-svn: 247953
2015-09-18 06:23:34 +08:00
|
|
|
ClangASTContext::Initialize();
|
|
|
|
GoASTContext::Initialize();
|
2016-02-26 22:21:23 +08:00
|
|
|
JavaASTContext::Initialize();
|
TypeSystem is now a plugin interface and removed any "ClangASTContext &Class::GetClangASTContext()" functions.
This cleans up type systems to be more pluggable. Prior to this we had issues:
- Module, SymbolFile, and many others has "ClangASTContext &GetClangASTContext()" functions. All have been switched over to use "TypeSystem *GetTypeSystemForLanguage()"
- Cleaned up any places that were using the GetClangASTContext() functions to use TypeSystem
- Cleaned up Module so that it no longer has dedicated type system member variables:
lldb::ClangASTContextUP m_ast; ///< The Clang AST context for this module.
lldb::GoASTContextUP m_go_ast; ///< The Go AST context for this module.
Now we have a type system map:
typedef std::map<lldb::LanguageType, lldb::TypeSystemSP> TypeSystemMap;
TypeSystemMap m_type_system_map; ///< A map of any type systems associated with this module
- Many places in code were using ClangASTContext static functions to place with CompilerType objects and add modifiers (const, volatile, restrict) and to make typedefs, L and R value references and more. These have been made into CompilerType functions that are abstract:
class CompilerType
{
...
//----------------------------------------------------------------------
// Return a new CompilerType that is a L value reference to this type if
// this type is valid and the type system supports L value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetLValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType that is a R value reference to this type if
// this type is valid and the type system supports R value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetRValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a const modifier to this type if
// this type is valid and the type system supports const modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddConstModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a volatile modifier to this type if
// this type is valid and the type system supports volatile modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddVolatileModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a restrict modifier to this type if
// this type is valid and the type system supports restrict modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddRestrictModifier () const;
//----------------------------------------------------------------------
// Create a typedef to this type using "name" as the name of the typedef
// this type is valid and the type system supports typedefs, else return
// an invalid type.
//----------------------------------------------------------------------
CompilerType
CreateTypedef (const char *name, const CompilerDeclContext &decl_ctx) const;
};
Other changes include:
- Removed "CompilerType TypeSystem::GetIntTypeFromBitSize(...)" and CompilerType TypeSystem::GetFloatTypeFromBitSize(...) and replaced it with "CompilerType TypeSystem::GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding, size_t bit_size);"
- Fixed code in Type.h to not request the full type for a type for no good reason, just request the forward type and let the type expand as needed
llvm-svn: 247953
2015-09-18 06:23:34 +08:00
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
ABIMacOSX_i386::Initialize();
|
|
|
|
ABIMacOSX_arm::Initialize();
|
|
|
|
ABIMacOSX_arm64::Initialize();
|
2015-04-29 18:49:45 +08:00
|
|
|
ABISysV_arm::Initialize();
|
2015-04-29 19:52:35 +08:00
|
|
|
ABISysV_arm64::Initialize();
|
2015-12-11 01:53:07 +08:00
|
|
|
ABISysV_hexagon::Initialize();
|
2015-06-26 01:50:15 +08:00
|
|
|
ABISysV_i386::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
ABISysV_x86_64::Initialize();
|
|
|
|
ABISysV_ppc::Initialize();
|
|
|
|
ABISysV_ppc64::Initialize();
|
2015-06-18 15:02:10 +08:00
|
|
|
ABISysV_mips::Initialize();
|
2015-06-19 12:25:07 +08:00
|
|
|
ABISysV_mips64::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
DisassemblerLLVMC::Initialize();
|
|
|
|
|
|
|
|
JITLoaderGDB::Initialize();
|
|
|
|
ProcessElfCore::Initialize();
|
2015-08-04 07:01:51 +08:00
|
|
|
#if defined(_MSC_VER)
|
|
|
|
ProcessWinMiniDump::Initialize();
|
|
|
|
#endif
|
2015-04-01 05:03:22 +08:00
|
|
|
MemoryHistoryASan::Initialize();
|
|
|
|
AddressSanitizerRuntime::Initialize();
|
2016-03-23 23:36:22 +08:00
|
|
|
ThreadSanitizerRuntime::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
SymbolVendorELF::Initialize();
|
|
|
|
SymbolFileDWARF::Initialize();
|
Add support for reading line tables from PDB files.
PDB is Microsoft's debug information format, and although we
cannot yet generate it, we still must be able to consume it.
Reason for this is that debug information for system libraries
(e.g. kernel32, C Runtime Library, etc) only have debug info
in PDB format, so in order to be able to support debugging
of system code, we must support it.
Currently this code should compile on every platform, but on
non-Windows platforms the PDB plugin will return 0 capabilities,
meaning that for now PDB is only supported on Windows. This
may change in the future, but the API is designed in such a way
that this will require few (if any) changes on the LLDB side.
In the future we can just flip a switch and everything will
work.
This patch only adds support for line tables. It does not return
information about functions, types, global variables, or anything
else. This functionality will be added in a followup patch.
Differential Revision: http://reviews.llvm.org/D17363
Reviewed by: Greg Clayton
llvm-svn: 262528
2016-03-03 06:05:52 +08:00
|
|
|
SymbolFilePDB::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
SymbolFileSymtab::Initialize();
|
|
|
|
UnwindAssemblyInstEmulation::Initialize();
|
|
|
|
UnwindAssembly_x86::Initialize();
|
|
|
|
EmulateInstructionARM64::Initialize();
|
|
|
|
SymbolFileDWARFDebugMap::Initialize();
|
|
|
|
ItaniumABILanguageRuntime::Initialize();
|
|
|
|
AppleObjCRuntimeV2::Initialize();
|
|
|
|
AppleObjCRuntimeV1::Initialize();
|
|
|
|
SystemRuntimeMacOSX::Initialize();
|
2015-04-10 00:49:25 +08:00
|
|
|
RenderScriptRuntime::Initialize();
|
2015-10-07 04:29:31 +08:00
|
|
|
GoLanguageRuntime::Initialize();
|
2016-02-26 22:21:23 +08:00
|
|
|
JavaLanguageRuntime::Initialize();
|
2016-01-04 09:43:47 +08:00
|
|
|
|
2015-09-02 02:22:39 +08:00
|
|
|
CPlusPlusLanguage::Initialize();
|
2015-11-05 08:24:36 +08:00
|
|
|
GoLanguage::Initialize();
|
2016-02-26 22:21:23 +08:00
|
|
|
JavaLanguage::Initialize();
|
2015-09-02 02:22:39 +08:00
|
|
|
ObjCLanguage::Initialize();
|
|
|
|
ObjCPlusPlusLanguage::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
#if defined(_MSC_VER)
|
2015-10-29 02:21:45 +08:00
|
|
|
ProcessWindowsLive::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
#if defined(__FreeBSD__)
|
|
|
|
ProcessFreeBSD::Initialize();
|
|
|
|
#endif
|
|
|
|
#if defined(__APPLE__)
|
|
|
|
SymbolVendorMacOSX::Initialize();
|
|
|
|
ProcessKDP::Initialize();
|
|
|
|
ProcessMachCore::Initialize();
|
2015-11-06 08:22:53 +08:00
|
|
|
PlatformAppleTVSimulator::Initialize();
|
|
|
|
PlatformAppleWatchSimulator::Initialize();
|
|
|
|
PlatformRemoteAppleTV::Initialize();
|
|
|
|
PlatformRemoteAppleWatch::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
// Platform agnostic plugins
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
platform_gdb_server::PlatformRemoteGDBServer::Initialize();
|
|
|
|
|
|
|
|
process_gdb_remote::ProcessGDBRemote::Initialize();
|
|
|
|
DynamicLoaderStatic::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();
|
|
|
|
}
|
|
|
|
|
|
|
|
void SystemInitializerFull::InitializeSWIG()
|
|
|
|
{
|
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
|
|
|
ScriptInterpreterPython::InitializeInterpreter(
|
2015-10-17 01:52:03 +08:00
|
|
|
LLDBSwigPyInit,
|
2015-04-01 05:03:22 +08:00
|
|
|
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,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordProcess,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordThread,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordTarget,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordFrame,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordValue,
|
|
|
|
LLDBSWIGPython_GetDynamicSetting,
|
|
|
|
LLDBSwigPythonCreateScriptedThreadPlan,
|
|
|
|
LLDBSWIGPythonCallThreadPlan);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
SystemInitializerFull::Terminate()
|
|
|
|
{
|
|
|
|
Timer scoped_timer(__PRETTY_FUNCTION__, __PRETTY_FUNCTION__);
|
|
|
|
|
|
|
|
Debugger::SettingsTerminate();
|
|
|
|
|
|
|
|
// Terminate and unload and loaded system or user LLDB plug-ins
|
|
|
|
PluginManager::Terminate();
|
TypeSystem is now a plugin interface and removed any "ClangASTContext &Class::GetClangASTContext()" functions.
This cleans up type systems to be more pluggable. Prior to this we had issues:
- Module, SymbolFile, and many others has "ClangASTContext &GetClangASTContext()" functions. All have been switched over to use "TypeSystem *GetTypeSystemForLanguage()"
- Cleaned up any places that were using the GetClangASTContext() functions to use TypeSystem
- Cleaned up Module so that it no longer has dedicated type system member variables:
lldb::ClangASTContextUP m_ast; ///< The Clang AST context for this module.
lldb::GoASTContextUP m_go_ast; ///< The Go AST context for this module.
Now we have a type system map:
typedef std::map<lldb::LanguageType, lldb::TypeSystemSP> TypeSystemMap;
TypeSystemMap m_type_system_map; ///< A map of any type systems associated with this module
- Many places in code were using ClangASTContext static functions to place with CompilerType objects and add modifiers (const, volatile, restrict) and to make typedefs, L and R value references and more. These have been made into CompilerType functions that are abstract:
class CompilerType
{
...
//----------------------------------------------------------------------
// Return a new CompilerType that is a L value reference to this type if
// this type is valid and the type system supports L value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetLValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType that is a R value reference to this type if
// this type is valid and the type system supports R value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetRValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a const modifier to this type if
// this type is valid and the type system supports const modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddConstModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a volatile modifier to this type if
// this type is valid and the type system supports volatile modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddVolatileModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a restrict modifier to this type if
// this type is valid and the type system supports restrict modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddRestrictModifier () const;
//----------------------------------------------------------------------
// Create a typedef to this type using "name" as the name of the typedef
// this type is valid and the type system supports typedefs, else return
// an invalid type.
//----------------------------------------------------------------------
CompilerType
CreateTypedef (const char *name, const CompilerDeclContext &decl_ctx) const;
};
Other changes include:
- Removed "CompilerType TypeSystem::GetIntTypeFromBitSize(...)" and CompilerType TypeSystem::GetFloatTypeFromBitSize(...) and replaced it with "CompilerType TypeSystem::GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding, size_t bit_size);"
- Fixed code in Type.h to not request the full type for a type for no good reason, just request the forward type and let the type expand as needed
llvm-svn: 247953
2015-09-18 06:23:34 +08:00
|
|
|
|
|
|
|
ClangASTContext::Terminate();
|
|
|
|
GoASTContext::Terminate();
|
2016-02-26 22:21:23 +08:00
|
|
|
JavaASTContext::Terminate();
|
TypeSystem is now a plugin interface and removed any "ClangASTContext &Class::GetClangASTContext()" functions.
This cleans up type systems to be more pluggable. Prior to this we had issues:
- Module, SymbolFile, and many others has "ClangASTContext &GetClangASTContext()" functions. All have been switched over to use "TypeSystem *GetTypeSystemForLanguage()"
- Cleaned up any places that were using the GetClangASTContext() functions to use TypeSystem
- Cleaned up Module so that it no longer has dedicated type system member variables:
lldb::ClangASTContextUP m_ast; ///< The Clang AST context for this module.
lldb::GoASTContextUP m_go_ast; ///< The Go AST context for this module.
Now we have a type system map:
typedef std::map<lldb::LanguageType, lldb::TypeSystemSP> TypeSystemMap;
TypeSystemMap m_type_system_map; ///< A map of any type systems associated with this module
- Many places in code were using ClangASTContext static functions to place with CompilerType objects and add modifiers (const, volatile, restrict) and to make typedefs, L and R value references and more. These have been made into CompilerType functions that are abstract:
class CompilerType
{
...
//----------------------------------------------------------------------
// Return a new CompilerType that is a L value reference to this type if
// this type is valid and the type system supports L value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetLValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType that is a R value reference to this type if
// this type is valid and the type system supports R value references,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
GetRValueReferenceType () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a const modifier to this type if
// this type is valid and the type system supports const modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddConstModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a volatile modifier to this type if
// this type is valid and the type system supports volatile modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddVolatileModifier () const;
//----------------------------------------------------------------------
// Return a new CompilerType adds a restrict modifier to this type if
// this type is valid and the type system supports restrict modifiers,
// else return an invalid type.
//----------------------------------------------------------------------
CompilerType
AddRestrictModifier () const;
//----------------------------------------------------------------------
// Create a typedef to this type using "name" as the name of the typedef
// this type is valid and the type system supports typedefs, else return
// an invalid type.
//----------------------------------------------------------------------
CompilerType
CreateTypedef (const char *name, const CompilerDeclContext &decl_ctx) const;
};
Other changes include:
- Removed "CompilerType TypeSystem::GetIntTypeFromBitSize(...)" and CompilerType TypeSystem::GetFloatTypeFromBitSize(...) and replaced it with "CompilerType TypeSystem::GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding, size_t bit_size);"
- Fixed code in Type.h to not request the full type for a type for no good reason, just request the forward type and let the type expand as needed
llvm-svn: 247953
2015-09-18 06:23:34 +08:00
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
ABIMacOSX_i386::Terminate();
|
|
|
|
ABIMacOSX_arm::Terminate();
|
|
|
|
ABIMacOSX_arm64::Terminate();
|
2015-04-29 18:49:45 +08:00
|
|
|
ABISysV_arm::Terminate();
|
2015-04-29 19:52:35 +08:00
|
|
|
ABISysV_arm64::Terminate();
|
2015-12-11 01:53:07 +08:00
|
|
|
ABISysV_hexagon::Terminate();
|
2015-06-26 01:50:15 +08:00
|
|
|
ABISysV_i386::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
ABISysV_x86_64::Terminate();
|
|
|
|
ABISysV_ppc::Terminate();
|
|
|
|
ABISysV_ppc64::Terminate();
|
2015-06-18 15:02:10 +08:00
|
|
|
ABISysV_mips::Terminate();
|
2015-06-19 12:25:07 +08:00
|
|
|
ABISysV_mips64::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
DisassemblerLLVMC::Terminate();
|
|
|
|
|
|
|
|
JITLoaderGDB::Terminate();
|
|
|
|
ProcessElfCore::Terminate();
|
2015-08-04 07:01:51 +08:00
|
|
|
#if defined(_MSC_VER)
|
|
|
|
ProcessWinMiniDump::Terminate();
|
|
|
|
#endif
|
2015-04-01 05:03:22 +08:00
|
|
|
MemoryHistoryASan::Terminate();
|
|
|
|
AddressSanitizerRuntime::Terminate();
|
2016-03-23 23:36:22 +08:00
|
|
|
ThreadSanitizerRuntime::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
SymbolVendorELF::Terminate();
|
|
|
|
SymbolFileDWARF::Terminate();
|
Add support for reading line tables from PDB files.
PDB is Microsoft's debug information format, and although we
cannot yet generate it, we still must be able to consume it.
Reason for this is that debug information for system libraries
(e.g. kernel32, C Runtime Library, etc) only have debug info
in PDB format, so in order to be able to support debugging
of system code, we must support it.
Currently this code should compile on every platform, but on
non-Windows platforms the PDB plugin will return 0 capabilities,
meaning that for now PDB is only supported on Windows. This
may change in the future, but the API is designed in such a way
that this will require few (if any) changes on the LLDB side.
In the future we can just flip a switch and everything will
work.
This patch only adds support for line tables. It does not return
information about functions, types, global variables, or anything
else. This functionality will be added in a followup patch.
Differential Revision: http://reviews.llvm.org/D17363
Reviewed by: Greg Clayton
llvm-svn: 262528
2016-03-03 06:05:52 +08:00
|
|
|
SymbolFilePDB::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
SymbolFileSymtab::Terminate();
|
|
|
|
UnwindAssembly_x86::Terminate();
|
|
|
|
UnwindAssemblyInstEmulation::Terminate();
|
|
|
|
EmulateInstructionARM64::Terminate();
|
|
|
|
SymbolFileDWARFDebugMap::Terminate();
|
|
|
|
ItaniumABILanguageRuntime::Terminate();
|
|
|
|
AppleObjCRuntimeV2::Terminate();
|
|
|
|
AppleObjCRuntimeV1::Terminate();
|
|
|
|
SystemRuntimeMacOSX::Terminate();
|
2015-04-10 00:49:25 +08:00
|
|
|
RenderScriptRuntime::Terminate();
|
2016-02-26 22:21:23 +08:00
|
|
|
JavaLanguageRuntime::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2015-09-02 02:22:39 +08:00
|
|
|
CPlusPlusLanguage::Terminate();
|
2015-11-05 08:24:36 +08:00
|
|
|
GoLanguage::Terminate();
|
2016-02-26 22:21:23 +08:00
|
|
|
JavaLanguage::Terminate();
|
2015-09-02 02:22:39 +08:00
|
|
|
ObjCLanguage::Terminate();
|
|
|
|
ObjCPlusPlusLanguage::Terminate();
|
2016-01-04 09:43:47 +08:00
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
#if defined(__APPLE__)
|
|
|
|
ProcessMachCore::Terminate();
|
|
|
|
ProcessKDP::Terminate();
|
|
|
|
SymbolVendorMacOSX::Terminate();
|
2015-11-06 08:22:53 +08:00
|
|
|
PlatformAppleTVSimulator::Terminate();
|
|
|
|
PlatformAppleWatchSimulator::Terminate();
|
|
|
|
PlatformRemoteAppleTV::Terminate();
|
|
|
|
PlatformRemoteAppleWatch::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(__FreeBSD__)
|
|
|
|
ProcessFreeBSD::Terminate();
|
|
|
|
#endif
|
|
|
|
Debugger::SettingsTerminate();
|
|
|
|
|
|
|
|
platform_gdb_server::PlatformRemoteGDBServer::Terminate();
|
|
|
|
process_gdb_remote::ProcessGDBRemote::Terminate();
|
|
|
|
DynamicLoaderStatic::Terminate();
|
|
|
|
|
2016-03-16 16:48:56 +08:00
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
|
|
|
OperatingSystemPython::Terminate();
|
|
|
|
#endif
|
|
|
|
OperatingSystemGo::Terminate();
|
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
// Now shutdown the common parts, in reverse order.
|
|
|
|
SystemInitializerCommon::Terminate();
|
|
|
|
}
|