diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs index 6c2d16d6a17..6faab77d770 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -377,6 +377,8 @@ supported_targets! { ("aarch64-unknown-hermit", aarch64_unknown_hermit), ("x86_64-unknown-hermit", x86_64_unknown_hermit), + + ("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf), } /// Everything `rustc` knows about how to compile for a specific target. diff --git a/src/librustc_target/spec/riscv32imac_unknown_none_elf.rs b/src/librustc_target/spec/riscv32imac_unknown_none_elf.rs new file mode 100644 index 00000000000..eacb3fbfcde --- /dev/null +++ b/src/librustc_target/spec/riscv32imac_unknown_none_elf.rs @@ -0,0 +1,51 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use spec::{LinkerFlavor, PanicStrategy, Target, TargetOptions, TargetResult}; +use spec::abi::{Abi}; + +pub fn target() -> TargetResult { + Ok(Target { + data_layout: "e-m:e-p:32:32-i64:64-n32-S128".to_string(), + llvm_target: "riscv32".to_string(), + target_endian: "little".to_string(), + target_pointer_width: "32".to_string(), + target_c_int_width: "32".to_string(), + target_os: "none".to_string(), + target_env: "".to_string(), + target_vendor: "unknown".to_string(), + arch: "riscv32".to_string(), + linker_flavor: LinkerFlavor::Ld, + + options: TargetOptions { + linker: Some("riscv32-unknown-elf-ld".to_string()), + cpu: "generic-rv32".to_string(), + max_atomic_width: Some(32), + features: "+m,+a,+c".to_string(), + executables: true, + panic_strategy: PanicStrategy::Abort, + relocation_model: "static".to_string(), + abi_blacklist: vec![ + Abi::Cdecl, + Abi::Stdcall, + Abi::Fastcall, + Abi::Vectorcall, + Abi::Thiscall, + Abi::Aapcs, + Abi::Win64, + Abi::SysV64, + Abi::PtxKernel, + Abi::Msp430Interrupt, + Abi::X86Interrupt, + ], + .. Default::default() + }, + }) +}