]>
Commit | Line | Data |
---|---|---|
2b03887a | 1 | use crate::spec::{crt_objects, cvs, Cc, LinkOutputKind, LinkerFlavor, Lld, TargetOptions}; |
c30ab7b3 SL |
2 | |
3 | pub 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 | } |