-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add target thumbv7neon-unknown-linux-musleabihf
This is a copy of thumbv7neon-unknown-linux-gnueabihf with musl changes merged from armv7-unknown-linux-musleabihf.
- Loading branch information
Showing
2 changed files
with
38 additions
and
0 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/thumbv7neon_unknown_linux_musleabihf.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 @@ | ||
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; | ||
|
||
// This target is for musl Linux on ARMv7 with thumb mode enabled | ||
// (for consistency with Android and Debian-based distributions) | ||
// and with NEON unconditionally enabled and, therefore, with 32 FPU | ||
// registers enabled as well. See section A2.6.2 on page A2-56 in | ||
// https://static.docs.arm.com/ddi0406/cd/DDI0406C_d_armv7ar_arm.pdf | ||
|
||
pub fn target() -> TargetResult { | ||
let base = super::linux_musl_base::opts(); | ||
Ok(Target { | ||
// It's important we use "gnueabihf" and not "musleabihf" here. LLVM | ||
// uses it to determine the calling convention and float ABI, and LLVM | ||
// doesn't support the "musleabihf" value. | ||
llvm_target: "armv7-unknown-linux-gnueabihf".to_string(), | ||
target_endian: "little".to_string(), | ||
target_pointer_width: "32".to_string(), | ||
target_c_int_width: "32".to_string(), | ||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(), | ||
arch: "arm".to_string(), | ||
target_os: "linux".to_string(), | ||
target_env: "musl".to_string(), | ||
target_vendor: "unknown".to_string(), | ||
linker_flavor: LinkerFlavor::Gcc, | ||
|
||
// Most of these settings are copied from the thumbv7neon_unknown_linux_gnueabihf | ||
// target. | ||
options: TargetOptions { | ||
features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(), | ||
cpu: "generic".to_string(), | ||
max_atomic_width: Some(64), | ||
abi_blacklist: super::arm_base::abi_blacklist(), | ||
target_mcount: "\u{1}mcount".to_string(), | ||
.. base | ||
} | ||
}) | ||
} |