summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2014-08-23 00:47:22 +0000
committerSean Callanan <scallanan@apple.com>2014-08-23 00:47:22 +0000
commit0de7ecd34601395f499fa81ad9e9dd2a3b29ac2c (patch)
treeaa9daa1810502dcc0c8240a3fa3e56458de9e2a5
parent62e9fb9727c10e0b63cffb428eaf1f6ccc3dd581 (diff)
downloadbcm5719-llvm-0de7ecd34601395f499fa81ad9e9dd2a3b29ac2c.tar.gz
bcm5719-llvm-0de7ecd34601395f499fa81ad9e9dd2a3b29ac2c.zip
Initialize LLVM when LLDB is initialized, and
install a crash handler. <rdar://problem/18083226> llvm-svn: 216309
-rw-r--r--lldb/source/Expression/ClangExpressionParser.cpp10
-rw-r--r--lldb/source/lldb.cpp17
2 files changed, 16 insertions, 11 deletions
diff --git a/lldb/source/Expression/ClangExpressionParser.cpp b/lldb/source/Expression/ClangExpressionParser.cpp
index 3b0269ab319..a204a1ea916 100644
--- a/lldb/source/Expression/ClangExpressionParser.cpp
+++ b/lldb/source/Expression/ClangExpressionParser.cpp
@@ -103,16 +103,6 @@ ClangExpressionParser::ClangExpressionParser (ExecutionContextScope *exe_scope,
m_compiler (),
m_code_generator ()
{
- // Initialize targets first, so that --version shows registered targets.
- static struct InitializeLLVM {
- InitializeLLVM() {
- llvm::InitializeAllTargets();
- llvm::InitializeAllAsmPrinters();
- llvm::InitializeAllTargetMCs();
- llvm::InitializeAllDisassemblers();
- }
- } InitializeLLVM;
-
// 1. Create a new compiler instance.
m_compiler.reset(new CompilerInstance());
diff --git a/lldb/source/lldb.cpp b/lldb/source/lldb.cpp
index 613eaf27b31..cd620b7945b 100644
--- a/lldb/source/lldb.cpp
+++ b/lldb/source/lldb.cpp
@@ -25,6 +25,7 @@
#include "lldb/Target/Thread.h"
#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/TargetSelect.h"
#include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h"
#include "Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h"
@@ -95,6 +96,12 @@
using namespace lldb;
using namespace lldb_private;
+static void fatal_error_handler(void *user_data, const std::string& reason,
+ bool gen_crash_diag) {
+ Host::SetCrashDescription(reason.c_str());
+ ::abort();
+}
+
void
lldb_private::Initialize ()
{
@@ -110,7 +117,15 @@ lldb_private::Initialize ()
HostInfo::Initialize();
Timer::Initialize ();
Timer scoped_timer (__PRETTY_FUNCTION__, __PRETTY_FUNCTION__);
-
+
+ // Initialize LLVM and Clang
+ llvm::InitializeAllTargets();
+ llvm::InitializeAllAsmPrinters();
+ llvm::InitializeAllTargetMCs();
+ llvm::InitializeAllDisassemblers();
+ llvm::install_fatal_error_handler(fatal_error_handler, 0);
+
+ // Initialize plug-ins
ABIMacOSX_i386::Initialize();
ABIMacOSX_arm::Initialize();
ABIMacOSX_arm64::Initialize();
OpenPOWER on IntegriCloud