Commit 93528be6b1
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();