[zorg] r225680 - Use instrumented libc++ in UBSan bootstrap. Generalize the scripts

Alexey Samsonov vonosmas at gmail.com
Mon Jan 12 13:26:58 PST 2015


As long as our builders pick up new build steps/rules w/o restarting the
master - sure.

On Mon, Jan 12, 2015 at 12:54 PM, Sergey Matveev <earthdok at google.com>
wrote:

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


-- 
Alexey Samsonov
vonosmas at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150112/4f29ca2c/attachment.html>


More information about the llvm-commits mailing list