From 0f4668a5b0256ccc9370862e306b7ccb0bf486bd Mon Sep 17 00:00:00 2001 From: Vadim Kaushan Date: Tue, 12 Feb 2019 18:58:06 +0300 Subject: [PATCH 1/3] Update LLVM: apply patches for RISC-V 64-bit support --- src/llvm-project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm-project b/src/llvm-project index 683d3522690b7..73a75d35b9776 160000 --- a/src/llvm-project +++ b/src/llvm-project @@ -1 +1 @@ -Subproject commit 683d3522690b7a9d0163e7e7e6586f2b1364ed02 +Subproject commit 73a75d35b9776d56160fa3200aca4a970ae49b60 From 06f21a5314b7969bf5ee9ec0819c5ddffbad77f9 Mon Sep 17 00:00:00 2001 From: Vadim Kaushan Date: Tue, 12 Feb 2019 19:05:41 +0300 Subject: [PATCH 2/3] Add riscv64imac-unknown-none-elf target --- src/ci/docker/dist-various-1/Dockerfile | 1 + src/librustc_target/spec/mod.rs | 1 + .../spec/riscv64imac_unknown_none_elf.rs | 31 +++++++++++++++++++ src/tools/build-manifest/src/main.rs | 1 + 4 files changed, 34 insertions(+) create mode 100644 src/librustc_target/spec/riscv64imac_unknown_none_elf.rs diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile index ab2dd5a399280..87ace7a9adc29 100644 --- a/src/ci/docker/dist-various-1/Dockerfile +++ b/src/ci/docker/dist-various-1/Dockerfile @@ -112,6 +112,7 @@ 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,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 107583e4fc0a0..0f65fbd11e9ae 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -451,6 +451,7 @@ 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), ("aarch64-unknown-none", aarch64_unknown_none), 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 0000000000000..f2e152c741e02 --- /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/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index eaba473f9c3b8..bcfcf639dd161 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -85,6 +85,7 @@ static TARGETS: &'static [&'static str] = &[ "powerpc64le-unknown-linux-gnu", "riscv32imc-unknown-none-elf", "riscv32imac-unknown-none-elf", + "riscv64imac-unknown-none-elf", "s390x-unknown-linux-gnu", "sparc64-unknown-linux-gnu", "sparcv9-sun-solaris", From 1f1a82434b0d8679dbaaab8c2dd53c78d30a8c8c Mon Sep 17 00:00:00 2001 From: Vadim Kaushan Date: Tue, 12 Feb 2019 19:15:00 +0300 Subject: [PATCH 3/3] Add riscv64gc-unknown-none-elf target --- src/ci/docker/dist-various-1/Dockerfile | 1 + src/librustc_target/spec/mod.rs | 1 + .../spec/riscv64gc_unknown_none_elf.rs | 31 +++++++++++++++++++ src/tools/build-manifest/src/main.rs | 1 + 4 files changed, 34 insertions(+) create mode 100644 src/librustc_target/spec/riscv64gc_unknown_none_elf.rs diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile index 87ace7a9adc29..f80293b182e97 100644 --- a/src/ci/docker/dist-various-1/Dockerfile +++ b/src/ci/docker/dist-various-1/Dockerfile @@ -113,6 +113,7 @@ 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 0f65fbd11e9ae..799d4ff1d7d28 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -452,6 +452,7 @@ 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 0000000000000..2d4070c786fed --- /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/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index bcfcf639dd161..8d87c404d0b28 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -86,6 +86,7 @@ static TARGETS: &'static [&'static str] = &[ "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",