From 2b0901731fc1798adf2355cbfeebf027731c8cf5 Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Mon, 18 Mar 2024 03:02:25 +0100 Subject: [PATCH] ci: Full ASan --- .github/workflows/ci.yml | 55 ++++++++++------------------------------ 1 file changed, 14 insertions(+), 41 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77ff8e272..7a110e6e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,54 +33,27 @@ jobs: strategy: fail-fast: false matrix: - cmake_opts: - - '-DBUILD_SHARED_LIBS=YES' - - '' + sanitizers: + - '-fsanitize=address,undefined -fno-sanitize-recover=all' + build_type: + - cmake_opts: '-DBUILD_SHARED_LIBS=YES' + asan_opts: 'detect_leaks=0' + - cmake_opts: '-DBUILD_SHARED_LIBS=NO' compiler: - c: 'clang' cpp: 'clang++' - cflags: '-gdwarf-4' + cflags: '-gdwarf-4 -shared-libasan' + test_env: 'LD_PRELOAD=$(clang -print-file-name=libclang_rt.asan-x86_64.so)' - c: 'gcc' cpp: 'g++' + test_env: 'LD_PRELOAD=$(gcc -print-file-name=libasan.so)' env: - CMAKE_OPTIONS: ${{ matrix.cmake_opts }} + CMAKE_OPTIONS: ${{ matrix.build_type.cmake_opts }} + ASAN_OPTIONS: ${{ matrix.build_type.asan_opts }} CC: ${{ matrix.compiler.c }} CXX: ${{ matrix.compiler.cpp }} - CFLAGS: ${{ matrix.compiler.cflags }} - CXXFLAGS: ${{ matrix.compiler.cflags }} - - steps: - - uses: actions/checkout@v4 - - name: Install valgrind - run: | - sudo apt update - sudo apt install -y valgrind - - name: Build and test - run: | - cmake $CMAKE_OPTIONS -DCMAKE_BUILD_TYPE=Debug -S . -B build - cmake --build build - ctest --test-dir build --output-on-failure - make leakcheck - - sanitizers: - - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - cmake_opts: '-DBUILD_SHARED_LIBS=NO' - - cmake_opts: '-DBUILD_SHARED_LIBS=YES' - cflags: '-shared-libasan' - test_env: 'LD_PRELOAD=$(clang -print-file-name=libclang_rt.asan-x86_64.so)' - asan_options: 'detect_leaks=0' - env: - CMAKE_OPTIONS: ${{ matrix.cmake_opts }} - CC: 'clang' - CXX: 'clang++' - CFLAGS: '-fsanitize=address,undefined -fno-sanitize-recover=all ${{ matrix.cflags }}' - CXXFLAGS: '-fsanitize=address,undefined -fno-sanitize-recover=all ${{ matrix.cflags }}' - ASAN_OPTIONS: ${{ matrix.asan_options }} + CFLAGS: '${{ matrix.sanitizers}} ${{ matrix.compiler.cflags }}' + CXXFLAGS: '${{ matrix.sanitizers}} ${{ matrix.compiler.cflags }}' steps: - uses: actions/checkout@v4 @@ -90,7 +63,7 @@ jobs: cmake --build build # https://github.com/actions/runner-images/issues/9491 sudo sysctl vm.mmap_rnd_bits=28 - env ${{ matrix.test_env }} ctest --test-dir build --output-on-failure + env ${{ matrix.compiler.test_env }} ctest --test-dir build --output-on-failure macos: