rustc_target/spec/base/
fuchsia.rs
1use crate::spec::{
2 Cc, FramePointer, LinkOutputKind, LinkerFlavor, Lld, TargetOptions, crt_objects, cvs,
3};
4
5pub(crate) fn opts() -> TargetOptions {
6 let pre_link_args = TargetOptions::link_args(
12 LinkerFlavor::Gnu(Cc::No, Lld::No),
13 &[
14 "--build-id",
15 "--hash-style=gnu",
16 "-z",
17 "max-page-size=4096",
18 "-z",
19 "now",
20 "-z",
21 "rodynamic",
22 "-z",
23 "separate-loadable-segments",
24 "--pack-dyn-relocs=relr",
25 ],
26 );
27
28 TargetOptions {
29 os: "fuchsia".into(),
30 linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
31 linker: Some("rust-lld".into()),
32 dynamic_linking: true,
33 families: cvs!["unix"],
34 pre_link_args,
35 pre_link_objects: crt_objects::new(&[
36 (LinkOutputKind::DynamicNoPicExe, &["Scrt1.o"]),
37 (LinkOutputKind::DynamicPicExe, &["Scrt1.o"]),
38 (LinkOutputKind::StaticNoPicExe, &["Scrt1.o"]),
39 (LinkOutputKind::StaticPicExe, &["Scrt1.o"]),
40 ]),
41 position_independent_executables: true,
42 has_thread_local: true,
43 frame_pointer: FramePointer::NonLeaf,
44 ..Default::default()
45 }
46}