Skip to main content

rustc_target/spec/targets/
armv7_unknown_linux_gnueabihf.rs

1use crate::spec::{
2    Arch, CfgAbi, FloatAbi, SanitizerSet, Target, TargetMetadata, TargetOptions, base,
3};
4
5// This target is for glibc Linux on ARMv7 without NEON or
6// thumb-mode. See the thumbv7neon variant for enabling both.
7
8pub(crate) fn target() -> Target {
9    Target {
10        llvm_target: "armv7-unknown-linux-gnueabihf".into(),
11        metadata: TargetMetadata {
12            description: Some("Armv7-A Linux, hardfloat (kernel 3.2, glibc 2.17)".into()),
13            tier: Some(2),
14            host_tools: Some(true),
15            std: Some(true),
16        },
17        pointer_width: 32,
18        data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
19        arch: Arch::Arm,
20        options: TargetOptions {
21            cfg_abi: CfgAbi::EabiHf,
22            llvm_floatabi: Some(FloatAbi::Hard),
23            // Info about features at https://wiki.debian.org/ArmHardFloatPort
24            features: "+v7,+vfp3d16,+thumb2,-neon".into(),
25            max_atomic_width: Some(64),
26            mcount: "\u{1}__gnu_mcount_nc".into(),
27            llvm_mcount_intrinsic: Some("llvm.arm.gnu.eabi.mcount".into()),
28            supported_sanitizers: SanitizerSet::ADDRESS,
29            ..base::linux_gnu::opts()
30        },
31    }
32}