about summary refs log tree commit diff
diff options
context:
space:
mode:
authorsayantn <sayantn05@gmail.com>2025-04-23 15:30:47 +0530
committerAmanieu d'Antras <amanieu@gmail.com>2025-05-06 16:10:50 +0000
commitb1ad50f1e0d8f18968cc4ad15a43479838a528d7 (patch)
tree8540140f88ba351ec3c4e0084c74b6917dd82507
parent206c35a3a287970c680d355aed039df53cfdc2c4 (diff)
downloadrust-b1ad50f1e0d8f18968cc4ad15a43479838a528d7.tar.gz
rust-b1ad50f1e0d8f18968cc4ad15a43479838a528d7.zip
Add `riscv32` CI run
-rw-r--r--library/stdarch/.github/workflows/main.yml9
-rw-r--r--library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile15
-rwxr-xr-xlibrary/stdarch/ci/run.sh3
-rw-r--r--library/stdarch/crates/stdarch-test/src/disassembly.rs2
4 files changed, 25 insertions, 4 deletions
diff --git a/library/stdarch/.github/workflows/main.yml b/library/stdarch/.github/workflows/main.yml
index 88dc7b865a4..3c2b611394d 100644
--- a/library/stdarch/.github/workflows/main.yml
+++ b/library/stdarch/.github/workflows/main.yml
@@ -58,6 +58,8 @@ jobs:
           os: ubuntu-latest
         - tuple: aarch64_be-unknown-linux-gnu
           os: ubuntu-latest
+        - tuple: riscv32gc-unknown-linux-gnu
+          os: ubuntu-latest
         - tuple: riscv64gc-unknown-linux-gnu
           os: ubuntu-latest
         - tuple: powerpc-unknown-linux-gnu
@@ -155,6 +157,11 @@ jobs:
             os: ubuntu-latest
           test_everything: true
         - target:
+            tuple: riscv32gc-unknown-linux-gnu
+            os: ubuntu-latest
+          test_everything: true
+          build_std: true
+        - target:
             tuple: riscv64gc-unknown-linux-gnu
             os: ubuntu-latest
           test_everything: true
@@ -237,7 +244,7 @@ jobs:
     # ... while Linux goes to `run-docker.sh`
     - run: ./ci/run-docker.sh ${{ matrix.target.tuple }}
       shell: bash
-      if: "matrix.target.os == 'ubuntu-latest' && !startsWith(matrix.target.tuple, 'thumb')"
+      if: matrix.target.os == 'ubuntu-latest' && !startsWith(matrix.target.tuple, 'thumb')
       env:
         TARGET: ${{ matrix.target.tuple }}
 
diff --git a/library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile
new file mode 100644
index 00000000000..81f7b6239af
--- /dev/null
+++ b/library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile
@@ -0,0 +1,15 @@
+FROM ubuntu:25.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+        gcc libc6-dev qemu-user ca-certificates \
+        wget xz-utils make file llvm
+
+ENV VERSION=2025.01.20
+
+RUN wget "https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${VERSION}/riscv32-glibc-ubuntu-24.04-gcc-nightly-${VERSION}-nightly.tar.xz" \
+    -O riscv-toolchain.tar.xz
+RUN tar -xJf riscv-toolchain.tar.xz
+
+ENV CARGO_TARGET_RISCV32GC_UNKNOWN_LINUX_GNU_LINKER=/riscv/bin/riscv32-unknown-linux-gnu-gcc \
+    CARGO_TARGET_RISCV32GC_UNKNOWN_LINUX_GNU_RUNNER="qemu-riscv32 -cpu max -L /riscv/sysroot" \
+    OBJDUMP=llvm-objdump
diff --git a/library/stdarch/ci/run.sh b/library/stdarch/ci/run.sh
index 522b2661769..fd7ec81d505 100755
--- a/library/stdarch/ci/run.sh
+++ b/library/stdarch/ci/run.sh
@@ -44,9 +44,8 @@ case ${TARGET} in
         ;;
     # Some of our test dependencies use the deprecated `gcc` crates which
     # doesn't detect RISC-V compilers automatically, so do it manually here.
-    riscv64*)
+    riscv*)
         export RUSTFLAGS="${RUSTFLAGS} -Ctarget-feature=+zk,+zks,+zbb,+zbc"
-        export TARGET_CC="riscv64-linux-gnu-gcc"
         ;;
 esac
 
diff --git a/library/stdarch/crates/stdarch-test/src/disassembly.rs b/library/stdarch/crates/stdarch-test/src/disassembly.rs
index 49043eea80b..f5167ea8d8e 100644
--- a/library/stdarch/crates/stdarch-test/src/disassembly.rs
+++ b/library/stdarch/crates/stdarch-test/src/disassembly.rs
@@ -77,7 +77,7 @@ pub(crate) fn disassemble_myself() -> HashSet<Function> {
     let add_args = if cfg!(target_vendor = "apple") && cfg!(target_arch = "aarch64") {
         // Target features need to be enabled for LLVM objdump on Darwin ARM64
         vec!["--mattr=+v8.6a,+crypto,+tme"]
-    } else if cfg!(target_arch = "riscv64") {
+    } else if cfg!(any(target_arch = "riscv32", target_arch = "riscv64")) {
         vec!["--mattr=+zk,+zks,+zbc,+zbb"]
     } else {
         vec![]