forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Differentiate AArch64 bare-metal targets between hf and non-hf.
Following up on [1] and [2], this PR adds differntiation for aarch64 bare-metal targets between versions with and without hardware floating point enabled. This streamlines the target naming with other existing ARM targets and provides the user clear indication if he is getting float or non-float for his bare-metal target. [1] rust-lang#60135 (comment) [2] rust-embedded/wg#230 Closes: rust-embedded/wg#230
- Loading branch information
1 parent
64c0969
commit d2762ac
Showing
3 changed files
with
40 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
src/librustc_target/spec/aarch64_unknown_none_softfloat.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
// Generic AArch64 target for bare-metal code - Floating point disabled | ||
// | ||
// Can be used in conjunction with the `target-feature` and | ||
// `target-cpu` compiler flags to opt-in more hardware-specific | ||
// features. | ||
// | ||
// For example, `-C target-cpu=cortex-a53`. | ||
|
||
use super::{LldFlavor, LinkerFlavor, Target, TargetOptions, PanicStrategy}; | ||
|
||
pub fn target() -> Result<Target, String> { | ||
let opts = TargetOptions { | ||
linker: Some("rust-lld".to_owned()), | ||
features: "+strict-align,-neon,-fp-armv8".to_string(), | ||
executables: true, | ||
relocation_model: "static".to_string(), | ||
disable_redzone: true, | ||
linker_is_gnu: true, | ||
max_atomic_width: Some(128), | ||
panic_strategy: PanicStrategy::Abort, | ||
abi_blacklist: super::arm_base::abi_blacklist(), | ||
.. Default::default() | ||
}; | ||
Ok(Target { | ||
llvm_target: "aarch64-unknown-none".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: String::new(), | ||
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(), | ||
arch: "aarch64".to_string(), | ||
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), | ||
options: opts, | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters