1 use crate::spec::{crt_objects, LinkArgs, LinkOutputKind, LinkerFlavor, LldFlavor, TargetOptions};
2 
opts() -> TargetOptions3 pub fn opts() -> TargetOptions {
4     let mut pre_link_args = LinkArgs::new();
5     pre_link_args.insert(
6         LinkerFlavor::Lld(LldFlavor::Ld),
7         vec![
8             "--build-id".to_string(),
9             "--hash-style=gnu".to_string(),
10             "-z".to_string(),
11             "max-page-size=4096".to_string(),
12             "-z".to_string(),
13             "now".to_string(),
14             "-z".to_string(),
15             "rodynamic".to_string(),
16             "-z".to_string(),
17             "separate-loadable-segments".to_string(),
18             "--pack-dyn-relocs=relr".to_string(),
19         ],
20     );
21 
22     TargetOptions {
23         os: "fuchsia".to_string(),
24         linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
25         linker: Some("rust-lld".to_owned()),
26         dynamic_linking: true,
27         executables: true,
28         families: vec!["unix".to_string()],
29         is_like_fuchsia: true,
30         pre_link_args,
31         pre_link_objects: crt_objects::new(&[
32             (LinkOutputKind::DynamicNoPicExe, &["Scrt1.o"]),
33             (LinkOutputKind::DynamicPicExe, &["Scrt1.o"]),
34             (LinkOutputKind::StaticNoPicExe, &["Scrt1.o"]),
35             (LinkOutputKind::StaticPicExe, &["Scrt1.o"]),
36         ]),
37         position_independent_executables: true,
38         has_elf_tls: true,
39         ..Default::default()
40     }
41 }
42