about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-02-15 16:20:12 +0000
committerbors <bors@rust-lang.org>2019-02-15 16:20:12 +0000
commita9410cd1af7c1194fbda1457c74b8ab25547e1e6 (patch)
tree1b3de656c83701aae859a04632c76cfe348d2fdd
parentf058741a679062202697144daebd05e1b0d6d747 (diff)
parent1f1a82434b0d8679dbaaab8c2dd53c78d30a8c8c (diff)
downloadrust-a9410cd1af7c1194fbda1457c74b8ab25547e1e6.tar.gz
rust-a9410cd1af7c1194fbda1457c74b8ab25547e1e6.zip
Auto merge of #58406 - Disasm:rv64-support, r=nagisa
Add riscv64{imac,gc}-unknown-none-elf targets

Previous attempt by @fintelia: https://github.com/rust-lang/rust/pull/58012

Related: https://github.com/rust-embedded/wg/issues/218
-rw-r--r--src/ci/docker/dist-various-1/Dockerfile2
-rw-r--r--src/librustc_target/spec/mod.rs2
-rw-r--r--src/librustc_target/spec/riscv64gc_unknown_none_elf.rs31
-rw-r--r--src/librustc_target/spec/riscv64imac_unknown_none_elf.rs31
m---------src/llvm-project0
-rw-r--r--src/tools/build-manifest/src/main.rs2
6 files changed, 68 insertions, 0 deletions
diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile
index ab2dd5a3992..f80293b182e 100644
--- a/src/ci/docker/dist-various-1/Dockerfile
+++ b/src/ci/docker/dist-various-1/Dockerfile
@@ -112,6 +112,8 @@ ENV TARGETS=$TARGETS,thumbv7em-none-eabihf
 ENV TARGETS=$TARGETS,thumbv8m.main-none-eabi
 ENV TARGETS=$TARGETS,riscv32imc-unknown-none-elf
 ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf
+ENV TARGETS=$TARGETS,riscv64imac-unknown-none-elf
+ENV TARGETS=$TARGETS,riscv64gc-unknown-none-elf
 ENV TARGETS=$TARGETS,armebv7r-none-eabi
 ENV TARGETS=$TARGETS,armebv7r-none-eabihf
 ENV TARGETS=$TARGETS,armv7r-none-eabi
diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
index 1df09c8f8fa..7cbf24402d7 100644
--- a/src/librustc_target/spec/mod.rs
+++ b/src/librustc_target/spec/mod.rs
@@ -451,6 +451,8 @@ supported_targets! {
 
     ("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
     ("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
+    ("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
+    ("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
 
     ("aarch64-unknown-none", aarch64_unknown_none),
 
diff --git a/src/librustc_target/spec/riscv64gc_unknown_none_elf.rs b/src/librustc_target/spec/riscv64gc_unknown_none_elf.rs
new file mode 100644
index 00000000000..2d4070c786f
--- /dev/null
+++ b/src/librustc_target/spec/riscv64gc_unknown_none_elf.rs
@@ -0,0 +1,31 @@
+use crate::spec::{LinkerFlavor, LldFlavor, PanicStrategy,
+           Target, TargetOptions, TargetResult};
+
+pub fn target() -> TargetResult {
+    Ok(Target {
+        data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
+        llvm_target: "riscv64".to_string(),
+        target_endian: "little".to_string(),
+        target_pointer_width: "64".to_string(),
+        target_c_int_width: "32".to_string(),
+        target_os: "none".to_string(),
+        target_env: String::new(),
+        target_vendor: "unknown".to_string(),
+        arch: "riscv64".to_string(),
+        linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
+
+        options: TargetOptions {
+            linker: Some("rust-lld".to_string()),
+            cpu: "generic-rv64".to_string(),
+            max_atomic_width: Some(64),
+            atomic_cas: true,
+            features: "+m,+a,+f,+d,+c".to_string(),
+            executables: true,
+            panic_strategy: PanicStrategy::Abort,
+            relocation_model: "static".to_string(),
+            emit_debug_gdb_scripts: false,
+            abi_blacklist: super::riscv_base::abi_blacklist(),
+            .. Default::default()
+        },
+    })
+}
diff --git a/src/librustc_target/spec/riscv64imac_unknown_none_elf.rs b/src/librustc_target/spec/riscv64imac_unknown_none_elf.rs
new file mode 100644
index 00000000000..f2e152c741e
--- /dev/null
+++ b/src/librustc_target/spec/riscv64imac_unknown_none_elf.rs
@@ -0,0 +1,31 @@
+use crate::spec::{LinkerFlavor, LldFlavor, PanicStrategy,
+           Target, TargetOptions, TargetResult};
+
+pub fn target() -> TargetResult {
+    Ok(Target {
+        data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
+        llvm_target: "riscv64".to_string(),
+        target_endian: "little".to_string(),
+        target_pointer_width: "64".to_string(),
+        target_c_int_width: "32".to_string(),
+        target_os: "none".to_string(),
+        target_env: String::new(),
+        target_vendor: "unknown".to_string(),
+        arch: "riscv64".to_string(),
+        linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
+
+        options: TargetOptions {
+            linker: Some("rust-lld".to_string()),
+            cpu: "generic-rv64".to_string(),
+            max_atomic_width: Some(64),
+            atomic_cas: true,
+            features: "+m,+a,+c".to_string(),
+            executables: true,
+            panic_strategy: PanicStrategy::Abort,
+            relocation_model: "static".to_string(),
+            emit_debug_gdb_scripts: false,
+            abi_blacklist: super::riscv_base::abi_blacklist(),
+            .. Default::default()
+        },
+    })
+}
diff --git a/src/llvm-project b/src/llvm-project
-Subproject 683d3522690b7a9d0163e7e7e6586f2b1364ed0
+Subproject 73a75d35b9776d56160fa3200aca4a970ae49b6
diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
index eaba473f9c3..8d87c404d0b 100644
--- a/src/tools/build-manifest/src/main.rs
+++ b/src/tools/build-manifest/src/main.rs
@@ -85,6 +85,8 @@ static TARGETS: &'static [&'static str] = &[
     "powerpc64le-unknown-linux-gnu",
     "riscv32imc-unknown-none-elf",
     "riscv32imac-unknown-none-elf",
+    "riscv64imac-unknown-none-elf",
+    "riscv64gc-unknown-none-elf",
     "s390x-unknown-linux-gnu",
     "sparc64-unknown-linux-gnu",
     "sparcv9-sun-solaris",