]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_target/src/spec/thumbv7a_pc_windows_msvc.rs
Issue error when `-C link-self-contained` option is used on unsupported platforms
[rust.git] / compiler / rustc_target / src / spec / thumbv7a_pc_windows_msvc.rs
1 use crate::spec::{LinkerFlavor, Lld, PanicStrategy, Target, TargetOptions};
2
3 pub fn target() -> Target {
4     let mut base = super::windows_msvc_base::opts();
5     // Prevent error LNK2013: BRANCH24(T) fixup overflow
6     // The LBR optimization tries to eliminate branch islands,
7     // but if the displacement is larger than can fit
8     // in the instruction, this error will occur. The linker
9     // should be smart enough to insert branch islands only
10     // where necessary, but this is not the observed behavior.
11     // Disabling the LBR optimization works around the issue.
12     base.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/OPT:NOLBR"]);
13
14     Target {
15         llvm_target: "thumbv7a-pc-windows-msvc".into(),
16         pointer_width: 32,
17         data_layout: "e-m:w-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
18         arch: "arm".into(),
19         options: TargetOptions {
20             features: "+vfp3,+neon".into(),
21             max_atomic_width: Some(64),
22             // FIXME(jordanrh): use PanicStrategy::Unwind when SEH is
23             // implemented for windows/arm in LLVM
24             panic_strategy: PanicStrategy::Abort,
25             ..base
26         },
27     }
28 }