00_setup_env_native_msan.sh
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:24.04" 10 export APT_LLVM_V="21" 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" 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"