Skip to content

Instantly share code, notes, and snippets.

@blockspacer
Last active May 21, 2021 13:26
Show Gist options
  • Save blockspacer/c8ffdf460d962bdc99dccc847f39e3a6 to your computer and use it in GitHub Desktop.
Save blockspacer/c8ffdf460d962bdc99dccc847f39e3a6 to your computer and use it in GitHub Desktop.
Build llvm with sanitizers: First, build sanitized cxx cxxabi compiler-rt with LLVM_USE_SANITIZER. Next, build compiler-rt without LLVM_USE_SANITIZER but with COMPILER_RT_BUILD_SANITIZERS="ON"
export CC=clang
export CXX=clang++
rm CMakeCache.txt ; cmake ../llvm -DCMAKE_BUILD_TYPE="Release" -DBUILD_SHARED_LIBS="ON" -DCONAN_CMAKE_POSITION_INDEPENDENT_CODE="ON" -DCMAKE_VERBOSE_MAKEFILE="ON" -DLLVM_ENABLE_PROJECTS="compiler-rt;libcxx;libcxxabi" -DLLVM_PARALLEL_COMPILE_JOBS="5" -DLLVM_COMPILER_JOBS="5" -DLLVM_PARALLEL_LINK_JOBS="1" -DLLVM_USE_SANITIZER="Address;Undefined" -DLLVM_ENABLE_LIBCXX="ON" -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD="OFF" -DLLVM_TOOL_OPENMP_BUILD="OFF" -DCLANG_ENABLE_ARCMT="OFF" -DCLANG_ENABLE_STATIC_ANALYZER="OFF" -DCLANG_ENABLE_FORMAT="OFF" -DCLANG_TOOL_CLANG_FORMAT_BUILD="OFF" -DCLANG_TOOL_CLANG_FUZZER_BUILD="OFF" -DLLVM_BUILD_INSTRUMENTED="OFF" -DLLVM_BUILD_LLVM_DYLIB="OFF" -DLLVM_LINK_LLVM_DYLIB="OFF" -DLLVM_ENABLE_LTO="OFF" -DLLVM_ENABLE_ZLIB="ON" -DLLVM_ENABLE_FFI="OFF" -DLLVM_BUILD_TOOLS="OFF" -DLLVM_INCLUDE_TOOLS="ON" -DLLVM_USE_OPROFILE="OFF" -DCOMPILER_RT_BUILD_SANITIZERS="ON" -DCOMPILER_RT_BUILD_BUILTINS="OFF" -DCOMPILER_RT_BUILD_XRAY="ON" -DCOMPILER_RT_BUILD_XRAY_NO_PREINIT="OFF" -DCOMPILER_RT_BUILD_PROFILE="ON" -DCOMPILER_RT_BUILD_LIBFUZZER="ON" -DCOMPILER_RT_BUILD_MEMPROF="ON" -DLLVM_ENABLE_BINDINGS="OFF" -DLLVM_INSTALL_BINUTILS_SYMLINKS="OFF" -DLLVM_INSTALL_CCTOOLS_SYMLINKS="OFF" -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_APPEND_VC_REV="ON" -DLLVM_ENABLE_EH="OFF" -DLLVM_BUILD_32_BITS="OFF" -DLLVM_ENABLE_EXPENSIVE_CHECKS="OFF" -DLLVM_ENABLE_IDE="OFF" -DLLVM_ENABLE_PIC="ON" -DCMAKE_POSITION_INDEPENDENT_CODE="ON" -DCOMPILER_RT_INCLUDE_TESTS="OFF" -DLLDB_INCLUDE_TESTS="OFF" -DCLANG_INCLUDE_TESTS="OFF" -DLIBCXXABI_INCLUDE_TESTS="OFF" -DLIBCXX_INCLUDE_TESTS="OFF" -DLLDB_ENABLE_PYTHON="OFF" -DLLDB_ENABLE_LIBEDIT="OFF" -DLLDB_ENABLE_CURSES="OFF" -DLLDB_ENABLE_LIBXML2="OFF" -DLLDB_ENABLE_LUA="OFF" -DLLDB_ENABLE_LZMA="OFF" -DLLVM_INCLUDE_TESTS="OFF" -DLLVM_BUILD_TESTS="OFF" -DBUILD_TESTS="OFF" -DLLVM_BUILD_EXAMPLES="OFF" -DLLVM_INCLUDE_EXAMPLES="OFF" -DLLVM_BUILD_BENCHMARKS="OFF" -DLLVM_INCLUDE_BENCHMARKS="OFF" -DLLVM_ENABLE_DOXYGEN="OFF" -DLLVM_ENABLE_DOXYGEN_QT_HELP="OFF" -DLLVM_DOXYGEN_SVG="OFF" -DLLVM_ENABLE_OCAMLDOC="OFF" -DLLVM_ENABLE_SPHINX="OFF" -DLLVM_ENABLE_RTTI="OFF" -DLLVM_ENABLE_WARNINGS="ON" -DCOMPILER_RT_SANITIZERS_TO_BUILD="asan;msan;tsan;safestack;cfi;esan" -DLLVM_OPTIMIZED_TABLEGEN="ON" -DLLVM_ENABLE_ASSERTIONS="OFF"
cmake --build . -- cxx cxxabi compiler-rt
# ok
nm lib/libc++.so.1 | grep san
# NOT FOUND!
find . -name libclang_rt.*so*
rm CMakeCache.txt ; cmake ../llvm -DCMAKE_BUILD_TYPE="Release" -DBUILD_SHARED_LIBS="ON" -DCONAN_CMAKE_POSITION_INDEPENDENT_CODE="ON" -DCMAKE_VERBOSE_MAKEFILE="ON" -DLLVM_ENABLE_PROJECTS="compiler-rt" -DLLVM_PARALLEL_COMPILE_JOBS="5" -DLLVM_COMPILER_JOBS="5" -DLLVM_PARALLEL_LINK_JOBS="1" -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD="OFF" -DLLVM_TOOL_OPENMP_BUILD="OFF" -DCLANG_ENABLE_ARCMT="OFF" -DCLANG_ENABLE_STATIC_ANALYZER="OFF" -DCLANG_ENABLE_FORMAT="OFF" -DCLANG_TOOL_CLANG_FORMAT_BUILD="OFF" -DCLANG_TOOL_CLANG_FUZZER_BUILD="OFF" -DCOMPILER_RT_BUILD_SANITIZERS="ON" -DCOMPILER_RT_BUILD_BUILTINS="ON" -DCOMPILER_RT_BUILD_XRAY="ON" -DCOMPILER_RT_BUILD_XRAY_NO_PREINIT="OFF" -DCOMPILER_RT_BUILD_PROFILE="ON" -DCOMPILER_RT_BUILD_LIBFUZZER="ON" -DCOMPILER_RT_BUILD_MEMPROF="ON" -DLLVM_ENABLE_BINDINGS="OFF" -DLLVM_INSTALL_BINUTILS_SYMLINKS="OFF" -DLLVM_INSTALL_CCTOOLS_SYMLINKS="OFF" -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_APPEND_VC_REV="ON" -DLLVM_ENABLE_EH="OFF" -DLLVM_BUILD_32_BITS="OFF" -DLLVM_ENABLE_EXPENSIVE_CHECKS="OFF" -DLLVM_ENABLE_IDE="OFF" -DLLVM_ENABLE_PIC="ON" -DCMAKE_POSITION_INDEPENDENT_CODE="ON" -DCOMPILER_RT_INCLUDE_TESTS="OFF" -DLLDB_INCLUDE_TESTS="OFF" -DCLANG_INCLUDE_TESTS="OFF" -DLIBCXXABI_INCLUDE_TESTS="OFF" -DLIBCXX_INCLUDE_TESTS="OFF" -DLLDB_ENABLE_PYTHON="OFF" -DLLDB_ENABLE_LIBEDIT="OFF" -DLLDB_ENABLE_CURSES="OFF" -DLLDB_ENABLE_LIBXML2="OFF" -DLLDB_ENABLE_LUA="OFF" -DLLDB_ENABLE_LZMA="OFF" -DLLVM_INCLUDE_TESTS="OFF" -DLLVM_BUILD_TESTS="OFF" -DBUILD_TESTS="OFF" -DLLVM_BUILD_EXAMPLES="OFF" -DLLVM_INCLUDE_EXAMPLES="OFF" -DLLVM_BUILD_BENCHMARKS="OFF" -DLLVM_INCLUDE_BENCHMARKS="OFF" -DLLVM_ENABLE_DOXYGEN="OFF" -DLLVM_ENABLE_DOXYGEN_QT_HELP="OFF" -DLLVM_DOXYGEN_SVG="OFF" -DLLVM_ENABLE_OCAMLDOC="OFF" -DLLVM_ENABLE_SPHINX="OFF" -DLLVM_ENABLE_RTTI="OFF" -DLLVM_ENABLE_WARNINGS="ON" -DCOMPILER_RT_SANITIZERS_TO_BUILD="asan;msan;tsan;safestack;cfi;esan" -DLLVM_OPTIMIZED_TABLEGEN="ON" -DLLVM_ENABLE_ASSERTIONS="OFF"
cmake --build . -- compiler-rt
# ok
find . -name libclang_rt.*so*
# ok
nm lib/libc++.so.1 | grep san
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment