about summary refs log tree commit diff
path: root/compiler/rustc_target/src/spec/base/motor.rs
blob: 18485b2cef2fc111e5a43ce45b61903d51daabb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use crate::spec::{
    Cc, FramePointer, LinkerFlavor, Lld, PanicStrategy, StackProbeType, TargetOptions,
};

pub(crate) fn opts() -> TargetOptions {
    let pre_link_args = TargetOptions::link_args(
        LinkerFlavor::Gnu(Cc::No, Lld::No),
        &[
            "-e",
            "motor_start",
            "--no-undefined",
            "--error-unresolved-symbols",
            "--no-undefined-version",
            "-u",
            "__rust_abort",
        ],
    );
    TargetOptions {
        os: "motor".into(),
        executables: true,
        // TLS is false below because if true, the compiler assumes
        // we handle TLS at the ELF loading level, which we don't.
        // We use "OS level" TLS (see thread/local.rs in stdlib).
        has_thread_local: false,
        frame_pointer: FramePointer::NonLeaf,
        linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::No),
        main_needs_argc_argv: true,
        panic_strategy: PanicStrategy::Abort,
        pre_link_args,
        stack_probes: StackProbeType::Inline,
        supports_stack_protector: true,
        ..Default::default()
    }
}