| use crate::spec::{ |
| Cc, FramePointer, LinkerFlavor, Lld, Os, PanicStrategy, StackProbeType, TargetOptions, |
| }; |
| |
| pub(crate) fn opts() -> TargetOptions { |
| let pre_link_args = TargetOptions::link_args( |
| LinkerFlavor::Gnu(Cc::Yes, Lld::No), |
| &["-e", "motor_start", "-u", "__rust_abort"], |
| ); |
| TargetOptions { |
| os: Os::Motor, |
| 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::Yes, Lld::No), |
| main_needs_argc_argv: true, |
| panic_strategy: PanicStrategy::Abort, |
| pre_link_args, |
| stack_probes: StackProbeType::Inline, |
| supports_stack_protector: true, |
| ..Default::default() |
| } |
| } |