3 use super::{cvs, Cc, LinkerFlavor, Lld, Target, TargetOptions};
5 pub fn target() -> Target {
6 let pre_link_args = TargetOptions::link_args(
7 LinkerFlavor::Gnu(Cc::No, Lld::No),
18 "--error-unresolved-symbols",
19 "--no-undefined-version",
22 // The following symbols are needed by libunwind, which is linked after
23 // libstd. Make sure they're included in the link.
33 "__rust_rwlock_rdlock",
35 "__rust_rwlock_unlock",
37 "__rust_rwlock_wrlock",
41 const EXPORT_SYMBOLS: &[&str] = &[
57 let opts = TargetOptions {
60 vendor: "fortanix".into(),
61 abi: "fortanix".into(),
62 linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
63 linker: Some("rust-lld".into()),
64 max_atomic_width: Some(64),
66 features: "+rdrnd,+rdseed,+lvi-cfi,+lvi-load-hardening".into(),
67 llvm_args: cvs!["--x86-experimental-lvi-inline-asm-hardening"],
68 position_independent_executables: true,
70 override_export_symbols: Some(EXPORT_SYMBOLS.iter().cloned().map(Cow::from).collect()),
71 relax_elf_relocations: true,
75 llvm_target: "x86_64-elf".into(),
77 data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
79 arch: "x86_64".into(),