rustc_target/spec/base/
motor.rs

1use crate::spec::{
2    Cc, FramePointer, LinkerFlavor, Lld, Os, PanicStrategy, StackProbeType, TargetOptions,
3};
4
5pub(crate) fn opts() -> TargetOptions {
6    let pre_link_args = TargetOptions::link_args(
7        LinkerFlavor::Gnu(Cc::Yes, Lld::No),
8        &["-e", "motor_start", "-u", "__rust_abort"],
9    );
10    TargetOptions {
11        os: Os::Motor,
12        executables: true,
13        // TLS is false below because if true, the compiler assumes
14        // we handle TLS at the ELF loading level, which we don't.
15        // We use "OS level" TLS (see thread/local.rs in stdlib).
16        has_thread_local: false,
17        frame_pointer: FramePointer::NonLeaf,
18        linker_flavor: LinkerFlavor::Gnu(Cc::Yes, Lld::No),
19        main_needs_argc_argv: true,
20        panic_strategy: PanicStrategy::Abort,
21        pre_link_args,
22        stack_probes: StackProbeType::Inline,
23        supports_stack_protector: true,
24        ..Default::default()
25    }
26}