mirror of
https://github.com/google/benchmark.git
synced 2024-11-28 05:44:40 +00:00
Enable various sanitizer builds in github actions (#1167)
* Enable various sanitizer builds in github actions * try with off the shelf versions * nope * specific version? * rats * oops * remove msan for now * reorder so env is set before building libc++
This commit is contained in:
parent
fbc31405b2
commit
bdd6c44787
83
.github/workflows/sanitizer.yml
vendored
Normal file
83
.github/workflows/sanitizer.yml
vendored
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
name: sanitizer
|
||||||
|
|
||||||
|
on:
|
||||||
|
push: {}
|
||||||
|
pull_request: {}
|
||||||
|
|
||||||
|
env:
|
||||||
|
CC: clang-3.8
|
||||||
|
CXX: clang++-3.8
|
||||||
|
EXTRA_CXX_FLAGS: "-stdlib=libc++"
|
||||||
|
UBSAN_OPTIONS: "print_stacktrace=1"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
job:
|
||||||
|
name: ${{ matrix.sanitizer }}.${{ matrix.build_type }}
|
||||||
|
runs-on: ubuntu-16.04
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
build_type: ['Debug', 'RelWithDebInfo']
|
||||||
|
sanitizer: ['asan', 'ubsan', 'tsan']
|
||||||
|
# TODO: add 'msan' above. currently failing and needs investigation.
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: configure msan env
|
||||||
|
if: matrix.sanitizer == 'msan'
|
||||||
|
run: |
|
||||||
|
echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=memory -fsanitize-memory-track-origins" >> $GITHUB_ENV
|
||||||
|
echo "LIBCXX_SANITIZER=MemoryWithOrigins" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: configure ubsan env
|
||||||
|
if: matrix.sanitizer == 'ubsan'
|
||||||
|
run: |
|
||||||
|
echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=all" >> $GITHUB_ENV
|
||||||
|
echo "LIBCXX_SANITIZER=Undefined" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: configure asan env
|
||||||
|
if: matrix.sanitizer == 'asan'
|
||||||
|
run: |
|
||||||
|
echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=address -fno-sanitize-recover=all" >> $GITHUB_ENV
|
||||||
|
echo "LIBCXX_SANITIZER=Address" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: configure tsan env
|
||||||
|
if: matrix.sanitizer == 'tsan'
|
||||||
|
run: |
|
||||||
|
echo "EXTRA_FLAGS=-g -O2 -fno-omit-frame-pointer -fsanitize=thread -fno-sanitize-recover=all" >> $GITHUB_ENV
|
||||||
|
echo "LIBCXX_SANITIZER=Thread" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: install clang-3.8
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt -y install clang-3.8
|
||||||
|
|
||||||
|
- name: install libc++
|
||||||
|
run: "${GITHUB_WORKSPACE}/.libcxx-setup.sh"
|
||||||
|
|
||||||
|
- name: create build environment
|
||||||
|
run: cmake -E make_directory ${{ runner.workspace }}/_build
|
||||||
|
|
||||||
|
- name: configure cmake
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ runner.workspace }}/_build
|
||||||
|
run: >
|
||||||
|
cmake $GITHUB_WORKSPACE
|
||||||
|
-DBENCHMARK_ENABLE_ASSEMBLY_TESTS=OFF
|
||||||
|
-DBENCHMARK_ENABLE_LIBPFM=OFF
|
||||||
|
-DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
|
||||||
|
-DCMAKE_C_COMPILER=${{ env.CC }}
|
||||||
|
-DCMAKE_CXX_COMPILER=${{ env.CXX }}
|
||||||
|
-DCMAKE_C_FLAGS="${{ env.EXTRA_FLAGS }}"
|
||||||
|
-DCMAKE_CXX_FLAGS="${{ env.EXTRA_FLAGS }} ${{ env.EXTRA_CXX_FLAGS }}"
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ runner.workspace }}/_build
|
||||||
|
run: cmake --build . --config ${{ matrix.build_type }}
|
||||||
|
|
||||||
|
- name: test
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ runner.workspace }}/_build
|
||||||
|
run: ctest -C ${{ matrix.build_type }} -VV
|
2
.travis-libcxx-setup.sh → .libcxx-setup.sh
Normal file → Executable file
2
.travis-libcxx-setup.sh → .libcxx-setup.sh
Normal file → Executable file
|
@ -19,7 +19,7 @@ fi
|
||||||
mkdir llvm-build && cd llvm-build
|
mkdir llvm-build && cd llvm-build
|
||||||
cmake -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} \
|
cmake -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
-DLIBCXX_ABI_UNSTABLE=ON \
|
-DLIBCXX_ABI_UNSTABLE=OFF \
|
||||||
-DLLVM_USE_SANITIZER=${LIBCXX_SANITIZER} \
|
-DLLVM_USE_SANITIZER=${LIBCXX_SANITIZER} \
|
||||||
-DLLVM_BUILD_32_BITS=${BUILD_32_BITS} \
|
-DLLVM_BUILD_32_BITS=${BUILD_32_BITS} \
|
||||||
../llvm-source
|
../llvm-source
|
|
@ -149,7 +149,7 @@ matrix:
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- if [ -n "${LIBCXX_BUILD}" ]; then
|
- if [ -n "${LIBCXX_BUILD}" ]; then
|
||||||
source .travis-libcxx-setup.sh;
|
source .libcxx-setup.sh;
|
||||||
fi
|
fi
|
||||||
- if [ -n "${ENABLE_SANITIZER}" ]; then
|
- if [ -n "${ENABLE_SANITIZER}" ]; then
|
||||||
export EXTRA_OPTIONS="-DBENCHMARK_ENABLE_ASSEMBLY_TESTS=OFF";
|
export EXTRA_OPTIONS="-DBENCHMARK_ENABLE_ASSEMBLY_TESTS=OFF";
|
||||||
|
|
Loading…
Reference in a new issue