aboutsummaryrefslogtreecommitdiff
path: root/lib/std/builtin.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-10-25 05:30:33 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2023-10-25 08:20:11 -0400
commit868d5925809a4b97472dbfb9e32d73391f4d1ffa (patch)
tree1abf66ac400253d6f2e736750fcf80fafb09a02c /lib/std/builtin.zig
parentb55377a5ab34ba17336d25a9336a3bc18f535c43 (diff)
downloadzig-868d5925809a4b97472dbfb9e32d73391f4d1ffa.tar.gz
zig-868d5925809a4b97472dbfb9e32d73391f4d1ffa.zip
builtin: implement `default_panic` for `plan9`
Also disable default panic handler when not using elf.
Diffstat (limited to 'lib/std/builtin.zig')
-rw-r--r--lib/std/builtin.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig
index 48d021716a..c83bfb4276 100644
--- a/lib/std/builtin.zig
+++ b/lib/std/builtin.zig
@@ -739,6 +739,7 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace, ret_addr
builtin.zig_backend == .stage2_arm or
builtin.zig_backend == .stage2_aarch64 or
builtin.zig_backend == .stage2_x86 or
+ (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) or
builtin.zig_backend == .stage2_riscv64 or
builtin.zig_backend == .stage2_sparc64 or
builtin.zig_backend == .stage2_spirv64)
@@ -807,6 +808,13 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace, ret_addr
std.os.abort();
},
.cuda, .amdhsa => std.os.abort(),
+ .plan9 => {
+ var status: [std.os.plan9.ERRMAX]u8 = undefined;
+ const len = @min(msg.len, status.len - 1);
+ @memcpy(status[0..len], msg[0..len]);
+ status[len] = 0;
+ std.os.plan9.exits(status[0..len :0]);
+ },
else => {
const first_trace_addr = ret_addr orelse @returnAddress();
std.debug.panicImpl(error_return_trace, first_trace_addr, msg);