summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-12-16 00:38:41 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2015-12-16 00:38:41 +0000
commit72b0111ce6aa57e2385c87fb21dc5b59ee296862 (patch)
tree0cfd8bcc8ba132712d5b0539039280749917fbe2 /compiler-rt
parentaf5b54a2493d68a4779df527e71a8230abc9aae9 (diff)
downloadbcm5719-llvm-72b0111ce6aa57e2385c87fb21dc5b59ee296862.tar.gz
bcm5719-llvm-72b0111ce6aa57e2385c87fb21dc5b59ee296862.zip
[cfi] Exclude ubsan runtime library from non-diag CFI builds.
Split the CFI runtime in two: cfi and cfi_diag. The latter includes UBSan runtime to allow printing diagnostics. llvm-svn: 255735
Diffstat (limited to 'compiler-rt')
-rw-r--r--compiler-rt/lib/cfi/CMakeLists.txt15
-rw-r--r--compiler-rt/lib/cfi/cfi.cc9
2 files changed, 21 insertions, 3 deletions
diff --git a/compiler-rt/lib/cfi/CMakeLists.txt b/compiler-rt/lib/cfi/CMakeLists.txt
index e441f09fba7..24e51814cda 100644
--- a/compiler-rt/lib/cfi/CMakeLists.txt
+++ b/compiler-rt/lib/cfi/CMakeLists.txt
@@ -8,6 +8,10 @@ set(CFI_CFLAGS
${SANITIZER_COMMON_CFLAGS}
)
+set(CFI_DIAG_CFLAGS
+ -DCFI_ENABLE_DIAG=1
+)
+
foreach(arch ${CFI_SUPPORTED_ARCH})
add_compiler_rt_runtime(clang_rt.cfi
STATIC
@@ -16,9 +20,18 @@ foreach(arch ${CFI_SUPPORTED_ARCH})
OBJECT_LIBS RTInterception
RTSanitizerCommon
RTSanitizerCommonLibc
+ CFLAGS ${CFI_CFLAGS}
+ PARENT_TARGET cfi)
+ add_compiler_rt_runtime(clang_rt.cfi_diag
+ STATIC
+ ARCHS ${arch}
+ SOURCES ${CFI_SOURCES}
+ OBJECT_LIBS RTInterception
+ RTSanitizerCommon
+ RTSanitizerCommonLibc
RTUbsan
RTUbsan_cxx
- CFLAGS ${CFI_CFLAGS}
+ CFLAGS ${CFI_CFLAGS} ${CFI_DIAG_CFLAGS}
PARENT_TARGET cfi)
endforeach()
diff --git a/compiler-rt/lib/cfi/cfi.cc b/compiler-rt/lib/cfi/cfi.cc
index 11a61fd43ac..e6249e60679 100644
--- a/compiler-rt/lib/cfi/cfi.cc
+++ b/compiler-rt/lib/cfi/cfi.cc
@@ -208,21 +208,24 @@ void __cfi_slowpath(uptr CallSiteTypeId, void *Ptr) {
static void InitializeFlags() {
SetCommonFlagsDefaults();
+#ifdef CFI_ENABLE_DIAG
__ubsan::Flags *uf = __ubsan::flags();
uf->SetDefaults();
+#endif
FlagParser cfi_parser;
RegisterCommonFlags(&cfi_parser);
+ cfi_parser.ParseString(GetEnv("CFI_OPTIONS"));
+#ifdef CFI_ENABLE_DIAG
FlagParser ubsan_parser;
__ubsan::RegisterUbsanFlags(&ubsan_parser, uf);
RegisterCommonFlags(&ubsan_parser);
const char *ubsan_default_options = __ubsan::MaybeCallUbsanDefaultOptions();
ubsan_parser.ParseString(ubsan_default_options);
-
- cfi_parser.ParseString(GetEnv("CFI_OPTIONS"));
ubsan_parser.ParseString(GetEnv("UBSAN_OPTIONS"));
+#endif
SetVerbosity(common_flags()->verbosity);
@@ -252,7 +255,9 @@ void __cfi_init() {
__cfi_shadow = (uptr)shadow;
init_shadow();
+#ifdef CFI_ENABLE_DIAG
__ubsan::InitAsPlugin();
+#endif
}
#if SANITIZER_CAN_USE_PREINIT_ARRAY
OpenPOWER on IntegriCloud