blob: 6ad4f48a319a5fb7e696c38e21f0a0c015b6a9eb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
/*
* Copyright 2012, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "bcc/Support/Initialization.h"
#include <cstdlib>
#include <llvm/Support/ErrorHandling.h>
#include <llvm/Support/TargetSelect.h>
#include "bcc/Config/Config.h"
#include "bcc/Support/Log.h"
namespace {
void llvm_error_handler(void *pUserData, const std::string &pMessage,
bool pGenCrashDiag) {
ALOGE("%s", pMessage.c_str());
::exit(1);
}
} // end anonymous namespace
void bcc::init::Initialize() {
static bool is_initialized = false;
if (is_initialized) {
return;
}
// Setup error handler for LLVM.
llvm::remove_fatal_error_handler();
llvm::install_fatal_error_handler(llvm_error_handler, NULL);
#if defined(PROVIDE_ARM_CODEGEN)
LLVMInitializeARMAsmPrinter();
LLVMInitializeARMAsmParser();
# if USE_DISASSEMBLER
LLVMInitializeARMDisassembler();
# endif
LLVMInitializeARMTargetMC();
LLVMInitializeARMTargetInfo();
LLVMInitializeARMTarget();
#endif
#if defined(PROVIDE_MIPS_CODEGEN)
LLVMInitializeMipsAsmPrinter();
LLVMInitializeMipsAsmParser();
# if USE_DISASSEMBLER
LLVMInitializeMipsDisassembler();
# endif
LLVMInitializeMipsTargetMC();
LLVMInitializeMipsTargetInfo();
LLVMInitializeMipsTarget();
#endif
#if defined(PROVIDE_X86_CODEGEN)
LLVMInitializeX86AsmPrinter();
LLVMInitializeX86AsmParser();
# if USE_DISASSEMBLER
LLVMInitializeX86Disassembler();
# endif
LLVMInitializeX86TargetMC();
LLVMInitializeX86TargetInfo();
LLVMInitializeX86Target();
#endif
#if defined(PROVIDE_ARM64_CODEGEN)
LLVMInitializeAArch64AsmPrinter();
LLVMInitializeAArch64AsmParser();
# if USE_DISASSEMBLER
LLVMInitializeAArch64Disassembler();
# endif
LLVMInitializeAArch64TargetMC();
LLVMInitializeAArch64TargetInfo();
LLVMInitializeAArch64Target();
#endif
is_initialized = true;
return;
}
|