From dcd109a82da9db93858973cefd8a6266cdd24468 Mon Sep 17 00:00:00 2001 From: Ivan Krasin Date: Fri, 13 Jan 2017 17:30:10 +0000 Subject: [PATCH] Fix UBSan bots by blacklisting bits/stl_tree.h. Summary: libstdc++ has some undefined behavior in bits/stl_tree.h that has recently became excercised by some of the LLVM code. Given that fixing libstdc++ will take years, adding the file into a blacklist to fix bots seems like a necessity. Reviewers: vitalybuka Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D28686 llvm-svn: 291918 --- cmake/modules/HandleLLVMOptions.cmake | 2 ++ utils/sanitizers/ubsan_blacklist.txt | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 utils/sanitizers/ubsan_blacklist.txt diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake index 4ce7f57403c..1825b55ed54 100644 --- a/cmake/modules/HandleLLVMOptions.cmake +++ b/cmake/modules/HandleLLVMOptions.cmake @@ -555,6 +555,8 @@ if(LLVM_USE_SANITIZER) append_common_sanitizer_flags() append("-fsanitize=undefined -fno-sanitize=vptr,function -fno-sanitize-recover=all" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize-blacklist=${CMAKE_SOURCE_DIR}/utils/sanitizers/ubsan_blacklist.txt" + CMAKE_C_FLAGS CMAKE_CXX_FLAGS) elseif (LLVM_USE_SANITIZER STREQUAL "Thread") append_common_sanitizer_flags() append("-fsanitize=thread" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) diff --git a/utils/sanitizers/ubsan_blacklist.txt b/utils/sanitizers/ubsan_blacklist.txt new file mode 100644 index 00000000000..49975866ea4 --- /dev/null +++ b/utils/sanitizers/ubsan_blacklist.txt @@ -0,0 +1,7 @@ +# This blacklist should be applied when LLVM is built +# with -fsanitize=undefined instrumentation. It exists +# because libstdc++ has some undefined behavior issues +# in some of the headers, in particular, stl_tree.h. + +# upcast of address with insufficient space for an object of type std::_Rb_tree_node<...> +src:*bits/stl_tree.h