diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-12-16 00:38:41 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-12-16 00:38:41 +0000 |
| commit | 72b0111ce6aa57e2385c87fb21dc5b59ee296862 (patch) | |
| tree | 0cfd8bcc8ba132712d5b0539039280749917fbe2 /compiler-rt | |
| parent | af5b54a2493d68a4779df527e71a8230abc9aae9 (diff) | |
| download | bcm5719-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.txt | 15 | ||||
| -rw-r--r-- | compiler-rt/lib/cfi/cfi.cc | 9 |
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 |

