1 use crate::spec::{crt_objects, cvs, Cc, LinkOutputKind, LinkerFlavor, Lld, TargetOptions};
3 pub fn opts() -> TargetOptions {
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.
8 // https://github.com/llvm/llvm-project/blob/db9322b2066c55254e7691efeab863f43bfcc084/clang/lib/Driver/ToolChains/Fuchsia.cpp#L31
9 let pre_link_args = TargetOptions::link_args(
10 LinkerFlavor::Gnu(Cc::No, Lld::No),
21 "separate-loadable-segments",
22 "--pack-dyn-relocs=relr",
28 linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
29 linker: Some("rust-lld".into()),
30 dynamic_linking: true,
31 families: cvs!["unix"],
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"]),
39 position_independent_executables: true,
40 has_thread_local: true,