Skip to content

Commit 47474f1

Browse files
author
Tobias Kortkamp
committed
Add riscv64gc-unknown-freebsd
1 parent 3e018ce commit 47474f1

File tree

7 files changed

+27
-5
lines changed

7 files changed

+27
-5
lines changed

Diff for: compiler/rustc_llvm/build.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ fn main() {
277277
};
278278

279279
// RISC-V requires libatomic for sub-word atomic operations
280-
if target.starts_with("riscv") {
280+
if !target.contains("freebsd") && target.starts_with("riscv") {
281281
println!("cargo:rustc-link-lib=atomic");
282282
}
283283

Diff for: compiler/rustc_target/src/spec/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,7 @@ supported_targets! {
813813
("powerpc-unknown-freebsd", powerpc_unknown_freebsd),
814814
("powerpc64-unknown-freebsd", powerpc64_unknown_freebsd),
815815
("powerpc64le-unknown-freebsd", powerpc64le_unknown_freebsd),
816+
("riscv64gc-unknown-freebsd", riscv64gc_unknown_freebsd),
816817
("x86_64-unknown-freebsd", x86_64_unknown_freebsd),
817818

818819
("x86_64-unknown-dragonfly", x86_64_unknown_dragonfly),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use crate::spec::{CodeModel, Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
Target {
5+
llvm_target: "riscv64-unknown-freebsd".to_string(),
6+
pointer_width: 64,
7+
data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
8+
arch: "riscv64".to_string(),
9+
options: TargetOptions {
10+
code_model: Some(CodeModel::Medium),
11+
cpu: "generic-rv64".to_string(),
12+
features: "+m,+a,+f,+d,+c".to_string(),
13+
llvm_abiname: "lp64d".to_string(),
14+
max_atomic_width: Some(64),
15+
..super::freebsd_base::opts()
16+
},
17+
}
18+
}

Diff for: library/std/src/os/raw/mod.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ type_alias! { "char.md", c_char = u8, NonZero_c_char = NonZeroU8;
6969
target_arch = "aarch64",
7070
target_arch = "arm",
7171
target_arch = "powerpc",
72-
target_arch = "powerpc64"
72+
target_arch = "powerpc64",
73+
target_arch = "riscv64"
7374
)
7475
),
7576
all(
@@ -112,7 +113,8 @@ type_alias! { "char.md", c_char = i8, NonZero_c_char = NonZeroI8;
112113
target_arch = "aarch64",
113114
target_arch = "arm",
114115
target_arch = "powerpc",
115-
target_arch = "powerpc64"
116+
target_arch = "powerpc64",
117+
target_arch = "riscv64"
116118
)
117119
),
118120
all(

Diff for: src/bootstrap/bootstrap.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ def default_build_triple(verbose):
265265
err = "unknown OS type: {}".format(ostype)
266266
sys.exit(err)
267267

268-
if cputype == 'powerpc' and ostype == 'unknown-freebsd':
268+
if cputype in ['powerpc', 'riscv'] and ostype == 'unknown-freebsd':
269269
cputype = subprocess.check_output(
270270
['uname', '-p']).strip().decode(default_encoding)
271271
cputype_mapper = {

Diff for: src/bootstrap/native.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ impl Step for Llvm {
249249
}
250250
}
251251

252-
if target.starts_with("riscv") {
252+
if !target.contains("freebsd") && target.starts_with("riscv") {
253253
// In RISC-V, using C++ atomics require linking to `libatomic` but the LLVM build
254254
// system check cannot detect this. Therefore it is set manually here.
255255
if !builder.config.llvm_tools_enabled {

Diff for: src/doc/rustc/src/platform-support.md

+1
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ target | std | host | notes
267267
`riscv32gc-unknown-linux-gnu` | | | RISC-V Linux (kernel 5.4, glibc 2.33)
268268
`riscv32gc-unknown-linux-musl` | | | RISC-V Linux (kernel 5.4, musl + RISCV32 support patches)
269269
`riscv32imc-esp-espidf` | ✓ | | RISC-V ESP-IDF
270+
`riscv64gc-unknown-freebsd` | | | RISC-V FreeBSD
270271
`riscv64gc-unknown-linux-musl` | | | RISC-V Linux (kernel 4.20, musl 1.2.0)
271272
`s390x-unknown-linux-musl` | | | S390x Linux (kernel 2.6.32, MUSL)
272273
`sparc-unknown-linux-gnu` | ✓ | | 32-bit SPARC Linux

0 commit comments

Comments
 (0)