diff options
| -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  | 

