]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Compile using ASAN on the github CI
authorOwen Avery <powerboat9.gamer@gmail.com>
Tue, 27 Aug 2024 03:08:30 +0000 (23:08 -0400)
committerP-E-P <32375388+P-E-P@users.noreply.github.com>
Tue, 10 Sep 2024 16:33:34 +0000 (16:33 +0000)
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>
.github/no-bootstrap-asan.mk [new file with mode: 0644]
.github/workflows/ccpp.yml

diff --git a/.github/no-bootstrap-asan.mk b/.github/no-bootstrap-asan.mk
new file mode 100644 (file)
index 0000000..44d9850
--- /dev/null
@@ -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
index 04699148a6ba74c424f1217750d945431483c1c4..571d03183f4b5b61bf26e62b16b558119a77fa40 100644 (file)
@@ -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