lib.rs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #![no_std]
  2. #![feature(lang_items)]
  3. #![feature(linkage)]
  4. #![feature(panic_implementation)]
  5. //extern crate compiler_builtins;
  6. extern crate platform;
  7. pub extern crate ctype;
  8. pub extern crate errno;
  9. pub extern crate fcntl;
  10. pub extern crate fenv;
  11. pub extern crate float;
  12. pub extern crate grp;
  13. pub extern crate locale;
  14. pub extern crate netinet;
  15. pub extern crate semaphore;
  16. pub extern crate setjmp;
  17. pub extern crate signal;
  18. pub extern crate stdio;
  19. pub extern crate stdlib;
  20. pub extern crate string;
  21. pub extern crate strings;
  22. pub extern crate sys_mman;
  23. pub extern crate sys_resource;
  24. pub extern crate sys_socket;
  25. pub extern crate sys_stat;
  26. pub extern crate sys_time;
  27. pub extern crate sys_utsname;
  28. pub extern crate sys_wait;
  29. pub extern crate time;
  30. pub extern crate unistd;
  31. pub extern crate wchar;
  32. pub extern crate wctype;
  33. #[cfg(not(test))]
  34. #[panic_implementation]
  35. #[linkage = "weak"]
  36. #[no_mangle]
  37. pub extern "C" fn rust_begin_unwind(pi: &::core::panic::PanicInfo) -> ! {
  38. use core::fmt::Write;
  39. let mut w = platform::FileWriter(2);
  40. let _ = w.write_fmt(format_args!("RELIBC PANIC: {}\n", pi));
  41. platform::exit(1);
  42. }
  43. #[cfg(not(test))]
  44. #[lang = "eh_personality"]
  45. #[no_mangle]
  46. #[linkage = "weak"]
  47. pub extern "C" fn rust_eh_personality() {}
  48. #[cfg(not(test))]
  49. #[lang = "oom"]
  50. #[linkage = "weak"]
  51. #[no_mangle]
  52. pub extern "C" fn rust_oom(layout: ::core::alloc::Layout) -> ! {
  53. use core::fmt::Write;
  54. let mut w = platform::FileWriter(2);
  55. let _ = w.write_fmt(format_args!(
  56. "RELIBC OOM: {} bytes aligned to {} bytes\n",
  57. layout.size(),
  58. layout.align()
  59. ));
  60. platform::exit(1);
  61. }
  62. #[cfg(not(test))]
  63. #[allow(non_snake_case)]
  64. #[linkage = "weak"]
  65. #[no_mangle]
  66. pub extern "C" fn _Unwind_Resume() -> ! {
  67. use core::fmt::Write;
  68. let mut w = platform::FileWriter(2);
  69. let _ = w.write_str("_Unwind_Resume\n");
  70. platform::exit(1);
  71. }