00_setup_env_native_msan.sh raw

   1  #!/usr/bin/env bash
   2  #
   3  # Copyright (c) 2020-present The Bitcoin Core developers
   4  # Distributed under the MIT software license, see the accompanying
   5  # file COPYING or http://www.opensource.org/licenses/mit-license.php.
   6  
   7  export LC_ALL=C.UTF-8
   8  
   9  export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:26.04"
  10  export APT_LLVM_V="22"
  11  LIBCXX_DIR="/cxx_build/"
  12  export MSAN_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O1 -fno-optimize-sibling-calls"
  13  LIBCXX_FLAGS="-nostdinc++ -nostdlib++ -isystem ${LIBCXX_DIR}include/c++/v1 -L${LIBCXX_DIR}lib -Wl,-rpath,${LIBCXX_DIR}lib -lc++ -lc++abi -lpthread -Wno-unused-command-line-argument"
  14  export MSAN_AND_LIBCXX_FLAGS="${MSAN_FLAGS} ${LIBCXX_FLAGS}"
  15  
  16  export CONTAINER_NAME="ci_native_msan"
  17  export PACKAGES="clang-${APT_LLVM_V} llvm-${APT_LLVM_V} llvm-${APT_LLVM_V}-dev libclang-${APT_LLVM_V}-dev libclang-rt-${APT_LLVM_V}-dev python3-pip"
  18  export PIP_PACKAGES="--break-system-packages pycapnp pyzmq"
  19  export DEP_OPTS="DEBUG=1 NO_QT=1 CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
  20  export GOAL="install"
  21  export CI_LIMIT_STACK_SIZE=1
  22  # Setting CMAKE_{C,CXX}_FLAGS_DEBUG flags to an empty string ensures that the flags set in MSAN_FLAGS remain unaltered.
  23  # _FORTIFY_SOURCE is not compatible with MSAN.
  24  export BITCOIN_CONFIG="\
  25   --preset=dev-mode \
  26   -DBUILD_GUI=OFF \
  27   -DCMAKE_BUILD_TYPE=Debug \
  28   -DCMAKE_C_FLAGS_DEBUG='' \
  29   -DCMAKE_CXX_FLAGS_DEBUG='' \
  30   -DSANITIZERS=memory \
  31   -DAPPEND_CPPFLAGS='-U_FORTIFY_SOURCE' \
  32  "
  33  export USE_INSTRUMENTED_LIBCPP="MemoryWithOrigins"
  34