Skip to content

Commit e8b36c6

Browse files
authored
Rollup merge of rust-lang#66899 - msizanoen1:riscv-std, r=alexcrichton
Standard library support for riscv64gc-unknown-linux-gnu Add std support for RISC-V 64-bit GNU/Linux and update libc for RISC-V support. r? @alexcrichton
2 parents 98db3e7 + 930a0a2 commit e8b36c6

File tree

8 files changed

+27
-6
lines changed

8 files changed

+27
-6
lines changed

Cargo.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -1821,9 +1821,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
18211821

18221822
[[package]]
18231823
name = "libc"
1824-
version = "0.2.64"
1824+
version = "0.2.66"
18251825
source = "registry+https://github.com/rust-lang/crates.io-index"
1826-
checksum = "74dfca3d9957906e8d1e6a0b641dc9a59848e793f1da2165889fd4f62d10d79c"
1826+
checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
18271827
dependencies = [
18281828
"rustc-std-workspace-core",
18291829
]

src/libpanic_unwind/gcc.rs

+3
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ const UNWIND_DATA_REG: (i32, i32) = (24, 25); // I0, I1
129129
#[cfg(target_arch = "hexagon")]
130130
const UNWIND_DATA_REG: (i32, i32) = (0, 1); // R0, R1
131131

132+
#[cfg(target_arch = "riscv64")]
133+
const UNWIND_DATA_REG: (i32, i32) = (10, 11); // x10, x11
134+
132135
// The following code is based on GCC's C and C++ personality routines. For reference, see:
133136
// https://github.com/gcc-mirror/gcc/blob/master/libstdc++-v3/libsupc++/eh_personality.cc
134137
// https://github.com/gcc-mirror/gcc/blob/trunk/libgcc/unwind-c.c

src/libstd/env.rs

+5
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,11 @@ mod arch {
10331033
pub const ARCH: &'static str = "hexagon";
10341034
}
10351035

1036+
#[cfg(target_arch = "riscv64")]
1037+
mod arch {
1038+
pub const ARCH: &'static str = "riscv64";
1039+
}
1040+
10361041
#[cfg(test)]
10371042
mod tests {
10381043
use super::*;

src/libstd/os/linux/raw.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,12 @@ mod arch {
230230
}
231231
}
232232

233-
#[cfg(any(target_arch = "mips64", target_arch = "s390x", target_arch = "sparc64"))]
233+
#[cfg(any(
234+
target_arch = "mips64",
235+
target_arch = "s390x",
236+
target_arch = "sparc64",
237+
target_arch = "riscv64"
238+
))]
234239
mod arch {
235240
pub use libc::{blkcnt_t, blksize_t, ino_t, nlink_t, off_t, stat, time_t};
236241
}

src/libstd/os/raw/mod.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
target_arch = "hexagon",
1919
target_arch = "powerpc",
2020
target_arch = "powerpc64",
21-
target_arch = "s390x"
21+
target_arch = "s390x",
22+
target_arch = "riscv64"
2223
)
2324
),
2425
all(target_os = "android", any(target_arch = "aarch64", target_arch = "arm")),
@@ -60,7 +61,8 @@ pub type c_char = u8;
6061
target_arch = "hexagon",
6162
target_arch = "powerpc",
6263
target_arch = "powerpc64",
63-
target_arch = "s390x"
64+
target_arch = "s390x",
65+
target_arch = "riscv64"
6466
)
6567
),
6668
all(target_os = "android", any(target_arch = "aarch64", target_arch = "arm")),

src/libstd/sys/unix/fs.rs

+2
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ macro_rules! cfg_has_statx {
5757
// target_arch = "mips64",
5858
// target_arch = "s390x",
5959
target_arch = "sparc64",
60+
target_arch = "riscv64",
6061
)))] {
6162
$($then_tt)*
6263
} else {
@@ -76,6 +77,7 @@ macro_rules! cfg_has_statx {
7677
// target_arch = "mips64",
7778
// target_arch = "s390x",
7879
target_arch = "sparc64",
80+
target_arch = "riscv64",
7981
)))]
8082
{
8183
$($block_inner)*

src/libstd/sys_common/alloc.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ pub const MIN_ALIGN: usize = 8;
2222
target_arch = "aarch64",
2323
target_arch = "mips64",
2424
target_arch = "s390x",
25-
target_arch = "sparc64"
25+
target_arch = "sparc64",
26+
target_arch = "riscv64"
2627
)))]
2728
pub const MIN_ALIGN: usize = 16;
2829

src/libunwind/libunwind.rs

+3
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ pub const unwinder_private_data_size: usize = 2;
5353
#[cfg(target_arch = "sparc64")]
5454
pub const unwinder_private_data_size: usize = 2;
5555

56+
#[cfg(target_arch = "riscv64")]
57+
pub const unwinder_private_data_size: usize = 2;
58+
5659
#[cfg(target_os = "emscripten")]
5760
pub const unwinder_private_data_size: usize = 20;
5861

0 commit comments

Comments
 (0)