File tree 1 file changed +11
-0
lines changed
1 file changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,14 @@ pub const TR_OK: i32 = 50;
21
21
#[ cfg( windows) ]
22
22
const STATUS_ABORTED : i32 = 0xC0000409u32 as i32 ;
23
23
24
+ // On Zircon (the Fuchsia kernel), an abort from userspace calls the
25
+ // LLVM implementation of __builtin_trap(), e.g., ud2 on x86, which
26
+ // raises a kernel exception. If a userspace process does not
27
+ // otherwise arrange exception handling, the kernel kills the process
28
+ // with this return code.
29
+ #[ cfg( target_os = "fuchsia" ) ]
30
+ const ZX_TASK_RETCODE_EXCEPTION_KILL : i32 = -1028 ;
31
+
24
32
#[ derive( Debug , Clone , PartialEq ) ]
25
33
pub enum TestResult {
26
34
TrOk ,
@@ -105,6 +113,9 @@ pub fn get_result_from_exit_code(
105
113
}
106
114
None => unreachable ! ( "status.code() returned None but status.signal() was None" ) ,
107
115
} ,
116
+ // Upon an abort, Fuchsia returns the status code ZX_TASK_RETCODE_EXCEPTION_KILL.
117
+ #[ cfg( target_os = "fuchsia" ) ]
118
+ Some ( ZX_TASK_RETCODE_EXCEPTION_KILL ) => TestResult :: TrFailed ,
108
119
#[ cfg( not( unix) ) ]
109
120
None => TestResult :: TrFailedMsg ( format ! ( "unknown return code" ) ) ,
110
121
#[ cfg( any( windows, unix) ) ]
You can’t perform that action at this time.
0 commit comments