https://gcc.gnu.org/g:7e0feecb56e966a23d713c4f831684f14dbe40f5

commit 7e0feecb56e966a23d713c4f831684f14dbe40f5
Author: Owen Avery <powerboat9.ga...@gmail.com>
Date:   Mon Aug 26 23:08:30 2024 -0400

    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.ga...@gmail.com>

Diff:
---
 .github/no-bootstrap-asan.mk |  7 ++++
 .github/workflows/ccpp.yml   | 84 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+)

diff --git a/.github/no-bootstrap-asan.mk b/.github/no-bootstrap-asan.mk
new file mode 100644
index 000000000000..44d985072189
--- /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 04699148a6ba..571d03183f4b 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

Reply via email to