aboutsummaryrefslogtreecommitdiff
path: root/ctr-std/src/rt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ctr-std/src/rt.rs')
-rw-r--r--ctr-std/src/rt.rs19
1 files changed, 16 insertions, 3 deletions
diff --git a/ctr-std/src/rt.rs b/ctr-std/src/rt.rs
index ddfb707..735509b 100644
--- a/ctr-std/src/rt.rs
+++ b/ctr-std/src/rt.rs
@@ -23,6 +23,8 @@
#![doc(hidden)]
use panic;
+use sys_common::thread_info;
+use thread::Thread;
use mem;
// Reexport some of our utilities which are expected by other crates.
@@ -32,8 +34,19 @@ pub use panicking::{begin_panic, begin_panic_fmt};
#[lang = "start"]
#[allow(unused_variables)]
fn lang_start(main: *const u8, argc: isize, argv: *const *const u8) -> isize {
- let _ = unsafe {
- panic::catch_unwind(mem::transmute::<_, fn()>(main))
+ let failed = unsafe {
+ let thread = Thread::new(Some("main".to_owned()));
+
+ thread_info::set(None, thread);
+
+ let res = panic::catch_unwind(mem::transmute::<_, fn()>(main));
+
+ res.is_err()
};
- 0
+
+ if failed {
+ 101
+ } else {
+ 0
+ }
}