<div dir="ltr">We really should rewrite those in Python. Buildbot has an extensive python API, which other Zorg bots use.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 12, 2015 at 10:59 PM, Alexey Samsonov <span dir="ltr"><<a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: samsonov<br>
Date: Mon Jan 12 13:59:38 2015<br>
New Revision: 225680<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=225680&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=225680&view=rev</a><br>
Log:<br>
Use instrumented libc++ in UBSan bootstrap. Generalize the scripts<br>
<br>
Modified:<br>
    zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_bootstrap.sh<br>
    zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_functions.sh<br>
<br>
Modified: zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_bootstrap.sh<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_bootstrap.sh?rev=225680&r1=225679&r2=225680&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_bootstrap.sh?rev=225680&r1=225679&r2=225680&view=diff</a><br>
==============================================================================<br>
--- zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_bootstrap.sh (original)<br>
+++ zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_bootstrap.sh Mon Jan 12 13:59:38 2015<br>
@@ -16,6 +16,7 @@ STAGE2_ASAN_DIR=llvm_build_asan<br>
 STAGE2_MSAN_DIR=llvm_build_msan<br>
 STAGE2_LIBCXX_MSAN_DIR=libcxx_build_msan<br>
 STAGE2_LIBCXX_ASAN_DIR=libcxx_build_asan<br>
+STAGE2_LIBCXX_UBSAN_DIR=libcxx_build_ubsan<br>
 STAGE2_UBSAN_DIR=llvm_build_ubsan<br>
 STAGE3_ASAN_DIR=llvm_build2_asan<br>
 STAGE3_MSAN_DIR=llvm_build2_msan<br>
<br>
Modified: zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_functions.sh<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_functions.sh?rev=225680&r1=225679&r2=225680&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_functions.sh?rev=225680&r1=225679&r2=225680&view=diff</a><br>
==============================================================================<br>
--- zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_functions.sh (original)<br>
+++ zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_functions.sh Mon Jan 12 13:59:38 2015<br>
@@ -112,93 +112,77 @@ function common_stage2_variables {<br>
   llvm_symbolizer_path=${stage1_clang_path}/llvm-symbolizer<br>
 }<br>
