rustc_target/spec/base/
motor.rs

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