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"
|
2016-08-02 19:15:55 +08:00
|
|
|
#include "lldb/Symbol/OCamlASTContext.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"
|
2016-04-14 22:28:34 +08:00
|
|
|
#include "Plugins/ABI/SysV-s390x/ABISysV_s390x.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-x86_64/ABISysV_x86_64.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#include "Plugins/Disassembler/llvm/DisassemblerLLVMC.h"
|
2016-07-21 16:30:55 +08:00
|
|
|
#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h"
|
2016-09-07 04:57:50 +08:00
|
|
|
#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h"
|
2016-03-29 23:00:26 +08:00
|
|
|
#include "Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h"
|
2016-06-29 21:58:27 +08:00
|
|
|
#include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h"
|
2016-03-29 23:00:26 +08:00
|
|
|
#include "Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#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"
|
2016-09-07 04:57:50 +08:00
|
|
|
#include "Plugins/Language/OCaml/OCamlLanguage.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/Go/OperatingSystemGo.h"
|
2016-06-29 21:58:27 +08:00
|
|
|
#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/Windows/PlatformWindows.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"
|
Minidump plugin: Adding ProcessMinidump, ThreadMinidump and register the plugin in SystemInitializerFull
Summary:
This plugin resembles the already existing Windows-only Minidump plugin.
The WinMinidumpPlugin uses the Windows API for parsing Minidumps
while this plugin is cross-platform because it includes a Minidump
parser (which is already commited)
It is able to produce a backtrace, to read the general puprose regiters,
inspect local variables, show image list, do memory reads, etc.
For now the only arches that this supports are x86_32 and x86_64.
This is because I have only written register contexts for those.
Others will come in next CLs.
I copied the WinMinidump tests and adapted them a little bit for them to
work with the new plugin (and they pass)
I will add more tests, aiming for better code coverage.
There is still functionality to be added, see TODOs in code.
Reviewers: labath, zturner
Subscribers: beanz, mgorny, modocache, lldb-commits, amccarth
Differential Revision: https://reviews.llvm.org/D25905
llvm-svn: 285587
2016-10-31 23:35:18 +08:00
|
|
|
#include "Plugins/Process/minidump/ProcessMinidump.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__)
|
2016-06-29 21:58:27 +08:00
|
|
|
#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h"
|
2015-11-06 08:22:53 +08:00
|
|
|
#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h"
|
|
|
|
#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h"
|
2016-06-29 21:58:27 +08:00
|
|
|
#include "Plugins/Platform/MacOSX/PlatformDarwinKernel.h"
|
2015-11-06 08:22:53 +08:00
|
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h"
|
|
|
|
#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h"
|
2016-06-29 21:58:27 +08:00
|
|
|
#include "Plugins/Platform/MacOSX/PlatformiOSSimulator.h"
|
|
|
|
#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h"
|
|
|
|
#include "Plugins/Process/mach-core/ProcessMachCore.h"
|
|
|
|
#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
2016-08-19 12:21:48 +08:00
|
|
|
#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h"
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
#if defined(__FreeBSD__)
|
|
|
|
#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(_MSC_VER)
|
2015-10-29 02:21:45 +08:00
|
|
|
#include "Plugins/Process/Windows/Live/ProcessWindowsLive.h"
|
2016-09-07 04:57:50 +08:00
|
|
|
#include "lldb/Host/windows/windows.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
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" PyObject *PyInit__lldb(void);
|
2015-10-17 01:52:03 +08:00
|
|
|
|
|
|
|
#define LLDBSwigPyInit PyInit__lldb
|
|
|
|
|
|
|
|
#else
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" void init_lldb(void);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
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
|
2016-09-07 04:57:50 +08:00
|
|
|
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);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSwigPythonWatchpointCallbackFunction(
|
|
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
|
|
const lldb::StackFrameSP &sb_frame, const lldb::WatchpointSP &sb_wp);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
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);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" void *
|
|
|
|
LLDBSwigPythonCreateSyntheticProvider(const char *python_class_name,
|
|
|
|
const char *session_dictionary_name,
|
|
|
|
const lldb::ValueObjectSP &valobj_sp);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
extern "C" void *
|
2016-09-07 04:57:50 +08:00
|
|
|
LLDBSwigPythonCreateCommandObject(const char *python_class_name,
|
|
|
|
const char *session_dictionary_name,
|
|
|
|
const lldb::DebuggerSP debugger_sp);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" void *LLDBSwigPythonCreateScriptedThreadPlan(
|
|
|
|
const char *python_class_name, const char *session_dictionary_name,
|
|
|
|
const lldb::ThreadPlanSP &thread_plan_sp);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSWIGPythonCallThreadPlan(void *implementor,
|
|
|
|
const char *method_name,
|
|
|
|
Event *event_sp, bool &got_error);
|
|
|
|
|
|
|
|
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);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
extern lldb::ValueObjectSP
|
2016-09-07 04:57:50 +08:00
|
|
|
LLDBSWIGPython_GetValueObjectSPFromSBValue(void *data);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSwigPython_UpdateSynthProviderInstance(void *implementor);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
extern "C" bool
|
2016-09-07 04:57:50 +08:00
|
|
|
LLDBSwigPython_MightHaveChildrenSynthProviderInstance(void *implementor);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
extern "C" void *
|
2016-09-07 04:57:50 +08:00
|
|
|
LLDBSwigPython_GetValueSynthProviderInstance(void *implementor);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
extern "C" bool
|
2016-09-07 04:57:50 +08:00
|
|
|
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);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
extern "C" bool
|
2016-09-07 04:57:50 +08:00
|
|
|
LLDBSwigPythonCallCommandObject(void *implementor, lldb::DebuggerSP &debugger,
|
|
|
|
const char *args,
|
|
|
|
lldb_private::CommandReturnObject &cmd_retobj,
|
|
|
|
lldb::ExecutionContextRefSP exe_ctx_ref_sp);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
extern "C" bool
|
2016-09-07 04:57:50 +08:00
|
|
|
LLDBSwigPythonCallModuleInit(const char *python_module_name,
|
|
|
|
const char *session_dictionary_name,
|
|
|
|
lldb::DebuggerSP &debugger);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" void *
|
|
|
|
LLDBSWIGPythonCreateOSPlugin(const char *python_class_name,
|
|
|
|
const char *session_dictionary_name,
|
|
|
|
const lldb::ProcessSP &process_sp);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordProcess(
|
|
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
|
|
lldb::ProcessSP &process, std::string &output);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordThread(
|
|
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
|
|
lldb::ThreadSP &thread, std::string &output);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordTarget(
|
|
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
|
|
lldb::TargetSP &target, std::string &output);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordFrame(
|
|
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
|
|
lldb::StackFrameSP &frame, std::string &output);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" bool LLDBSWIGPythonRunScriptKeywordValue(
|
|
|
|
const char *python_function_name, const char *session_dictionary_name,
|
|
|
|
lldb::ValueObjectSP &value, std::string &output);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
extern "C" void *
|
|
|
|
LLDBSWIGPython_GetDynamicSetting(void *module, const char *setting,
|
|
|
|
const lldb::TargetSP &target_sp);
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
SystemInitializerFull::SystemInitializerFull() {}
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
SystemInitializerFull::~SystemInitializerFull() {}
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
void SystemInitializerFull::Initialize() {
|
|
|
|
SystemInitializerCommon::Initialize();
|
|
|
|
ScriptInterpreterNone::Initialize();
|
2015-07-31 04:28:07 +08:00
|
|
|
|
2016-03-16 16:48:56 +08:00
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
2016-09-07 04:57:50 +08:00
|
|
|
OperatingSystemPython::Initialize();
|
2016-03-16 16:48:56 +08:00
|
|
|
#endif
|
2016-09-07 04:57:50 +08:00
|
|
|
OperatingSystemGo::Initialize();
|
2016-03-16 16:48:56 +08:00
|
|
|
|
2015-07-31 04:28:07 +08:00
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
2016-09-07 04:57:50 +08:00
|
|
|
InitializeSWIG();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +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();
|
2015-07-31 04:28:07 +08:00
|
|
|
#endif
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
platform_freebsd::PlatformFreeBSD::Initialize();
|
|
|
|
platform_linux::PlatformLinux::Initialize();
|
|
|
|
platform_netbsd::PlatformNetBSD::Initialize();
|
|
|
|
PlatformWindows::Initialize();
|
|
|
|
PlatformKalimba::Initialize();
|
|
|
|
platform_android::PlatformAndroid::Initialize();
|
|
|
|
PlatformRemoteiOS::Initialize();
|
|
|
|
PlatformMacOSX::Initialize();
|
2016-06-29 21:58:27 +08:00
|
|
|
#if defined(__APPLE__)
|
2016-09-07 04:57:50 +08:00
|
|
|
PlatformiOSSimulator::Initialize();
|
|
|
|
PlatformDarwinKernel::Initialize();
|
2016-06-29 21:58:27 +08:00
|
|
|
#endif
|
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
// Initialize LLVM and Clang
|
|
|
|
llvm::InitializeAllTargets();
|
|
|
|
llvm::InitializeAllAsmPrinters();
|
|
|
|
llvm::InitializeAllTargetMCs();
|
|
|
|
llvm::InitializeAllDisassemblers();
|
|
|
|
|
|
|
|
ClangASTContext::Initialize();
|
|
|
|
GoASTContext::Initialize();
|
|
|
|
JavaASTContext::Initialize();
|
|
|
|
OCamlASTContext::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();
|
|
|
|
DisassemblerLLVMC::Initialize();
|
|
|
|
|
|
|
|
JITLoaderGDB::Initialize();
|
|
|
|
ProcessElfCore::Initialize();
|
Minidump plugin: Adding ProcessMinidump, ThreadMinidump and register the plugin in SystemInitializerFull
Summary:
This plugin resembles the already existing Windows-only Minidump plugin.
The WinMinidumpPlugin uses the Windows API for parsing Minidumps
while this plugin is cross-platform because it includes a Minidump
parser (which is already commited)
It is able to produce a backtrace, to read the general puprose regiters,
inspect local variables, show image list, do memory reads, etc.
For now the only arches that this supports are x86_32 and x86_64.
This is because I have only written register contexts for those.
Others will come in next CLs.
I copied the WinMinidump tests and adapted them a little bit for them to
work with the new plugin (and they pass)
I will add more tests, aiming for better code coverage.
There is still functionality to be added, see TODOs in code.
Reviewers: labath, zturner
Subscribers: beanz, mgorny, modocache, lldb-commits, amccarth
Differential Revision: https://reviews.llvm.org/D25905
llvm-svn: 285587
2016-10-31 23:35:18 +08:00
|
|
|
minidump::ProcessMinidump::Initialize();
|
2016-09-07 04:57:50 +08:00
|
|
|
MemoryHistoryASan::Initialize();
|
|
|
|
AddressSanitizerRuntime::Initialize();
|
|
|
|
ThreadSanitizerRuntime::Initialize();
|
|
|
|
|
|
|
|
SymbolVendorELF::Initialize();
|
|
|
|
SymbolFileDWARF::Initialize();
|
|
|
|
SymbolFilePDB::Initialize();
|
|
|
|
SymbolFileSymtab::Initialize();
|
|
|
|
UnwindAssemblyInstEmulation::Initialize();
|
|
|
|
UnwindAssembly_x86::Initialize();
|
|
|
|
EmulateInstructionARM64::Initialize();
|
|
|
|
SymbolFileDWARFDebugMap::Initialize();
|
|
|
|
ItaniumABILanguageRuntime::Initialize();
|
|
|
|
AppleObjCRuntimeV2::Initialize();
|
|
|
|
AppleObjCRuntimeV1::Initialize();
|
|
|
|
SystemRuntimeMacOSX::Initialize();
|
|
|
|
RenderScriptRuntime::Initialize();
|
|
|
|
GoLanguageRuntime::Initialize();
|
|
|
|
JavaLanguageRuntime::Initialize();
|
|
|
|
|
|
|
|
CPlusPlusLanguage::Initialize();
|
|
|
|
GoLanguage::Initialize();
|
|
|
|
JavaLanguage::Initialize();
|
|
|
|
ObjCLanguage::Initialize();
|
|
|
|
ObjCPlusPlusLanguage::Initialize();
|
|
|
|
OCamlLanguage::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
|
|
|
#if defined(_MSC_VER)
|
2016-09-07 04:57:50 +08:00
|
|
|
ProcessWindowsLive::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
#if defined(__FreeBSD__)
|
2016-09-07 04:57:50 +08:00
|
|
|
ProcessFreeBSD::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
#if defined(__APPLE__)
|
2016-09-07 04:57:50 +08:00
|
|
|
SymbolVendorMacOSX::Initialize();
|
|
|
|
ProcessKDP::Initialize();
|
|
|
|
ProcessMachCore::Initialize();
|
|
|
|
PlatformAppleTVSimulator::Initialize();
|
|
|
|
PlatformAppleWatchSimulator::Initialize();
|
|
|
|
PlatformRemoteAppleTV::Initialize();
|
|
|
|
PlatformRemoteAppleWatch::Initialize();
|
|
|
|
DynamicLoaderDarwinKernel::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
2016-08-19 12:21:48 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
// This plugin is valid on any host that talks to a Darwin remote.
|
|
|
|
// It shouldn't be limited to __APPLE__.
|
|
|
|
StructuredDataDarwinLog::Initialize();
|
2016-08-19 12:21:48 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
//----------------------------------------------------------------------
|
|
|
|
// Platform agnostic plugins
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
platform_gdb_server::PlatformRemoteGDBServer::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
process_gdb_remote::ProcessGDBRemote::Initialize();
|
|
|
|
DynamicLoaderMacOSXDYLD::Initialize();
|
|
|
|
DynamicLoaderMacOS::Initialize();
|
|
|
|
DynamicLoaderPOSIXDYLD::Initialize();
|
|
|
|
DynamicLoaderStatic::Initialize();
|
|
|
|
DynamicLoaderWindowsDYLD::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
// Scan for any system or user LLDB plug-ins
|
|
|
|
PluginManager::Initialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
// The process settings need to know about installed plug-ins, so the Settings
|
|
|
|
// must be initialized
|
|
|
|
// AFTER PluginManager::Initialize is called.
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
Debugger::SettingsInitialize();
|
2015-04-01 05:03:22 +08:00
|
|
|
}
|
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
void SystemInitializerFull::InitializeSWIG() {
|
2015-04-01 05:03:22 +08:00
|
|
|
#if !defined(LLDB_DISABLE_PYTHON)
|
2016-09-07 04:57:50 +08:00
|
|
|
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, LLDBSWIGPythonRunScriptKeywordProcess,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordThread,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordTarget, LLDBSWIGPythonRunScriptKeywordFrame,
|
|
|
|
LLDBSWIGPythonRunScriptKeywordValue, LLDBSWIGPython_GetDynamicSetting,
|
|
|
|
LLDBSwigPythonCreateScriptedThreadPlan, LLDBSWIGPythonCallThreadPlan);
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
void SystemInitializerFull::Terminate() {
|
|
|
|
Timer scoped_timer(LLVM_PRETTY_FUNCTION, LLVM_PRETTY_FUNCTION);
|
|
|
|
|
|
|
|
Debugger::SettingsTerminate();
|
|
|
|
|
|
|
|
// Terminate and unload and loaded system or user LLDB plug-ins
|
|
|
|
PluginManager::Terminate();
|
|
|
|
|
|
|
|
ClangASTContext::Terminate();
|
|
|
|
GoASTContext::Terminate();
|
|
|
|
JavaASTContext::Terminate();
|
|
|
|
OCamlASTContext::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();
|
Minidump plugin: Adding ProcessMinidump, ThreadMinidump and register the plugin in SystemInitializerFull
Summary:
This plugin resembles the already existing Windows-only Minidump plugin.
The WinMinidumpPlugin uses the Windows API for parsing Minidumps
while this plugin is cross-platform because it includes a Minidump
parser (which is already commited)
It is able to produce a backtrace, to read the general puprose regiters,
inspect local variables, show image list, do memory reads, etc.
For now the only arches that this supports are x86_32 and x86_64.
This is because I have only written register contexts for those.
Others will come in next CLs.
I copied the WinMinidump tests and adapted them a little bit for them to
work with the new plugin (and they pass)
I will add more tests, aiming for better code coverage.
There is still functionality to be added, see TODOs in code.
Reviewers: labath, zturner
Subscribers: beanz, mgorny, modocache, lldb-commits, amccarth
Differential Revision: https://reviews.llvm.org/D25905
llvm-svn: 285587
2016-10-31 23:35:18 +08:00
|
|
|
minidump::ProcessMinidump::Terminate();
|
2016-09-07 04:57:50 +08:00
|
|
|
MemoryHistoryASan::Terminate();
|
|
|
|
AddressSanitizerRuntime::Terminate();
|
|
|
|
ThreadSanitizerRuntime::Terminate();
|
|
|
|
SymbolVendorELF::Terminate();
|
|
|
|
SymbolFileDWARF::Terminate();
|
|
|
|
SymbolFilePDB::Terminate();
|
|
|
|
SymbolFileSymtab::Terminate();
|
|
|
|
UnwindAssembly_x86::Terminate();
|
|
|
|
UnwindAssemblyInstEmulation::Terminate();
|
|
|
|
EmulateInstructionARM64::Terminate();
|
|
|
|
SymbolFileDWARFDebugMap::Terminate();
|
|
|
|
ItaniumABILanguageRuntime::Terminate();
|
|
|
|
AppleObjCRuntimeV2::Terminate();
|
|
|
|
AppleObjCRuntimeV1::Terminate();
|
|
|
|
SystemRuntimeMacOSX::Terminate();
|
|
|
|
RenderScriptRuntime::Terminate();
|
|
|
|
JavaLanguageRuntime::Terminate();
|
|
|
|
|
|
|
|
CPlusPlusLanguage::Terminate();
|
|
|
|
GoLanguage::Terminate();
|
|
|
|
JavaLanguage::Terminate();
|
|
|
|
ObjCLanguage::Terminate();
|
|
|
|
ObjCPlusPlusLanguage::Terminate();
|
|
|
|
OCamlLanguage::Terminate();
|
2016-01-04 09:43:47 +08:00
|
|
|
|
2015-04-01 05:03:22 +08:00
|
|
|
#if defined(__APPLE__)
|
2016-09-07 04:57:50 +08:00
|
|
|
DynamicLoaderDarwinKernel::Terminate();
|
|
|
|
ProcessMachCore::Terminate();
|
|
|
|
ProcessKDP::Terminate();
|
|
|
|
SymbolVendorMacOSX::Terminate();
|
|
|
|
PlatformAppleTVSimulator::Terminate();
|
|
|
|
PlatformAppleWatchSimulator::Terminate();
|
|
|
|
PlatformRemoteAppleTV::Terminate();
|
|
|
|
PlatformRemoteAppleWatch::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(__FreeBSD__)
|
2016-09-07 04:57:50 +08:00
|
|
|
ProcessFreeBSD::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
#endif
|
2016-09-07 04:57:50 +08:00
|
|
|
Debugger::SettingsTerminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
platform_gdb_server::PlatformRemoteGDBServer::Terminate();
|
|
|
|
process_gdb_remote::ProcessGDBRemote::Terminate();
|
|
|
|
StructuredDataDarwinLog::Terminate();
|
2016-08-19 12:21:48 +08:00
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
DynamicLoaderMacOSXDYLD::Terminate();
|
|
|
|
DynamicLoaderMacOS::Terminate();
|
|
|
|
DynamicLoaderPOSIXDYLD::Terminate();
|
|
|
|
DynamicLoaderStatic::Terminate();
|
|
|
|
DynamicLoaderWindowsDYLD::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
|
2016-03-16 16:48:56 +08:00
|
|
|
#ifndef LLDB_DISABLE_PYTHON
|
2016-09-07 04:57:50 +08:00
|
|
|
OperatingSystemPython::Terminate();
|
2016-03-16 16:48:56 +08:00
|
|
|
#endif
|
2016-09-07 04:57:50 +08:00
|
|
|
OperatingSystemGo::Terminate();
|
|
|
|
|
|
|
|
platform_freebsd::PlatformFreeBSD::Terminate();
|
|
|
|
platform_linux::PlatformLinux::Terminate();
|
|
|
|
platform_netbsd::PlatformNetBSD::Terminate();
|
|
|
|
PlatformWindows::Terminate();
|
|
|
|
PlatformKalimba::Terminate();
|
|
|
|
platform_android::PlatformAndroid::Terminate();
|
|
|
|
PlatformMacOSX::Terminate();
|
|
|
|
PlatformRemoteiOS::Terminate();
|
2016-06-29 21:58:27 +08:00
|
|
|
#if defined(__APPLE__)
|
2016-09-07 04:57:50 +08:00
|
|
|
PlatformiOSSimulator::Terminate();
|
|
|
|
PlatformDarwinKernel::Terminate();
|
2016-06-29 21:58:27 +08:00
|
|
|
#endif
|
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
// Now shutdown the common parts, in reverse order.
|
|
|
|
SystemInitializerCommon::Terminate();
|
2015-04-01 05:03:22 +08:00
|
|
|
}
|