Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,10 @@ jobs:
env: { TEST_MUSL_V1_2: 1 }
artifact-tag: new-musl
- target: riscv64gc-unknown-linux-gnu
- target: riscv64gc-unknown-linux-musl
- target: riscv64gc-unknown-linux-musl
env: { TEST_MUSL_V1_2: 1 }
artifact-tag: new-musl
- target: s390x-unknown-linux-gnu
- target: sparc64-unknown-linux-gnu
- target: wasm32-unknown-emscripten
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ targets = [
"powerpc64le-unknown-linux-gnu",
"powerpc64le-unknown-linux-musl",
"riscv64gc-unknown-linux-gnu",
"riscv64gc-unknown-linux-musl",
"s390x-unknown-linux-gnu",
"sparcv9-sun-solaris",
"x86_64-apple-darwin",
Expand Down Expand Up @@ -85,7 +86,6 @@ targets = [
"i686-unknown-freebsd",
"i686-unknown-linux-musl",
"nvptx64-nvidia-cuda",
"riscv64gc-unknown-linux-musl",
"sparc64-unknown-linux-gnu",
"thumbv7neon-linux-androideabi",
"thumbv7neon-unknown-linux-gnueabihf",
Expand Down
24 changes: 24 additions & 0 deletions ci/docker/riscv64gc-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
gcc \
gcc-riscv64-linux-gnu \
git \
libc6-dev \
make \
patch \
rsync \
qemu-user \
xz-utils

ARG MUSL_VERSION
COPY . /ci
RUN ci/install-musl.sh riscv64 "$MUSL_VERSION"

ENV PATH=$PATH:/musl-riscv64/bin:/rust/bin \
CC_riscv64gc_unknown_linux_musl=musl-gcc \
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_MUSL_LINKER=musl-gcc \
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_MUSL_RUNNER="qemu-riscv64 -L /musl-riscv64" \
EXTRA_RUSTFLAGS="-Ctarget-feature=+crt-static -Clink-args=-L/musl-riscv64/lib"
7 changes: 7 additions & 0 deletions ci/install-musl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,13 @@ case ${1} in
./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
make install -j4
;;
riscv64)
musl_arch=riscv64
kernel_arch=riscv
CC=riscv64-linux-gnu-gcc \
./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
make install -j4
;;
*)
echo "Unknown target arch: \"${1}\""
exit 1
Expand Down
2 changes: 1 addition & 1 deletion ci/verify-build.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ class TargetResult:
Target("powerpc64le-unknown-linux-gnu"),
Target("powerpc64le-unknown-linux-musl", min_toolchain=Toolchain.STABLE),
Target("riscv64gc-unknown-linux-gnu"),
Target("riscv64gc-unknown-linux-musl", min_toolchain=Toolchain.STABLE),
Target("s390x-unknown-linux-gnu"),
Target("sparcv9-sun-solaris"),
Target("x86_64-apple-darwin"),
Expand Down Expand Up @@ -141,7 +142,6 @@ class TargetResult:
Target("i686-unknown-freebsd"),
Target("i686-unknown-linux-musl"),
Target("nvptx64-nvidia-cuda", min_toolchain=Toolchain.STABLE),
Target("riscv64gc-unknown-linux-musl", min_toolchain=Toolchain.STABLE),
Target("sparc64-unknown-linux-gnu"),
Target("thumbv7neon-linux-androideabi", min_toolchain=Toolchain.STABLE),
Target("thumbv7neon-unknown-linux-gnueabihf", min_toolchain=Toolchain.STABLE),
Expand Down
22 changes: 6 additions & 16 deletions src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,10 @@ s! {
pub gid: crate::gid_t,
pub cuid: crate::uid_t,
pub cgid: crate::gid_t,
pub mode: c_ushort,
__pad1: Padding<c_ushort>,
pub __seq: c_ushort,
__pad2: Padding<c_ushort>,
__unused1: Padding<c_ulong>,
__unused2: Padding<c_ulong>,
pub mode: crate::mode_t,
pub __ipc_perm_seq: c_int,
__pad1: Padding<c_long>,
__pad2: Padding<c_long>,
}

#[repr(align(8))]
Expand All @@ -78,7 +76,7 @@ s! {

s_no_extra_traits! {
pub struct ucontext_t {
pub __uc_flags: c_ulong,
pub uc_flags: c_ulong,
pub uc_link: *mut ucontext_t,
pub uc_stack: crate::stack_t,
pub uc_sigmask: crate::sigset_t,
Expand Down Expand Up @@ -414,6 +412,7 @@ pub const SYS_mount_setattr: c_long = 442;
pub const SYS_landlock_create_ruleset: c_long = 444;
pub const SYS_landlock_add_rule: c_long = 445;
pub const SYS_landlock_restrict_self: c_long = 446;
pub const SYS_futex_waitv: c_long = 449;

pub const O_APPEND: c_int = 1024;
pub const O_DIRECT: c_int = 0x4000;
Expand Down Expand Up @@ -649,12 +648,3 @@ pub const TOSTOP: crate::tcflag_t = 0x00000100;
pub const FLUSHO: crate::tcflag_t = 0x00001000;

pub const NGREG: usize = 32;
pub const REG_PC: usize = 0;
pub const REG_RA: usize = 1;
pub const REG_SP: usize = 2;
pub const REG_TP: usize = 4;
pub const REG_S0: usize = 8;
pub const REG_S1: usize = 9;
pub const REG_A0: usize = 10;
pub const REG_S2: usize = 18;
pub const REG_NARGS: usize = 8;
Loading