Commit 93528be6b1

Shritesh Bhattarai <shritesh@shritesh.com>
2019-04-14 04:54:50
wasi: sigabrt at panic
1 parent fe9cd0b
Changed files (2)
std
os
special
std/os/wasi/core.zig
@@ -1,12 +1,17 @@
 pub const __wasi_errno_t = u16;
 pub const __wasi_exitcode_t = u32;
 pub const __wasi_fd_t = u32;
+pub const __wasi_signal_t = u8;
 
 pub const __wasi_ciovec_t = extern struct {
     buf: [*]const u8,
     buf_len: usize,
 };
 
+pub const __WASI_SIGABRT: __wasi_signal_t = 6;
+
+pub extern fn __wasi_proc_raise(sig: __wasi_signal_t) __wasi_errno_t;
+
 pub extern fn __wasi_proc_exit(rval: __wasi_exitcode_t) noreturn;
 
 pub extern fn __wasi_fd_write(fd: __wasi_fd_t, iovs: *const __wasi_ciovec_t, iovs_len: usize, nwritten: *usize) __wasi_errno_t;
std/special/panic.zig
@@ -10,10 +10,14 @@ pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn
     @setCold(true);
     switch (builtin.os) {
         // TODO: fix panic in zen
-        // TODO: fix panic in wasi
-        builtin.Os.freestanding, builtin.Os.zen, builtin.Os.wasi => {
+        builtin.Os.freestanding, builtin.Os.zen => {
             while (true) {}
         },
+        builtin.Os.wasi => {
+            std.debug.warn("{}", msg);
+            _ = std.os.wasi.__wasi_proc_raise(std.os.wasi.__WASI_SIGABRT);
+            unreachable;
+        },
         builtin.Os.uefi => {
             // TODO look into using the debug info and logging helpful messages
             std.os.abort();