1a8c51b3fSopenharmony_ciname: sanitizer 2a8c51b3fSopenharmony_ci 3a8c51b3fSopenharmony_cion: 4a8c51b3fSopenharmony_ci push: {} 5a8c51b3fSopenharmony_ci pull_request: {} 6a8c51b3fSopenharmony_ci 7a8c51b3fSopenharmony_cienv: 8a8c51b3fSopenharmony_ci UBSAN_OPTIONS: "print_stacktrace=1" 9a8c51b3fSopenharmony_ci 10a8c51b3fSopenharmony_cijobs: 11a8c51b3fSopenharmony_ci job: 12a8c51b3fSopenharmony_ci name: ${{ matrix.sanitizer }}.${{ matrix.build_type }}.${{ matrix.compiler }} 13a8c51b3fSopenharmony_ci runs-on: ubuntu-latest 14a8c51b3fSopenharmony_ci strategy: 15a8c51b3fSopenharmony_ci fail-fast: false 16a8c51b3fSopenharmony_ci matrix: 17a8c51b3fSopenharmony_ci build_type: ['Debug', 'RelWithDebInfo'] 18a8c51b3fSopenharmony_ci sanitizer: ['asan', 'ubsan', 'tsan'] 19a8c51b3fSopenharmony_ci compiler: ['clang', 'gcc'] 20a8c51b3fSopenharmony_ci # TODO: add 'msan' above. currently failing and needs investigation. 21a8c51b3fSopenharmony_ci steps: 22a8c51b3fSopenharmony_ci - uses: actions/checkout@v2 23a8c51b3fSopenharmony_ci 24a8c51b3fSopenharmony_ci - name: configure msan env 25a8c51b3fSopenharmony_ci if: matrix.sanitizer == 'msan' 26a8c51b3fSopenharmony_ci run: | 27a8c51b3fSopenharmony_ci echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=memory -fsanitize-memory-track-origins" >> $GITHUB_ENV 28a8c51b3fSopenharmony_ci echo "LIBCXX_SANITIZER=MemoryWithOrigins" >> $GITHUB_ENV 29a8c51b3fSopenharmony_ci 30a8c51b3fSopenharmony_ci - name: configure ubsan env 31a8c51b3fSopenharmony_ci if: matrix.sanitizer == 'ubsan' 32a8c51b3fSopenharmony_ci run: | 33a8c51b3fSopenharmony_ci echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=all" >> $GITHUB_ENV 34a8c51b3fSopenharmony_ci echo "LIBCXX_SANITIZER=Undefined" >> $GITHUB_ENV 35a8c51b3fSopenharmony_ci 36a8c51b3fSopenharmony_ci - name: configure asan env 37a8c51b3fSopenharmony_ci if: matrix.sanitizer == 'asan' 38a8c51b3fSopenharmony_ci run: | 39a8c51b3fSopenharmony_ci echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=address -fno-sanitize-recover=all" >> $GITHUB_ENV 40a8c51b3fSopenharmony_ci echo "LIBCXX_SANITIZER=Address" >> $GITHUB_ENV 41a8c51b3fSopenharmony_ci 42a8c51b3fSopenharmony_ci - name: configure tsan env 43a8c51b3fSopenharmony_ci if: matrix.sanitizer == 'tsan' 44a8c51b3fSopenharmony_ci run: | 45a8c51b3fSopenharmony_ci echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=thread -fno-sanitize-recover=all" >> $GITHUB_ENV 46a8c51b3fSopenharmony_ci echo "LIBCXX_SANITIZER=Thread" >> $GITHUB_ENV 47a8c51b3fSopenharmony_ci 48a8c51b3fSopenharmony_ci - name: configure clang 49a8c51b3fSopenharmony_ci if: matrix.compiler == 'clang' 50a8c51b3fSopenharmony_ci run: | 51a8c51b3fSopenharmony_ci echo "CC=clang" >> $GITHUB_ENV 52a8c51b3fSopenharmony_ci echo "CXX=clang++" >> $GITHUB_ENV 53a8c51b3fSopenharmony_ci 54a8c51b3fSopenharmony_ci - name: configure gcc 55a8c51b3fSopenharmony_ci if: matrix.compiler == 'gcc' 56a8c51b3fSopenharmony_ci run: | 57a8c51b3fSopenharmony_ci sudo apt update && sudo apt -y install gcc-10 g++-10 58a8c51b3fSopenharmony_ci echo "CC=gcc-10" >> $GITHUB_ENV 59a8c51b3fSopenharmony_ci echo "CXX=g++-10" >> $GITHUB_ENV 60a8c51b3fSopenharmony_ci 61a8c51b3fSopenharmony_ci - name: install llvm stuff 62a8c51b3fSopenharmony_ci if: matrix.compiler == 'clang' 63a8c51b3fSopenharmony_ci run: | 64a8c51b3fSopenharmony_ci "${GITHUB_WORKSPACE}/.github/.libcxx-setup.sh" 65a8c51b3fSopenharmony_ci echo "EXTRA_CXX_FLAGS=\"-stdlib=libc++\"" >> $GITHUB_ENV 66a8c51b3fSopenharmony_ci 67a8c51b3fSopenharmony_ci - name: create build environment 68a8c51b3fSopenharmony_ci run: cmake -E make_directory ${{ runner.workspace }}/_build 69a8c51b3fSopenharmony_ci 70a8c51b3fSopenharmony_ci - name: configure cmake 71a8c51b3fSopenharmony_ci shell: bash 72a8c51b3fSopenharmony_ci working-directory: ${{ runner.workspace }}/_build 73a8c51b3fSopenharmony_ci run: > 74a8c51b3fSopenharmony_ci cmake $GITHUB_WORKSPACE 75a8c51b3fSopenharmony_ci -DBENCHMARK_ENABLE_ASSEMBLY_TESTS=OFF 76a8c51b3fSopenharmony_ci -DBENCHMARK_ENABLE_LIBPFM=OFF 77a8c51b3fSopenharmony_ci -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON 78a8c51b3fSopenharmony_ci -DCMAKE_C_COMPILER=${{ env.CC }} 79a8c51b3fSopenharmony_ci -DCMAKE_CXX_COMPILER=${{ env.CXX }} 80a8c51b3fSopenharmony_ci -DCMAKE_C_FLAGS="${{ env.EXTRA_FLAGS }}" 81a8c51b3fSopenharmony_ci -DCMAKE_CXX_FLAGS="${{ env.EXTRA_FLAGS }} ${{ env.EXTRA_CXX_FLAGS }}" 82a8c51b3fSopenharmony_ci -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} 83a8c51b3fSopenharmony_ci 84a8c51b3fSopenharmony_ci - name: build 85a8c51b3fSopenharmony_ci shell: bash 86a8c51b3fSopenharmony_ci working-directory: ${{ runner.workspace }}/_build 87a8c51b3fSopenharmony_ci run: cmake --build . --config ${{ matrix.build_type }} 88a8c51b3fSopenharmony_ci 89a8c51b3fSopenharmony_ci - name: test 90a8c51b3fSopenharmony_ci shell: bash 91a8c51b3fSopenharmony_ci working-directory: ${{ runner.workspace }}/_build 92a8c51b3fSopenharmony_ci run: ctest -C ${{ matrix.build_type }} -VV 93