Add match arm for Fuchsia status code upon an abort in a test · model-checking/verify-rust-std@cbaa831 (original) (raw)

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))]