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 "start-stop-visibility=hidden",
22 "-z",
23 "rodynamic",
24 "-z",
25 "separate-loadable-segments",
26 "-z",
27 "rel",
28 "--pack-dyn-relocs=relr",
29 ],
30 );
31
32 TargetOptions {
33 os: "fuchsia".into(),
34 linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
35 linker: Some("rust-lld".into()),
36 dynamic_linking: true,
37 families: cvs!["unix"],
38 pre_link_args,
39 pre_link_objects: crt_objects::new(&[
40 (LinkOutputKind::DynamicNoPicExe, &["Scrt1.o"]),
41 (LinkOutputKind::DynamicPicExe, &["Scrt1.o"]),
42 (LinkOutputKind::StaticNoPicExe, &["Scrt1.o"]),
43 (LinkOutputKind::StaticPicExe, &["Scrt1.o"]),
44 ]),
45 position_independent_executables: true,
46 has_thread_local: true,
47 frame_pointer: FramePointer::NonLeaf,
48 ..Default::default()
49 }
50}