Skip to content

Commit ef92009

Browse files
committed
Auto merge of #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 ebbb2bf + d61e193 commit ef92009

File tree

9 files changed

+29
-7
lines changed

9 files changed

+29
-7
lines changed

Cargo.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -395,9 +395,9 @@ version = "0.1.0"
395395

396396
[[package]]
397397
name = "cc"
398-
version = "1.0.47"
398+
version = "1.0.49"
399399
source = "registry+https://github.com/rust-lang/crates.io-index"
400-
checksum = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8"
400+
checksum = "e450b8da92aa6f274e7c6437692f9f2ce6d701fb73bacfcf87897b3f89a4c20e"
401401
dependencies = [
402402
"jobserver",
403403
"num_cpus",

src/libpanic_unwind/gcc.rs

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

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

src/libstd/env.rs

+6
Original file line numberDiff line numberDiff line change
@@ -878,6 +878,7 @@ pub mod consts {
878878
/// - mips64
879879
/// - powerpc
880880
/// - powerpc64
881+
/// - riscv64
881882
/// - s390x
882883
/// - sparc64
883884
#[stable(feature = "env", since = "1.0.0")]
@@ -1035,6 +1036,11 @@ mod arch {
10351036
pub const ARCH: &'static str = "hexagon";
10361037
}
10371038

1039+
#[cfg(target_arch = "riscv64")]
1040+
mod arch {
1041+
pub const ARCH: &'static str = "riscv64";
1042+
}
1043+
10381044
#[cfg(test)]
10391045
mod tests {
10401046
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
@@ -67,6 +67,7 @@ macro_rules! cfg_has_statx {
6767
// target_arch = "mips64",
6868
// target_arch = "s390x",
6969
target_arch = "sparc64",
70+
target_arch = "riscv64",
7071
)))] {
7172
$($then_tt)*
7273
} else {
@@ -86,6 +87,7 @@ macro_rules! cfg_has_statx {
8687
// target_arch = "mips64",
8788
// target_arch = "s390x",
8889
target_arch = "sparc64",
90+
target_arch = "riscv64",
8991
)))]
9092
{
9193
$($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
@@ -54,6 +54,9 @@ pub const unwinder_private_data_size: usize = 2;
5454
#[cfg(target_arch = "sparc64")]
5555
pub const unwinder_private_data_size: usize = 2;
5656

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

0 commit comments

Comments
 (0)