Index: zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_cmake.sh =================================================================== --- zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_cmake.sh +++ zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_cmake.sh @@ -18,15 +18,16 @@ if [ "$BUILDBOT_CLOBBER" != "" ]; then echo @@@BUILD_STEP clobber@@@ - rm -rf llvm clang_build + rm -rf llvm zlib clang_build fi # Always clobber bootstrap build trees. -rm -rf compiler_rt_build llvm_build64 llvm_build_ninja +rm -rf compiler_rt_build llvm_build64 llvm_build_ninja symbolizer_build* SUPPORTS_32_BITS=${SUPPORTS_32_BITS:-1} MAKE_JOBS=${MAX_MAKE_JOBS:-16} LLVM_CHECKOUT=$ROOT/llvm +ZLIB=$ROOT/zlib COMPILER_RT_CHECKOUT=$LLVM_CHECKOUT/projects/compiler-rt CMAKE_COMMON_OPTIONS="-DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_PARALLEL_LINK_JOBS=10" ENABLE_LIBCXX_FLAG= @@ -108,6 +109,8 @@ echo @@@BUILD_STEP update@@@ buildbot_update +echo @@@BUILD_STEP update zlib@@@ +git -C $ZLIB pull --rebase || git clone https://github.com/madler/zlib.git $ZLIB || echo @@@STEP_WARNINGS@@@ echo @@@BUILD_STEP lint@@@ CHECK_LINT=${COMPILER_RT_CHECKOUT}/lib/sanitizer_common/scripts/check_lint.sh @@ -175,6 +178,9 @@ # Now build everything else. (cd llvm_build64 && make -j$MAKE_JOBS) || echo @@@STEP_FAILURE@@@ +# Symbolizer dependencies. +(cd llvm_build64 && make -j$MAKE_JOBS llvm-ar llvm-link llvm-tblgen opt) || echo @@@STEP_FAILURE@@@ + # FIXME: Make these true dependencies of check-cfi-and-supported when # compiler-rt is configured as an external project. (cd llvm_build64 && make -j$MAKE_JOBS LLVMgold opt sanstats) || echo @@@STEP_FAILURE@@@ @@ -219,6 +225,22 @@ echo @@@BUILD_STEP test standalone compiler-rt@@@ (cd compiler_rt_build && make -j$MAKE_JOBS check-all) || echo @@@STEP_FAILURE@@@ +build_symbolizer() { + echo @@@BUILD_STEP build $1-bit symbolizer for $2@@@ + if [ ! -d symbolizer_build$1 ]; then + mkdir symbolizer_build$1 + fi + (cd symbolizer_build$1 && ZLIB_SRC=$ZLIB FLAGS=-m$1 \ + CLANG=${FRESH_CLANG_PATH}/clang \ + bash -eux $COMPILER_RT_CHECKOUT/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh \ + $(dirname $(find ../$2/ -name libclang_rt.*.a | head -n1)) || echo @@@STEP_WARNINGS@@@) +} +build_symbolizer 32 compiler_rt_build +build_symbolizer 64 compiler_rt_build + +echo @@@BUILD_STEP test standalone compiler-rt with symbolizer@@@ +(cd compiler_rt_build && make -j$MAKE_JOBS check-all) || echo @@@STEP_WARNINGS@@@ + HAVE_NINJA=${HAVE_NINJA:-1} if [ "$PLATFORM" == "Linux" -a $HAVE_NINJA == 1 ]; then echo @@@BUILD_STEP build with ninja@@@ @@ -249,6 +271,28 @@ check_ninja $CHECK_SCUDO scudo check_ninja $CHECK_TSAN tsan check_ninja $CHECK_UBSAN ubsan + + build_symbolizer 32 llvm_build_ninja + build_symbolizer 64 llvm_build_ninja + + check_ninja_with_symbolizer() { + CONDITION=$1 + SANITIZER=$2 + if [ "$CONDITION" == "1" ]; then + echo @@@BUILD_STEP ninja check-$SANITIZER with symbolizer@@@ + (cd llvm_build_ninja && ninja check-$SANITIZER) || echo @@@STEP_WARNINGS@@@ + fi + } + + check_ninja_with_symbolizer 1 sanitizer + check_ninja_with_symbolizer $CHECK_ASAN asan + check_ninja_with_symbolizer $CHECK_CFI cfi-and-supported + check_ninja_with_symbolizer $CHECK_DFSAN dfsan + check_ninja_with_symbolizer $CHECK_LSAN lsan + check_ninja_with_symbolizer $CHECK_MSAN msan + check_ninja_with_symbolizer $CHECK_SCUDO scudo + check_ninja_with_symbolizer $CHECK_TSAN tsan + check_ninja_with_symbolizer $CHECK_UBSAN ubsan fi if [ $BUILD_ANDROID == 1 ] ; then