#!/bin/bash set -e cd $(git rev-parse --show-toplevel)/ rm -rf ./build && mkdir build/ Xvfb :99 -screen 0 1024x768x16 & export CXX=$(which clang++) export CC=$(which clang) export DISPLAY=:99 export PKG_CONFIG_PATH=/msan/lib/pkgconfig:${PKG_CONFIG_PATH} cmake . \ -Bbuild \ -GNinja \ -DCMAKE_INCLUDE_PATH=/msan/include \ -DCMAKE_LIBRARY_PATH=/msan/lib \ -DCMAKE_PREFIX_PATH=/msan \ -DCMAKE_LINKER_TYPE=MOLD \ -DENABLE_UNIT_TESTS=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS=" \ -fsanitize=memory \ -fsanitize-memory-track-origins \ -fsanitize-ignorelist=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp \ -g \ -fno-omit-frame-pointer \ -std=c++23 \ -nostdinc++ \ -isystem /libcxx_msan/include/c++/v1/" \ -DCMAKE_EXE_LINKER_FLAGS=" \ -fsanitize=memory \ -fsanitize-memory-track-origins \ -L/msan/lib -Wl,-rpath,/msan/lib \ -L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib \ -lc++ \ -lc++abi" \ && cmake --build ./build --target='surface_tests' -j`nproc` echo "READELF_________________________________________" readelf -Ws /msan/lib/libX11.so.6 2>/dev/null | c++filt | egrep -i 'XData32|XChangeProperty|XFlush|_XSend|_XData' readelf -Ws /msan/lib/libxcb.so.1 2>/dev/null | c++filt | egrep -i 'write_vec|_xcb_conn_wait|_xcb_out_send|xcb_writev' readelf -Ws /drone/src/build/modules/surface/surface_tests 2>/dev/null | c++filt | egrep -i 'writev|read_iovec|create_surface_component' echo "_________________________________________READELF" echo "ADDR2LINE_________________________________________" addr2line -f -C -e /msan/lib/libX11.so.6 0x33564b addr2line -f -C -e /drone/src/build/modules/surface/surface_tests 0xfea67 echo "_________________________________________ADDR2LINE" export MSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" export MSAN_OPTIONS="fast_unwind_on_malloc=0:verbosity=2:report_umrs=1" for test in $(find ./build -type f -name '*_tests' -executable); do echo "Running $test" "$test" done