rustc_target/spec/targets/
armv7a_nuttx_eabi.rs

1// Targets Cortex-A7/A8/A9 processors (ARMv7-A) running NuttX
2//
3// This target assumes that the device does NOT have a FPU (Floating Point Unit)
4// and will use software floating point operations. This matches the NuttX EABI
5// configuration without hardware floating point support.
6
7use crate::spec::{
8    Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
9    TargetOptions, cvs,
10};
11
12pub(crate) fn target() -> Target {
13    let opts = TargetOptions {
14        abi: "eabi".into(),
15        llvm_floatabi: Some(FloatAbi::Soft),
16        linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
17        linker: Some("rust-lld".into()),
18        features: "+v7,+thumb2,+soft-float,-neon,+strict-align".into(),
19        relocation_model: RelocModel::Static,
20        disable_redzone: true,
21        max_atomic_width: Some(64),
22        panic_strategy: PanicStrategy::Abort,
23        emit_debug_gdb_scripts: false,
24        c_enum_min_bits: Some(8),
25        families: cvs!["unix"],
26        os: "nuttx".into(),
27        ..Default::default()
28    };
29    Target {
30        llvm_target: "armv7a-none-eabi".into(),
31        metadata: TargetMetadata {
32            description: Some("ARMv7-A Cortex-A with NuttX".into()),
33            tier: Some(3),
34            host_tools: Some(false),
35            std: Some(true),
36        },
37        pointer_width: 32,
38        data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
39        arch: "arm".into(),
40        options: opts,
41    }
42}