diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2024-08-26 23:08:30 -0400 |
---|---|---|
committer | P-E-P <32375388+P-E-P@users.noreply.github.com> | 2024-09-10 16:33:34 +0000 |
commit | 7e0feecb56e966a23d713c4f831684f14dbe40f5 (patch) | |
tree | dc0a5a042aa601f993630c1eb9eeab196bed8bc3 | |
parent | c5f9d6ddf9363401b10849832c6ebc5e1a70067c (diff) | |
download | gcc-7e0feecb56e966a23d713c4f831684f14dbe40f5.zip gcc-7e0feecb56e966a23d713c4f831684f14dbe40f5.tar.gz gcc-7e0feecb56e966a23d713c4f831684f14dbe40f5.tar.bz2 |
Compile using ASAN on the github CI
ChangeLog:
* .github/workflows/ccpp.yml: Add job for running tests with
ASAN.
* .github/no-bootstrap-asan.mk: New file.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
-rw-r--r-- | .github/no-bootstrap-asan.mk | 7 | ||||
-rw-r--r-- | .github/workflows/ccpp.yml | 84 |
2 files changed, 91 insertions, 0 deletions
diff --git a/.github/no-bootstrap-asan.mk b/.github/no-bootstrap-asan.mk new file mode 100644 index 0000000..44d9850 --- /dev/null +++ b/.github/no-bootstrap-asan.mk @@ -0,0 +1,7 @@ +# This option enables -fsanitize=address for stage1. + +# Suppress LeakSanitizer in bootstrap. +export ASAN_OPTIONS=detect_leaks=0:use_odr_indicator=1 + +STAGE1_CFLAGS += -fsanitize=address +STAGE1_LDFLAGS += -fsanitize=address -static-libasan diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 0469914..571d031 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -386,3 +386,87 @@ jobs: else \ exit 0; \ fi + + build-and-check-asan: + + env: + # Force locale, in particular for reproducible results re '.github/bors_log_expected_warnings' (see below). + LC_ALL: C.UTF-8 + + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v3 + + - name: Install Deps + run: | + sudo apt-get update; + sudo apt-get install -y \ + automake \ + autoconf \ + libtool \ + autogen \ + bison \ + flex \ + libgmp3-dev \ + libmpfr-dev \ + libmpc-dev \ + build-essential \ + gcc-multilib \ + g++-multilib \ + dejagnu; + # install Rust directly using rustup + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain=1.72.0; + + - name: Configure + run: | + mkdir -p gccrs-build; + cd gccrs-build; + ../configure \ + --enable-languages=rust \ + --disable-bootstrap \ + --enable-multilib \ + --with-build-config=../.github/no-bootstrap-asan + + - name: Build + shell: bash + run: | + cd gccrs-build; \ + # Add cargo to our path quickly + . "$HOME/.cargo/env"; + make -Otarget -j $(nproc) 2>&1 | tee log + +# Skip warnings check +# - name: Check for new warnings +# run: | +# cd gccrs-build +# < log grep 'warning: ' | sort > log_warnings +# if diff -U0 ../.github/bors_log_expected_warnings log_warnings; then +# : +# else +# echo 'See <https://github.com/Rust-GCC/gccrs/pull/1026>.' +# exit 1 +# fi >&2 + + - name: Run Tests + run: | + cd gccrs-build; \ + ASAN_OPTIONS=detect_leaks=0:use_odr_indicator=1 \ + make check-rust RUNTESTFLAGS="--target_board=unix\{-m64}" + - name: Archive check-rust results + uses: actions/upload-artifact@v3 + with: + name: check-rust-logs + path: | + gccrs-build/gcc/testsuite/rust/ + - name: Check regressions + run: | + cd gccrs-build; \ + if grep -e "unexpected" -e "unresolved" -e "ERROR:" gcc/testsuite/rust/rust.sum;\ + then \ + echo "::error title=Regression test failed::some tests are not correct"; \ + perl -n ../.github/emit_test_errors.pl < gcc/testsuite/rust/rust.sum; \ + exit 1; \ + else \ + exit 0; \ + fi |