]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_target/src/spec/fuchsia_base.rs
New upstream version 1.66.0+dfsg1
[rustc.git] / compiler / rustc_target / src / spec / fuchsia_base.rs
CommitLineData
2b03887a 1use crate::spec::{crt_objects, cvs, Cc, LinkOutputKind, LinkerFlavor, Lld, TargetOptions};
c30ab7b3
SL
2
3pub fn opts() -> TargetOptions {
f2b60f7d
FG
4 // This mirrors the linker options provided by clang. We presume lld for
5 // now. When using clang as the linker it will supply these options for us,
6 // so we only list them for ld/lld.
7 //
8 // https://github.com/llvm/llvm-project/blob/db9322b2066c55254e7691efeab863f43bfcc084/clang/lib/Driver/ToolChains/Fuchsia.cpp#L31
064997fb 9 let pre_link_args = TargetOptions::link_args(
2b03887a 10 LinkerFlavor::Gnu(Cc::No, Lld::No),
064997fb
FG
11 &[
12 "--build-id",
13 "--hash-style=gnu",
14 "-z",
15 "max-page-size=4096",
16 "-z",
17 "now",
18 "-z",
19 "rodynamic",
20 "-z",
21 "separate-loadable-segments",
22 "--pack-dyn-relocs=relr",
dfeec247
XL
23 ],
24 );
cc61c64b 25
c30ab7b3 26 TargetOptions {
5e7ed085 27 os: "fuchsia".into(),
2b03887a 28 linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
5e7ed085 29 linker: Some("rust-lld".into()),
c30ab7b3 30 dynamic_linking: true,
5e7ed085 31 families: cvs!["unix"],
dc9dc135 32 pre_link_args,
f9f354fc
XL
33 pre_link_objects: crt_objects::new(&[
34 (LinkOutputKind::DynamicNoPicExe, &["Scrt1.o"]),
35 (LinkOutputKind::DynamicPicExe, &["Scrt1.o"]),
36 (LinkOutputKind::StaticNoPicExe, &["Scrt1.o"]),
37 (LinkOutputKind::StaticPicExe, &["Scrt1.o"]),
38 ]),
c30ab7b3 39 position_independent_executables: true,
a2a8927a 40 has_thread_local: true,
dfeec247 41 ..Default::default()
c30ab7b3
SL
42 }
43}