#![no_std]
#![allow(internal_features)]
#![feature(lang_items)]
#![feature(core_intrinsics)]
#[cfg(feature = "alloc")]
extern crate alloc;
extern crate origin;
#[panic_handler]
fn panic(panic: &core::panic::PanicInfo<'_>) -> ! {
eprintln!("{}", panic);
core::intrinsics::abort();
}
#[lang = "eh_personality"]
extern "C" fn eh_personality() {}
#[global_allocator]
static GLOBAL_ALLOCATOR: rustix_dlmalloc::GlobalDlmalloc = rustix_dlmalloc::GlobalDlmalloc;
#[no_mangle]
extern "C" fn main(argc: i32, argv: *mut *mut u8, envp: *mut *mut u8) -> i32 {
#[cfg(feature = "std")]
unsafe {
crate::init::sanitize_stdio_fds();
crate::init::store_args(argc, argv, envp);
}
unsafe {
crate::init::reset_sigpipe();
crate::stack_overflow::init();
}
extern "C" {
fn origin_studio_no_problem();
}
unsafe {
origin_studio_no_problem();
}
rustix::process::EXIT_SUCCESS
}
#[cfg(not(feature = "alloc"))]
#[macro_export]
macro_rules! no_problem {
() => {
extern crate compiler_builtins;
#[doc(hidden)]
#[no_mangle]
extern "C" fn origin_studio_no_problem() {
main()
}
};
}
#[cfg(all(feature = "alloc", not(feature = "std")))]
#[macro_export]
macro_rules! no_problem {
() => {
extern crate alloc;
extern crate compiler_builtins;
#[doc(hidden)]
#[no_mangle]
extern "C" fn origin_studio_no_problem() {
main()
}
};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! no_problem {
() => {
extern crate alloc;
extern crate compiler_builtins;
#[doc(hidden)]
#[no_mangle]
extern "C" fn origin_studio_no_problem() {
main()
}
use ::alloc::{format, vec};
use $crate::std::{self, prelude::rust_2021::*};
use $crate::{eprint, eprintln, print, println};
};
}
mod init;
mod stack_overflow;
#[cfg(feature = "std")]
pub mod std;