aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2024-08-26 23:08:30 -0400
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2024-09-10 16:33:34 +0000
commit7e0feecb56e966a23d713c4f831684f14dbe40f5 (patch)
treedc0a5a042aa601f993630c1eb9eeab196bed8bc3
parentc5f9d6ddf9363401b10849832c6ebc5e1a70067c (diff)
downloadgcc-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.mk7
-rw-r--r--.github/workflows/ccpp.yml84
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