From 79e9b30b111709761410f0b0a16860e3a7d0eef3 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Fri, 29 Aug 2014 00:50:36 +0000 Subject: [PATCH] Introduce -DLLVM_USE_SANITIZER=Undefined CMake option to build UBSan-ified version of LLVM/Clang. I've fixed most of the simple bugs and currently "check-llvm" test suite has 26 failures, and "check-clang" suite has 5 failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216701 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/HandleLLVMOptions.cmake | 4 ++++ docs/CMake.rst | 4 ++-- test/lit.cfg | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake index d17ce11fe9f..2fcdfbefd15 100644 --- a/cmake/modules/HandleLLVMOptions.cmake +++ b/cmake/modules/HandleLLVMOptions.cmake @@ -363,6 +363,10 @@ if(LLVM_USE_SANITIZER) if(LLVM_USE_SANITIZER STREQUAL "MemoryWithOrigins") append("-fsanitize-memory-track-origins" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) endif() + elseif (LLVM_USE_SANITIZER STREQUAL "Undefined") + append_common_sanitizer_flags() + append("-fsanitize=undefined -fno-sanitize=vptr -fno-sanitize-recover" + CMAKE_C_FLAGS CMAKE_CXX_FLAGS) else() message(WARNING "Unsupported value of LLVM_USE_SANITIZER: ${LLVM_USE_SANITIZER}") endif() diff --git a/docs/CMake.rst b/docs/CMake.rst index 1da123419dc..4a5165b7a13 100644 --- a/docs/CMake.rst +++ b/docs/CMake.rst @@ -288,8 +288,8 @@ LLVM-specific variables **LLVM_USE_SANITIZER**:STRING Define the sanitizer used to build LLVM binaries and tests. Possible values - are ``Address``, ``Memory`` and ``MemoryWithOrigins``. Defaults to empty - string. + are ``Address``, ``Memory``, ``MemoryWithOrigins`` and ``Undefined``. + Defaults to empty string. **LLVM_BUILD_DOCS**:BOOL Enables all enabled documentation targets (i.e. Doxgyen and Sphinx targets) to diff --git a/test/lit.cfg b/test/lit.cfg index b5a982c02d5..fefba5257cb 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -96,7 +96,7 @@ for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']: config.environment[symbolizer] = os.environ[symbolizer] # Propagate options for sanitizers. -for options in ['ASAN_OPTIONS']: +for options in ['ASAN_OPTIONS', 'UBSAN_OPTIONS']: if options in os.environ: config.environment[options] = os.environ[options] -- 2.34.1