--- /dev/null
+# 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
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