<br>
-function build_stage2_msan {<br>
-  echo @@@BUILD_STEP build libcxx/msan@@@<br>
-<br>
+function build_stage2 {<br>
+  local sanitizer_name=$1<br>
+  local libcxx_build_dir=$2<br>
+  local build_dir=$3<br>
+<br>
+  echo @@@BUILD_STEP build libcxx/$sanitizer_name@@@<br>
   common_stage2_variables<br>
-  export MSAN_SYMBOLIZER_PATH="${llvm_symbolizer_path}"<br>
-<br>
-  local memory_sanitizer_kind="Memory"<br>
-  BUILDBOT_MSAN_ORIGINS=${BUILDBOT_MSAN_ORIGINS:-}<br>
-  if [ "$BUILDBOT_MSAN_ORIGINS" != "" ]; then<br>
-      memory_sanitizer_kind="MemoryWithOrigins"<br>
+<br>
+  if [ "$sanitizer_name" == "msan" ]; then<br>
+    export MSAN_SYMBOLIZER_PATH="${llvm_symbolizer_path}"<br>
+    local llvm_use_sanitizer="Memory"<br>
+    local fsanitize_flag="-fsanitize=memory"<br>
+    BUILDBOT_MSAN_ORIGINS=${BUILDBOT_MSAN_ORIGINS:-}<br>
+    if [ "$BUILDBOT_MSAN_ORIGINS" != "" ]; then<br>
+      llvm_use_sanitizer="MemoryWithOrigins"<br>
+    fi<br>
+    local build_type="Release"<br>
+  elif [ "$sanitizer_name" == "asan" ]; then<br>
+    export ASAN_SYMBOLIZER_PATH="${llvm_symbolizer_path}"<br>
+    export ASAN_OPTIONS="check_initialization_order=true:detect_stack_use_after_return=1:detect_leaks=1"<br>
+    local llvm_use_sanitizer="Address"<br>
+    local fsanitize_flag="-fsanitize=address"<br>
+    local build_type="Release"<br>
+  elif [ "$sanitizer_name" == "ubsan" ]; then<br>
+    export UBSAN_OPTIONS="external_symbolizer_path=${llvm_symbolizer_path}:print_stacktrace=1"<br>
+    local llvm_use_sanitizer="Undefined"<br>
+    local fsanitize_flag="-fsanitize=undefined"<br>
+    local build_type="Debug"<br>
+  else<br>
+    echo "Unknown sanitizer!"<br>
+    exit 1<br>
   fi<br>
<br>
-  mkdir -p ${STAGE2_LIBCXX_MSAN_DIR}<br>
-  (cd ${STAGE2_LIBCXX_MSAN_DIR} && \<br>
+  mkdir -p ${libcxx_build_dir}<br>
+  (cd ${libcxx_build_dir} && \<br>
     cmake \<br>
       ${cmake_stage2_common_options} \<br>
-      -DLLVM_USE_SANITIZER=${memory_sanitizer_kind} \<br>
+      -DCMAKE_BUILD_TYPE=${build_type} \<br>
+      -DLLVM_USE_SANITIZER=${llvm_use_sanitizer} \<br>
       $LLVM && \<br>
     ninja cxx cxxabi) || echo @@@STEP_FAILURE@@@<br>
<br>
-  echo @@@BUILD_STEP build clang/msan@@@<br>
+  echo @@@BUILD_STEP build clang/$sanitizer_name@@@<br>
<br>
-  local msan_ldflags="-lc++abi -Wl,--rpath=${ROOT}/${STAGE2_LIBCXX_MSAN_DIR}/lib -L${ROOT}/${STAGE2_LIBCXX_MSAN_DIR}/lib"<br>
+  local sanitizer_ldflags="-lc++abi -Wl,--rpath=${ROOT}/${libcxx_build_dir}/lib -L${ROOT}/${libcxx_build_dir}/lib"<br>
   # See <a href="http://llvm.org/bugs/show_bug.cgi?id=19071" target="_blank">http://llvm.org/bugs/show_bug.cgi?id=19071</a>, <a href="http://www.cmake.org/Bug/view.php?id=15264" target="_blank">http://www.cmake.org/Bug/view.php?id=15264</a><br>
-  local cmake_bug_workaround_cflags="$msan_ldflags -fsanitize=memory -w"<br>
-  local msan_cflags="-I${ROOT}/${STAGE2_LIBCXX_MSAN_DIR}/include -I${ROOT}/${STAGE2_LIBCXX_MSAN_DIR}/include/c++/v1 $cmake_bug_workaround_cflags"<br>
-  mkdir -p ${STAGE2_MSAN_DIR}<br>
-  (cd ${STAGE2_MSAN_DIR} && \<br>
+  local cmake_bug_workaround_cflags="$sanitizer_ldflags $fsanitize_flag -w"<br>
+  local sanitizer_cflags="-I${ROOT}/${libcxx_build_dir}/include -I${ROOT}/${libcxx_build_dir}/include/c++/v1 $cmake_bug_workaround_cflags"<br>
+  mkdir -p ${build_dir}<br>
+  (cd ${build_dir} && \<br>
    cmake ${cmake_stage2_common_options} \<br>
-     -DLLVM_USE_SANITIZER=${memory_sanitizer_kind} \<br>
+     -DCMAKE_BUILD_TYPE=${build_type} \<br>
+     -DLLVM_USE_SANITIZER=${llvm_use_sanitizer} \<br>
      -DLLVM_ENABLE_LIBCXX=ON \<br>
-     -DCMAKE_C_FLAGS="${msan_cflags}" \<br>
-     -DCMAKE_CXX_FLAGS="${msan_cflags}" \<br>
-     -DCMAKE_EXE_LINKER_FLAGS="${msan_ldflags}" \<br>
+     -DCMAKE_C_FLAGS="${sanitizer_cflags}" \<br>
+     -DCMAKE_CXX_FLAGS="${sanitizer_cflags}" \<br>
+     -DCMAKE_EXE_LINKER_FLAGS="${sanitizer_ldflags}" \<br>
      $LLVM && \<br>
    ninja clang lld) || echo @@@STEP_FAILURE@@@<br>
 }<br>
<br>
-function build_stage2_asan {<br>
-  echo @@@BUILD_STEP build libcxx/asan@@@<br>
-<br>
-  common_stage2_variables<br>
-  export ASAN_SYMBOLIZER_PATH="${llvm_symbolizer_path}"<br>
-<br>
-  mkdir -p ${STAGE2_LIBCXX_ASAN_DIR}<br>
-  (cd ${STAGE2_LIBCXX_ASAN_DIR} && \<br>
-    cmake \<br>
-      ${cmake_stage2_common_options} \<br>
-      -DLLVM_USE_SANITIZER=Address \<br>
-      $LLVM && \<br>
-    ninja cxx cxxabi) || echo @@@STEP_FAILURE@@@<br>
-<br>
-<br>
-  echo @@@BUILD_STEP build clang/asan@@@<br>
+function build_stage2_msan {<br>
+  build_stage2 msan "${STAGE2_LIBCXX_MSAN_DIR}" "${STAGE2_MSAN_DIR}"<br>
+}<br>
<br>
-  # Turn on init-order checker as ASan runtime option.<br>
-  export ASAN_OPTIONS="check_initialization_order=true:detect_stack_use_after_return=1:detect_leaks=1"<br>
-  local asan_ldflags="-lc++abi -Wl,--rpath=${ROOT}/${STAGE2_LIBCXX_ASAN_DIR}/lib -L${ROOT}/${STAGE2_LIBCXX_ASAN_DIR}/lib"<br>
-  # See <a href="http://llvm.org/bugs/show_bug.cgi?id=19071" target="_blank">http://llvm.org/bugs/show_bug.cgi?id=19071</a>, <a href="http://www.cmake.org/Bug/view.php?id=15264" target="_blank">http://www.cmake.org/Bug/view.php?id=15264</a><br>
-  local cmake_bug_workaround_cflags="$asan_ldflags -fsanitize=address -w"<br>
-  local asan_cflags="-I${ROOT}/${STAGE2_LIBCXX_ASAN_DIR}/include -I${ROOT}/${STAGE2_LIBCXX_ASAN_DIR}/include/c++/v1 $cmake_bug_workaround_cflags"<br>
-  mkdir -p ${STAGE2_ASAN_DIR}<br>
-  (cd ${STAGE2_ASAN_DIR} && \<br>
-   cmake ${cmake_stage2_common_options} \<br>
-     -DLLVM_USE_SANITIZER=Address \<br>
-     -DLLVM_ENABLE_LIBCXX=ON \<br>
-     -DCMAKE_C_FLAGS="${asan_cflags}" \<br>
-     -DCMAKE_CXX_FLAGS="${asan_cflags}" \<br>
-     -DCMAKE_EXE_LINKER_FLAGS="${asan_ldflags}" \<br>
-   $LLVM && \<br>
-   ninja clang lld) || echo @@@STEP_FAILURE@@@<br>
+function build_stage2_asan {<br>
+  build_stage2 asan "${STAGE2_LIBCXX_ASAN_DIR}" "${STAGE2_ASAN_DIR}"<br>
 }<br>
<br>
 function build_stage2_ubsan {<br>
-  echo @@@BUILD_STEP build clang/ubsan@@@<br>
-<br>
-  common_stage2_variables<br>
-  export UBSAN_OPTIONS="external_symbolizer_path=${llvm_symbolizer_path}:print_stacktrace=1"<br>
-  local cmake_ubsan_options=" \<br>
-    ${cmake_stage2_common_options} \<br>
-    -DCMAKE_BUILD_TYPE=Debug \<br>
-    -DLLVM_USE_SANITIZER=Undefined \<br>
-    "<br>
-  mkdir -p ${STAGE2_UBSAN_DIR}<br>
-  (cd ${STAGE2_UBSAN_DIR} &&<br>
-    cmake ${cmake_ubsan_options} $LLVM && \<br>
-    ninja clang lld) || echo @@@STEP_FAILURE@@@<br>
+  build_stage2 ubsan "${STAGE2_LIBCXX_UBSAN_DIR}" "${STAGE2_UBSAN_DIR}"<br>
 }<br>
<br>
 function check_stage2 {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>