From aab96002df2d475289adf01b3dbfdd2a2a3823fd Mon Sep 17 00:00:00 2001 From: Pavel Verigo Date: Wed, 21 Oct 2026 19:08:15 -0700 Subject: [PATCH 01/50] wasm: fix bool confusion in memset --- src/codegen/wasm/CodeGen.zig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/codegen/wasm/CodeGen.zig b/src/codegen/wasm/CodeGen.zig index 2e894ef2c87755c64808405863584b2c38ca7eda..94057e154e9e10e8aef87f75c9e3e8e087db2f3a 100644 --- a/src/codegen/wasm/CodeGen.zig +++ b/src/codegen/wasm/CodeGen.zig @@ -6661,6 +6661,9 @@ fn memset(cg: *CodeGen, elem_ty: Type, ptr: WValue, len: WValue, value: WValue) try cg.emitWValue(ptr); try cg.emitWValue(value); + if (isByRef(elem_ty, zcu, cg.target)) { + _ = try cg.load(.stack, .u8, .{}); + } try cg.emitWValue(len); try cg.addExtended(.memory_fill); -- 2.54.0 From aa5a7dc93de0c398b73747612eba0db180d97b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:07:25 +0200 Subject: [PATCH 02/50] std.c: fix sem_open() to be variadic --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 093cab3db16ad24142617d63aa02ad06c1a3e743..0e9073f4d1c1ea3a08559e76c704b11cc9d92039 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11124,7 +11124,7 @@ pub const ptrace = switch (native_os) { pub extern "c" fn sem_init(sem: *sem_t, pshared: c_int, value: c_uint) c_int; pub extern "c" fn sem_destroy(sem: *sem_t) c_int; -pub extern "c" fn sem_open(name: [*:0]const u8, flag: c_int, mode: mode_t, value: c_uint) *sem_t; +pub extern "c" fn sem_open(name: [*:0]const u8, flag: c_int, ...) *sem_t; pub extern "c" fn sem_close(sem: *sem_t) c_int; pub extern "c" fn sem_post(sem: *sem_t) c_int; pub extern "c" fn sem_wait(sem: *sem_t) c_int; -- 2.54.0 From ac277ef99ed3caab470da12c52ba756f778d9e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:08:04 +0200 Subject: [PATCH 03/50] std.c: serenity does not have malloc_usable_size() --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 0e9073f4d1c1ea3a08559e76c704b11cc9d92039..bcfbccccd44f9ed131c91ad36e1cf7e5d60de4a2 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -10845,7 +10845,7 @@ pub const malloc_size = switch (native_os) { else => {}, }; pub const malloc_usable_size = switch (native_os) { - .freebsd, .linux, .serenity => private.malloc_usable_size, + .freebsd, .linux => private.malloc_usable_size, else => {}, }; pub const posix_memalign = switch (native_os) { -- 2.54.0 From 049a5804a309e0d202273a969768a7e83ec0b4a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:32:25 +0200 Subject: [PATCH 04/50] std.c: define pthread_cancelstate for serenity --- lib/std/c.zig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index bcfbccccd44f9ed131c91ad36e1cf7e5d60de4a2..b4e29e664b4fd0ba8c04df55677c97d9470378fb 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11069,6 +11069,10 @@ pub const pthread_cancelstate = switch (native_os) { ENABLE = 0, DISABLE = 1, }, + .serenity => enum(c_int) { + ENABLE = 1, + DISABLE = 2, + }, else => void, }; pub extern "c" fn pthread_setcancelstate(pthread_cancelstate, ?*pthread_cancelstate) E; -- 2.54.0 From 7f5cd33fc45bc3002c3acbda0fdab3603d6edb77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:23:28 +0200 Subject: [PATCH 05/50] std.c: fix LC enum for serenity --- lib/std/c.zig | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index b4e29e664b4fd0ba8c04df55677c97d9470378fb..92d45f0b1c0790c0e1c99185faa8a4de08feef9f 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11287,21 +11287,34 @@ pub extern "c" fn setsid() pid_t; /// These are implementation defined but share identical values in at least musl and glibc: /// - https://git.musl-libc.org/cgit/musl/tree/include/locale.h?id=ab31e9d6a0fa7c5c408856c89df2dfb12c344039#n18 /// - https://sourceware.org/git/?p=glibc.git;a=blob;f=locale/bits/locale.h;h=0fcbb66114be5fef0577dc9047256eb508c45919;hb=c90cfce849d010474e8cccf3e5bff49a2c8b141f#l26 -pub const LC = enum(c_int) { - CTYPE = 0, - NUMERIC = 1, - TIME = 2, - COLLATE = 3, - MONETARY = 4, - MESSAGES = 5, - ALL = 6, - PAPER = 7, - NAME = 8, - ADDRESS = 9, - TELEPHONE = 10, - MEASUREMENT = 11, - IDENTIFICATION = 12, - _, +pub const LC = switch (native_os) { + // https://github.com/SerenityOS/serenity/blob/fe4f3879551f2fdd8a24de06b88f4450e2f3b93d/Userland/Libraries/LibC/locale.h#L14-L29 + .serenity => enum(c_int) { + ALL = 0, + NUMERIC = 1, + CTYPE = 2, + COLLATE = 3, + TIME = 4, + MONETARY = 5, + MESSAGES = 6, + _, + }, + else => enum(c_int) { + CTYPE = 0, + NUMERIC = 1, + TIME = 2, + COLLATE = 3, + MONETARY = 4, + MESSAGES = 5, + ALL = 6, + PAPER = 7, + NAME = 8, + ADDRESS = 9, + TELEPHONE = 10, + MEASUREMENT = 11, + IDENTIFICATION = 12, + _, + }, }; pub extern "c" fn setlocale(category: LC, locale: ?[*:0]const u8) ?[*:0]const u8; -- 2.54.0 From ee9b095f4eba6742288eae5e5fcf02f949e7e380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:25:39 +0200 Subject: [PATCH 06/50] std.c: fix RTLD layout for serenity --- lib/std/c.zig | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 92d45f0b1c0790c0e1c99185faa8a4de08feef9f..e88e3d94975386742b26e0d389c812c0ec1ad419 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -7337,13 +7337,12 @@ pub const RTLD = switch (native_os) { }, // https://github.com/SerenityOS/serenity/blob/36a26d7fa80bc9c72b19442912d8967f448368ff/Userland/Libraries/LibC/dlfcn.h#L13-L17 .serenity => packed struct(c_int) { - DEFAULT: bool = false, - _1: u1, + _0: u1, LAZY: bool = false, NOW: bool = false, GLOBAL: bool = false, LOCAL: bool = false, - _: @Int(.unsigned, @bitSizeOf(c_int) - 6) = 0, + _: @Int(.unsigned, @bitSizeOf(c_int) - 5) = 0, }, else => void, }; -- 2.54.0 From b33275e7a6fe0be31831aa8aa532dd1319a8f828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:34:03 +0200 Subject: [PATCH 07/50] std.c: define group for serenity --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index e88e3d94975386742b26e0d389c812c0ec1ad419..556d2124168b81b44436530988bf49f99c683679 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -217,7 +217,7 @@ pub const passwd = switch (native_os) { }; pub const group = switch (native_os) { - .linux, .freebsd, .openbsd, .dragonfly, .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { + .linux, .freebsd, .openbsd, .dragonfly, .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => extern struct { name: ?[*:0]const u8, passwd: ?[*:0]const u8, gid: gid_t, -- 2.54.0 From 10ecbd71deaab97378b2aadd603abb2a4f233e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:37:07 +0200 Subject: [PATCH 08/50] std.c.serenity: fix PERF_EVENT compile error --- lib/std/c/serenity.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/std/c/serenity.zig b/lib/std/c/serenity.zig index 649e9b71fdff4641654387140c2b8452af6fb6c1..d391f9d82ce080b9b9e602e8bf75865290e47ae4 100644 --- a/lib/std/c/serenity.zig +++ b/lib/std/c/serenity.zig @@ -43,6 +43,7 @@ pub const PERF_EVENT = packed struct(c_int) { SYSCALL: bool = false, SIGNPOST: bool = false, FILESYSTEM: bool = false, + _: @Int(.unsigned, @bitSizeOf(c_int) - 17) = 0, }; // https://github.com/SerenityOS/serenity/blob/abc150085f532f123b598949218893cb272ccc4c/Userland/Libraries/LibC/serenity.h -- 2.54.0 From 84745e1eb25c369611aaab9d9041e76b9e1613c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:45:29 +0200 Subject: [PATCH 09/50] std.c: fix mremap() signature for serenity --- lib/std/c.zig | 6 +++++- lib/std/c/serenity.zig | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 556d2124168b81b44436530988bf49f99c683679..7a9b706d0a06ab0fd51a40634ed3fbf92a36d28b 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -10905,7 +10905,10 @@ pub extern "c" fn write(fd: fd_t, buf: [*]const u8, nbyte: usize) isize; pub extern "c" fn pwrite(fd: fd_t, buf: [*]const u8, nbyte: usize, offset: off_t) isize; pub extern "c" fn mmap(addr: ?*align(page_size) anyopaque, len: usize, prot: PROT, flags: MAP, fd: fd_t, offset: off_t) *anyopaque; pub extern "c" fn munmap(addr: *align(page_size) const anyopaque, len: usize) c_int; -pub extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque; +pub const mremap = switch (native_os) { + .serenity => serenity.mremap, + else => private.mremap, +}; pub extern "c" fn mprotect(addr: *align(page_size) anyopaque, len: usize, prot: PROT) c_int; pub extern "c" fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) c_int; pub extern "c" fn linkat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: c_uint) c_int; @@ -11849,6 +11852,7 @@ const private = struct { extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int; extern "c" fn ioctl(fd: fd_t, request: c_int, ...) c_int; extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int; + extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque; extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int; extern "c" fn pipe2(fds: *[2]fd_t, flags: O) c_int; extern "c" fn readdir(dir: *DIR) ?*dirent; diff --git a/lib/std/c/serenity.zig b/lib/std/c/serenity.zig index d391f9d82ce080b9b9e602e8bf75865290e47ae4..eb416e7f18a7756725d3e1b10da028045da99fe8 100644 --- a/lib/std/c/serenity.zig +++ b/lib/std/c/serenity.zig @@ -1,10 +1,12 @@ const std = @import("../std.zig"); const assert = std.debug.assert; const builtin = @import("builtin"); +const MAP = std.c.MAP; const O = std.c.O; const clockid_t = std.c.clockid_t; const pid_t = std.c.pid_t; const timespec = std.c.timespec; +const page_size = std.heap.page_size_min; comptime { assert(builtin.os.tag == .serenity); // Prevent access of std.c symbols on wrong OS. @@ -68,6 +70,9 @@ pub extern "c" fn anon_create(size: usize, options: O) c_int; pub extern "c" fn getkeymap(name_buffer: [*]u8, name_buffer_size: usize, map: [*]u32, shift_map: [*]u32, alt_map: [*]u32, altgr_map: [*]u32, shift_altgr_map: [*]u32) c_int; pub extern "c" fn setkeymap(name: [*]const u8, map: [*]const u32, shift_map: [*]const u32, alt_map: [*]const u32, altgr_map: [*]const u32, shift_altgr_map: [*]const u32) c_int; +// https://github.com/SerenityOS/serenity/blob/fe4f3879551f2fdd8a24de06b88f4450e2f3b93d/Userland/Libraries/LibC/sys/mman.h#L17 +pub extern "c" fn mremap(old_address: ?*align(page_size) anyopaque, old_size: usize, new_size: usize, flags: MAP) *anyopaque; + // https://github.com/SerenityOS/serenity/blob/5bd8af99be0bc4b2e14f361fd7d7590e6bcfa4d6/Kernel/API/POSIX/netinet/in.h#L29 pub const IP = struct { pub const TOS = 1; -- 2.54.0 From 67647df28c6559b5ed3e16a97c815df2ed8fb3b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:52:13 +0200 Subject: [PATCH 10/50] std.c: fix pthread_attr_t layout for haiku --- lib/std/c.zig | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 7a9b706d0a06ab0fd51a40634ed3fbf92a36d28b..cb771893ca1d6a16c7892bd68ce6caa3b09527ba 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -8190,7 +8190,7 @@ pub const pthread_attr_t = switch (native_os) { __opaque: [56]u8, }, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L75 - .freebsd, .openbsd, .serenity => extern struct { + .freebsd, .haiku, .openbsd, .serenity => extern struct { inner: ?*anyopaque = null, }, .illumos => extern struct { @@ -8201,13 +8201,6 @@ pub const pthread_attr_t = switch (native_os) { flags: i32, private: ?*anyopaque, }, - .haiku => extern struct { - detach_state: i32, - sched_priority: i32, - stack_size: i32, - guard_size: i32, - stack_address: ?*anyopaque, - }, else => void, }; -- 2.54.0 From c9a0cc0e4c92f95a0ade5541cc3c080e9912c772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:50:57 +0200 Subject: [PATCH 11/50] std.c: define pthread_key_t for haiku --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index cb771893ca1d6a16c7892bd68ce6caa3b09527ba..f4fff3582d64b7732a9cc596aa1aaec45bac89b5 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -8208,7 +8208,7 @@ pub const pthread_key_t = switch (native_os) { .linux, .emscripten => c_uint, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => c_ulong, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L65 - .openbsd, .illumos, .serenity => c_int, + .openbsd, .haiku, .illumos, .serenity => c_int, else => void, }; -- 2.54.0 From bc479451ce6c30174b9be027356ec59a53f89e81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:43:19 +0200 Subject: [PATCH 12/50] std.c: define pthread_cancelstate for haiku --- lib/std/c.zig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index f4fff3582d64b7732a9cc596aa1aaec45bac89b5..e653d602b5a8dc1fe465483e5a098d21dacd67a1 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11056,6 +11056,10 @@ pub const pthread_cancelstate = switch (native_os) { ENABLE = 1, DISABLE = 0, }, + .haiku => enum(c_int) { + ENABLE = 0, + DISABLE = 1, + }, .linux => if (native_abi.isMusl()) enum(c_int) { ENABLE = 0, DISABLE = 1, -- 2.54.0 From eeed9ce598fca623d593d7867b2e07c98d4ae74e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:46:45 +0200 Subject: [PATCH 13/50] std.c: fix width of termios flag packed structs for haiku --- lib/std/c.zig | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index e653d602b5a8dc1fe465483e5a098d21dacd67a1..3652dc045f37a8c5ceabd7991e32e0f6fc45c1fe 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -9107,7 +9107,7 @@ pub const tc_iflag_t = switch (native_os) { IMAXBEL: bool = false, _: u18 = 0, }, - .haiku => packed struct(u32) { + .haiku => packed struct(u16) { IGNBRK: bool = false, BRKINT: bool = false, IGNPAR: bool = false, @@ -9121,7 +9121,7 @@ pub const tc_iflag_t = switch (native_os) { IXON: bool = false, IXANY: bool = false, IXOFF: bool = false, - _: u19 = 0, + _: u3 = 0, }, .illumos => packed struct(u32) { IGNBRK: bool = false, @@ -9235,8 +9235,24 @@ pub const tc_oflag_t = switch (native_os) { WRAP: bool = false, _: u14 = 0, }, + .haiku => packed struct(u16) { + OPOST: bool = false, + OLCUC: bool = false, + ONLCR: bool = false, + OCRNL: bool = false, + ONOCR: bool = false, + ONLRET: bool = false, + OFILL: bool = false, + OFDEL: bool = false, + NLDLY: u1 = 0, + CRDLY: u2 = 0, + TABDLY: u2 = 0, + BSDLY: u1 = 0, + VTDLY: u1 = 0, + FFDLY: u1 = 0, + }, // https://github.com/SerenityOS/serenity/blob/d277cdfd4c7ed21d5248a83217ae03b9f890c3c8/Kernel/API/POSIX/termios.h#L69-L97 - .haiku, .emscripten, .serenity => packed struct(u32) { + .emscripten, .serenity => packed struct(u32) { OPOST: bool = false, OLCUC: bool = false, ONLCR: bool = false, @@ -9349,7 +9365,7 @@ pub const tc_cflag_t = switch (native_os) { MDMBUF: bool = false, _: u11 = 0, }, - .haiku => packed struct(u32) { + .haiku => packed struct(u16) { _0: u5 = 0, CSIZE: CSIZE = .CS7, CSTOPB: bool = false, @@ -9361,7 +9377,7 @@ pub const tc_cflag_t = switch (native_os) { XLOBLK: bool = false, CTSFLOW: bool = false, RTSFLOW: bool = false, - _: u17 = 0, + _: u1 = 0, }, .illumos => packed struct(u32) { _0: u4 = 0, @@ -9483,7 +9499,7 @@ pub const tc_lflag_t = switch (native_os) { _30: u1 = 0, NOFLSH: bool = false, }, - .haiku => packed struct(u32) { + .haiku => packed struct(u16) { ISIG: bool = false, ICANON: bool = false, XCASE: bool = false, @@ -9499,7 +9515,7 @@ pub const tc_lflag_t = switch (native_os) { ECHOKE: bool = false, FLUSHO: bool = false, PENDIN: bool = false, - _: u17 = 0, + _: u1 = 0, }, .illumos => packed struct(u32) { ISIG: bool = false, -- 2.54.0 From 143b69d52fe68454cd142832e5fc031d98eecc3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:50:21 +0200 Subject: [PATCH 14/50] std.c: fix termios layout for haiku --- lib/std/c.zig | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 3652dc045f37a8c5ceabd7991e32e0f6fc45c1fe..b38afe800925c67ed75bd015012d49c8ce35c696 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -9025,12 +9025,16 @@ pub const termios = switch (native_os) { }, .haiku => extern struct { iflag: tc_iflag_t, + ispeed: u16, oflag: tc_oflag_t, + ospeed: u16, cflag: tc_cflag_t, + ispeed_high: u16, lflag: tc_lflag_t, + ospeed_high: u16, line: cc_t, - ispeed: speed_t, - ospeed: speed_t, + _pad1: u8 = 0, + _pad2: u8 = 0, cc: [NCCS]cc_t, }, .illumos => extern struct { -- 2.54.0 From 42f0c8ab8765ef5c374b9fcdb2ea6bc934ba485b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:53:51 +0200 Subject: [PATCH 15/50] std.c: fix sockaddr.un.path length on haiku --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index b38afe800925c67ed75bd015012d49c8ce35c696..9dabfd08cc4bbb8badbad9a4929c8491521576a5 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -5239,7 +5239,7 @@ pub const sockaddr = switch (native_os) { pub const un = extern struct { len: u8 = @sizeOf(un), family: sa_family_t = AF.UNIX, - path: [104]u8, + path: [126]u8, }; }, .openbsd => extern struct { -- 2.54.0 From 794801af2060cdf6765886b305ecf94b202b2c89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:54:39 +0200 Subject: [PATCH 16/50] std.c: fix sockaddr.in.zero length on haiku --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 9dabfd08cc4bbb8badbad9a4929c8491521576a5..e73d7f0e2703ee71b562ff5e53e4554a42eb858d 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -5224,7 +5224,7 @@ pub const sockaddr = switch (native_os) { family: sa_family_t = AF.INET, port: in_port_t, addr: u32, - zero: [8]u8 = [8]u8{ 0, 0, 0, 0, 0, 0, 0, 0 }, + zero: [24]u8 = @splat(0), }; pub const in6 = extern struct { -- 2.54.0 From ae8e7ca6d86506a37850d641cf932b86e70d08fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:55:24 +0200 Subject: [PATCH 17/50] std.c: fix sockaddr.data length on haiku --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index e73d7f0e2703ee71b562ff5e53e4554a42eb858d..ced6e7f3b7bd41b8f933aa2ea1b56548669d87b8 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -5205,7 +5205,7 @@ pub const sockaddr = switch (native_os) { /// address family family: sa_family_t, /// actually longer; address value - data: [14]u8, + data: [30]u8, pub const SS_MAXSIZE = 128; pub const storage = extern struct { -- 2.54.0 From 6cdfa470caed41cd3652557f850a6bb22fa86c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:56:05 +0200 Subject: [PATCH 18/50] std.c: define sigval for haiku --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index ced6e7f3b7bd41b8f933aa2ea1b56548669d87b8..bf724f5bff157d82f1897d7a850adf66a9309488 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4904,7 +4904,7 @@ pub const sigset_t = switch (native_os) { pub const sigval = switch (native_os) { .linux => linux.sigval, // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L22-L25 - .openbsd, .dragonfly, .freebsd, .serenity => extern union { + .openbsd, .dragonfly, .freebsd, .haiku, .serenity => extern union { int: c_int, ptr: ?*anyopaque, }, -- 2.54.0 From b030fe4fef11092ec095a2ade9b1b29e06a192cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 02:05:25 +0200 Subject: [PATCH 19/50] std.c: fix siginfo_t layout for haiku --- lib/std/c.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index bf724f5bff157d82f1897d7a850adf66a9309488..89215a66fe43e40cd185cdc695ad6575aaea00d8 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4840,12 +4840,15 @@ pub const siginfo_t = switch (native_os) { }, .haiku => extern struct { signo: SIG, - code: i32, - errno: i32, + code: c_int, + errno: c_int, pid: pid_t, uid: uid_t, addr: *allowzero anyopaque, + status: c_int, + band: c_long, + value: sigval, }, .openbsd => extern struct { signo: SIG, -- 2.54.0 From 8a8aab3ed92ac0e4223950917eb36e668783ef61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 01:59:14 +0200 Subject: [PATCH 20/50] std.c: fix RLIM constants for haiku --- lib/std/c.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 89215a66fe43e40cd185cdc695ad6575aaea00d8..8793ac326bdb9bada0975f019528442447a61fb9 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -1978,13 +1978,20 @@ pub const RLIM = switch (native_os) { .linux => linux.RLIM, .emscripten => emscripten.RLIM, // https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/sys/resource.h#L52 - .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => struct { + .openbsd, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => struct { /// No limit pub const INFINITY: rlim_t = (1 << 63) - 1; pub const SAVED_MAX = INFINITY; pub const SAVED_CUR = INFINITY; }, + .haiku => struct { + /// No limit + pub const INFINITY: rlim_t = 0xffffffff; + + pub const SAVED_MAX = INFINITY; + pub const SAVED_CUR = INFINITY; + }, .illumos => struct { /// No limit pub const INFINITY: rlim_t = (1 << 63) - 3; -- 2.54.0 From f0280556a2102159fc37346d0c462e87a9c7bae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 02:02:28 +0200 Subject: [PATCH 21/50] std.c: fix rlim_t width for haiku --- lib/std/c.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 8793ac326bdb9bada0975f019528442447a61fb9..3041e52a87f5301a99c145615c9b515af876bf75 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4477,7 +4477,8 @@ pub const rlim_t = switch (native_os) { .linux => linux.rlim_t, .emscripten => emscripten.rlim_t, .openbsd, .netbsd, .illumos, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => u64, - .haiku, .dragonfly, .freebsd => i64, + .dragonfly, .freebsd => i64, + .haiku => c_ulong, // https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/sys/resource.h#L54 .serenity => usize, else => void, -- 2.54.0 From 20eaa98cd2dc05c39e15779cb989965aea79cc27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:53:02 +0200 Subject: [PATCH 22/50] std.c: fix blksize_t width for dragonfly --- lib/std/c.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index 3041e52a87f5301a99c145615c9b515af876bf75..e2d7226b2c2d97be9becc92e774113fc47f321a5 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -174,6 +174,7 @@ pub const blksize_t = switch (native_os) { .emscripten => emscripten.blksize_t, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L42 .serenity => u64, + .dragonfly => i64, else => i32, }; -- 2.54.0 From 8f7bcf75bb51a038bb3ba2618e2b7bff6773881f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:59:05 +0200 Subject: [PATCH 23/50] std.c: fix Stat on dragonfly to use the correct field as blksize --- lib/std/c.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index e2d7226b2c2d97be9becc92e774113fc47f321a5..3a3cc1f3f23426bffedb4aa25e22c2cb18441e88 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -7895,11 +7895,11 @@ pub const Stat = switch (native_os) { ctim: timespec, size: c_ulong, blocks: i64, - blksize: u32, + _old_blksize: u32, flags: u32, gen: u32, lspare: i32, - qspare1: i64, + blksize: blksize_t, qspare2: i64, pub fn atime(self: @This()) timespec { return self.atim; -- 2.54.0 From 18afee16c9764a6a0e528c30893deab39e5bb14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:53:51 +0200 Subject: [PATCH 24/50] std.c: fix clockid_t width for dragonfly --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 3a3cc1f3f23426bffedb4aa25e22c2cb18441e88..570d798e4ddf38232bf4b65bc01d13d7e6e896d7 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -319,7 +319,7 @@ pub const clockid_t = switch (native_os) { THREAD_CPUTIME_ID = 0x20000000, PROCESS_CPUTIME_ID = 0x40000000, }, - .dragonfly => enum(u32) { + .dragonfly => enum(c_ulong) { REALTIME = 0, VIRTUAL = 1, PROF = 2, -- 2.54.0 From a835e25e606ba80c8a9a6fe75e647cf532ee1bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 20:56:26 +0200 Subject: [PATCH 25/50] std.c: define cpu_set_t for dragonfly --- lib/std/c.zig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index 570d798e4ddf38232bf4b65bc01d13d7e6e896d7..df97daac1cfdf40db41437117ffa7bffecc6324d 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4093,6 +4093,9 @@ pub const clock_t = switch (native_os) { pub const cpu_set_t = switch (native_os) { .linux => linux.cpu_set_t, .emscripten => emscripten.cpu_set_t, + .dragonfly => extern struct { + ary: [4]u64, + }, else => void, }; pub const dl_phdr_info = switch (native_os) { -- 2.54.0 From eb61353d59b104537cbcd4914614eba5cdfa7f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 13 Oct 2026 21:00:21 +0200 Subject: [PATCH 26/50] std.c: define pthread_spinlock_t for dragonfly --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index df97daac1cfdf40db41437117ffa7bffecc6324d..bfc9d144ce332d3abc8c332aaf4a430ace6fb7a8 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -8013,7 +8013,7 @@ pub const Stat = switch (native_os) { pub const pthread_spinlock_t = switch (native_os) { .openbsd => openbsd.pthread_spinlock_t, - .freebsd => extern struct { + .freebsd, .dragonfly => extern struct { inner: ?*anyopaque = null, }, .netbsd => extern struct { -- 2.54.0 From c33e6e09520327d7042ff512329a654736134e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 02:56:36 +0200 Subject: [PATCH 27/50] std.c: fix pthread_attr_t layout for dragonfly --- lib/std/c.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index bfc9d144ce332d3abc8c332aaf4a430ace6fb7a8..f1176e48742daa66d2459052f108fe1dc135e6c1 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -8196,7 +8196,7 @@ pub const pthread_rwlock_t = switch (native_os) { }; pub const pthread_attr_t = switch (native_os) { - .linux, .emscripten, .dragonfly => extern struct { + .linux, .emscripten => extern struct { __size: [56]u8, __align: c_long, }, @@ -8205,7 +8205,7 @@ pub const pthread_attr_t = switch (native_os) { __opaque: [56]u8, }, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L75 - .freebsd, .haiku, .openbsd, .serenity => extern struct { + .dragonfly, .freebsd, .haiku, .openbsd, .serenity => extern struct { inner: ?*anyopaque = null, }, .illumos => extern struct { -- 2.54.0 From dc2ec81a658b2d9c0650ea0c5ed28f75b999cc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 02:57:30 +0200 Subject: [PATCH 28/50] std.c: define pthread_key_t for dragonfly --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index f1176e48742daa66d2459052f108fe1dc135e6c1..11810f4effa1f72ad4ca269d72f28ea3582013a1 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -8223,7 +8223,7 @@ pub const pthread_key_t = switch (native_os) { .linux, .emscripten => c_uint, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => c_ulong, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L65 - .openbsd, .haiku, .illumos, .serenity => c_int, + .dragonfly, .openbsd, .haiku, .illumos, .serenity => c_int, else => void, }; -- 2.54.0 From 13b08eed368bc46638a4522952505128de23355c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 02:58:10 +0200 Subject: [PATCH 29/50] std.c: define pthread_cancelstate for dragonfly --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 11810f4effa1f72ad4ca269d72f28ea3582013a1..29d7f39ddd4cea701dc38f24d879027bdc2230a0 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11091,7 +11091,7 @@ pub const pthread_cancelstate = switch (native_os) { ENABLE = 1, DISABLE = 0, }, - .haiku => enum(c_int) { + .dragonfly, .haiku => enum(c_int) { ENABLE = 0, DISABLE = 1, }, -- 2.54.0 From a49bf81352aed0c7b090ee1c5f0a5144b7bbc540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 03:00:10 +0200 Subject: [PATCH 30/50] std.c: fix getnameinfo() signature for dragonfly --- lib/std/c.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 29d7f39ddd4cea701dc38f24d879027bdc2230a0..43fcc1bcd07b4103777e92834f5696d624af9b86 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11228,9 +11228,9 @@ pub extern "c" fn getnameinfo( noalias addr: *const sockaddr, addrlen: socklen_t, noalias host: ?[*]u8, - hostlen: socklen_t, + hostlen: if (native_os == .dragonfly) usize else socklen_t, noalias serv: ?[*]u8, - servlen: socklen_t, + servlen: if (native_os == .dragonfly) usize else socklen_t, flags: NI, ) EAI; -- 2.54.0 From 4769dc5473a1e3e5b93e219b145d0072dce9886e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 03:03:11 +0200 Subject: [PATCH 31/50] std.c: fix getdirentries() signature for dragonfly --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 43fcc1bcd07b4103777e92834f5696d624af9b86..baac4fc4c031c5626bbc220b10667d580c26c700 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11874,7 +11874,7 @@ const private = struct { extern "c" fn fork() c_int; extern "c" fn fstat(fd: fd_t, buf: *Stat) c_int; extern "c" fn fstatat(dirfd: fd_t, path: [*:0]const u8, buf: *Stat, flag: u32) c_int; - extern "c" fn getdirentries(fd: fd_t, buf_ptr: [*]u8, nbytes: usize, basep: *i64) isize; + extern "c" fn getdirentries(fd: fd_t, buf_ptr: [*]u8, nbytes: usize, basep: *i64) if (native_os == .dragonfly) c_int else isize; extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) switch (native_os) { else => c_int, .freebsd => isize, -- 2.54.0 From 89f7bc1a48c08f14d2d903e1bcc5cf8592eb0a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 03:04:35 +0200 Subject: [PATCH 32/50] std.c: fix ioctl() signature for dragonfly --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index baac4fc4c031c5626bbc220b10667d580c26c700..99654f688c00d98871818cbe1039b80420bbb4c4 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11882,7 +11882,7 @@ const private = struct { }; extern "c" fn getrusage(who: c_int, usage: *rusage) c_int; extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int; - extern "c" fn ioctl(fd: fd_t, request: c_int, ...) c_int; + extern "c" fn ioctl(fd: fd_t, request: if (native_os == .dragonfly) c_ulong else c_int, ...) c_int; extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int; extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque; extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int; -- 2.54.0 From 6e89d882b1a9ea8a28188bae864ed1e162d60de9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:41:59 +0200 Subject: [PATCH 33/50] std.c: define cpu_set_t for freebsd --- lib/std/c.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index 99654f688c00d98871818cbe1039b80420bbb4c4..26508fe05853149056a55af129e575f7fe235d31 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4096,6 +4096,7 @@ pub const cpu_set_t = switch (native_os) { .dragonfly => extern struct { ary: [4]u64, }, + .freebsd => [1024 / @bitSizeOf(c_ulong)]c_ulong, else => void, }; pub const dl_phdr_info = switch (native_os) { -- 2.54.0 From 0c0fe6765c84ed931831b07096609b1d68f5bf5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:42:49 +0200 Subject: [PATCH 34/50] std.c: fix mmsghdr layout for freebsd --- lib/std/c.zig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index 26508fe05853149056a55af129e575f7fe235d31..5a8d055b889ec6ba0f531404d8aeb5d69e06ef96 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4332,6 +4332,10 @@ const posix_msghdr_const = extern struct { }; pub const mmsghdr = switch (native_os) { + .freebsd => extern struct { + hdr: msghdr, + len: isize, + }, .linux => linux.mmsghdr, else => extern struct { hdr: msghdr, -- 2.54.0 From 2bc91efe67d39359051aaf81660d1826f73ba23c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:44:00 +0200 Subject: [PATCH 35/50] std.c: fix PF.INET6 compiler error for freebsd --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 5a8d055b889ec6ba0f531404d8aeb5d69e06ef96..9b4568c2587cc2413fb96b4281229f4a3acf4c09 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -5758,7 +5758,7 @@ pub const PF = if (builtin.abi.isAndroid()) struct { pub const PIP = AF.pseudo_PIP; pub const ISDN = AF.ISDN; pub const KEY = AF.pseudo_KEY; - pub const INET6 = AF.pseudo_INET6; + pub const INET6 = AF.INET6; pub const NATM = AF.NATM; pub const ATM = AF.ATM; pub const NETGRAPH = AF.NETGRAPH; -- 2.54.0 From 0d368bceabb59127032ff1e633d1c330aa57ae16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:45:51 +0200 Subject: [PATCH 36/50] std.c: define pthread_key_t for freebsd --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 9b4568c2587cc2413fb96b4281229f4a3acf4c09..91daebcf0915f75b56433da8d433b1255c1d9193 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -8228,7 +8228,7 @@ pub const pthread_key_t = switch (native_os) { .linux, .emscripten => c_uint, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => c_ulong, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L65 - .dragonfly, .openbsd, .haiku, .illumos, .serenity => c_int, + .dragonfly, .freebsd, .openbsd, .haiku, .illumos, .serenity => c_int, else => void, }; -- 2.54.0 From 5fdde72c0781838ba8c28bda1938648ed8131f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:49:39 +0200 Subject: [PATCH 37/50] std.c: define pthread_cancelstate for freebsd --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 91daebcf0915f75b56433da8d433b1255c1d9193..66c267cf5c9cd8dc28a8ffb8d258e4883d4e9e6f 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11096,7 +11096,7 @@ pub const pthread_cancelstate = switch (native_os) { ENABLE = 1, DISABLE = 0, }, - .dragonfly, .haiku => enum(c_int) { + .dragonfly, .freebsd, .haiku => enum(c_int) { ENABLE = 0, DISABLE = 1, }, -- 2.54.0 From 0935f72e78915510e9a27e9f64eb2ddd2079134c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:56:00 +0200 Subject: [PATCH 38/50] std.c: fix sendmmsg() signature for freebsd --- lib/std/c.zig | 6 +++++- lib/std/c/freebsd.zig | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 66c267cf5c9cd8dc28a8ffb8d258e4883d4e9e6f..bda3c688146f7684a9fbe366bdc08ce81122a663 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11034,7 +11034,10 @@ pub extern "c" fn sendto( addrlen: socklen_t, ) isize; pub extern "c" fn sendmsg(sockfd: fd_t, msg: *const msghdr_const, flags: u32) isize; -pub extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int; +pub const sendmmsg = switch (native_os) { + .freebsd => freebsd.sendmmsg, + else => private.sendmmsg, +}; pub extern "c" fn recv( sockfd: fd_t, @@ -11897,6 +11900,7 @@ const private = struct { extern "c" fn recvmsg(sockfd: fd_t, msg: *msghdr, flags: u32) isize; extern "c" fn sched_yield() c_int; extern "c" fn sendfile(out_fd: fd_t, in_fd: fd_t, offset: ?*off_t, count: usize) isize; + extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int; extern "c" fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int; extern "c" fn sigdelset(set: ?*sigset_t, signo: SIG) c_int; extern "c" fn sigaddset(set: ?*sigset_t, signo: SIG) c_int; diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index adea1bdadfddd08bdfe9cac4b077c7b4c12a5761..695670f6aaf198e5433b91538732ef9486a01c9b 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -21,6 +21,7 @@ const timespec = std.c.timespec; const uid_t = std.c.uid_t; const sf_hdtr = std.c.sf_hdtr; const clockid_t = std.c.clockid_t; +const mmsghdr = std.c.mmsghdr; comptime { assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS. @@ -41,6 +42,8 @@ pub extern "c" fn sendfile( flags: u32, ) c_int; +pub extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, vlen: usize, flags: u32) isize; + pub const UMTX_OP = enum(c_int) { LOCK = 0, UNLOCK = 1, -- 2.54.0 From c299dbf9c355ed9a47febd80811520301aaa8018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:59:25 +0200 Subject: [PATCH 39/50] std.c: fix getnameinfo() signature for freebsd --- lib/std/c.zig | 23 ++++++++++++++--------- lib/std/c/dragonfly.zig | 12 ++++++++++++ lib/std/c/freebsd.zig | 13 +++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index bda3c688146f7684a9fbe366bdc08ce81122a663..ffb3a9d783571b7ac93324e2f68c40c006592c9d 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11232,15 +11232,11 @@ pub extern "c" fn getaddrinfo( pub extern "c" fn freeaddrinfo(res: *addrinfo) void; -pub extern "c" fn getnameinfo( - noalias addr: *const sockaddr, - addrlen: socklen_t, - noalias host: ?[*]u8, - hostlen: if (native_os == .dragonfly) usize else socklen_t, - noalias serv: ?[*]u8, - servlen: if (native_os == .dragonfly) usize else socklen_t, - flags: NI, -) EAI; +pub const getnameinfo = switch (native_os) { + .dragonfly => dragonfly.getnameinfo, + .freebsd => freebsd.getnameinfo, + else => private.getnameinfo, +}; pub extern "c" fn gai_strerror(errcode: EAI) [*:0]const u8; @@ -11899,6 +11895,15 @@ const private = struct { extern "c" fn realpath(noalias file_name: [*:0]const u8, noalias resolved_name: [*]u8) ?[*:0]u8; extern "c" fn recvmsg(sockfd: fd_t, msg: *msghdr, flags: u32) isize; extern "c" fn sched_yield() c_int; + extern "c" fn getnameinfo( + noalias addr: *const sockaddr, + addrlen: socklen_t, + noalias host: ?[*]u8, + hostlen: socklen_t, + noalias serv: ?[*]u8, + servlen: socklen_t, + flags: NI, + ) EAI; extern "c" fn sendfile(out_fd: fd_t, in_fd: fd_t, offset: ?*off_t, count: usize) isize; extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int; extern "c" fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int; diff --git a/lib/std/c/dragonfly.zig b/lib/std/c/dragonfly.zig index 75ace2565a5439267930563e8b647df025091c28..8a4aca1b8a08b28fcb29132be3f399f28b63882b 100644 --- a/lib/std/c/dragonfly.zig +++ b/lib/std/c/dragonfly.zig @@ -5,13 +5,25 @@ const caddr_t = std.c.caddr_t; const gid_t = std.c.gid_t; const iovec = std.c.iovec; const pid_t = std.c.pid_t; +const sockaddr = std.c.sockaddr; const socklen_t = std.c.socklen_t; const uid_t = std.c.uid_t; +const NI = std.c.NI; +const EAI = std.c.EAI; pub extern "c" fn lwp_gettid() c_int; pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int; pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int; pub extern "c" fn umtx_wakeup(ptr: *const volatile c_int, count: c_int) c_int; +pub extern "c" fn getnameinfo( + noalias addr: *const sockaddr, + addrlen: socklen_t, + noalias host: ?[*]u8, + hostlen: usize, + noalias serv: ?[*]u8, + servlen: usize, + flags: NI, +) EAI; pub const E = enum(u16) { /// No error occurred. diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index 695670f6aaf198e5433b91538732ef9486a01c9b..b08bd0888a17f1c9712fffaa21e7c3d2cc89dad5 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -16,12 +16,15 @@ const nlink_t = std.c.nlink_t; const off_t = std.c.off_t; const pid_t = std.c.pid_t; const sockaddr = std.c.sockaddr; +const socklen_t = std.c.socklen_t; const time_t = std.c.time_t; const timespec = std.c.timespec; const uid_t = std.c.uid_t; const sf_hdtr = std.c.sf_hdtr; const clockid_t = std.c.clockid_t; const mmsghdr = std.c.mmsghdr; +const NI = std.c.NI; +const EAI = std.c.EAI; comptime { assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS. @@ -44,6 +47,16 @@ pub extern "c" fn sendfile( pub extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, vlen: usize, flags: u32) isize; +pub extern "c" fn getnameinfo( + noalias addr: *const sockaddr, + addrlen: socklen_t, + noalias host: ?[*]u8, + hostlen: usize, + noalias serv: ?[*]u8, + servlen: usize, + flags: NI, +) EAI; + pub const UMTX_OP = enum(c_int) { LOCK = 0, UNLOCK = 1, -- 2.54.0 From 82c8b65d0e08f8bc8e1d7f19638d65a79e5dd818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:01:26 +0200 Subject: [PATCH 40/50] std.c: fix siginfo_t.data.proc layout for openbsd --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index ffb3a9d783571b7ac93324e2f68c40c006592c9d..498775558b4a52aa751c40f8720df1c1f57bff31 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4874,9 +4874,9 @@ pub const siginfo_t = switch (native_os) { data: extern union { proc: extern struct { pid: pid_t, + uid: uid_t, pdata: extern union { kill: extern struct { - uid: uid_t, value: sigval, }, cld: extern struct { -- 2.54.0 From b27dddefaf302021c272798288f176feaf26f469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:05:58 +0200 Subject: [PATCH 41/50] std.c: define utsname for openbsd --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 498775558b4a52aa751c40f8720df1c1f57bff31..14d11576ec6e9eea1415b629a998f9bb27d0b25b 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -7242,7 +7242,7 @@ pub const utsname = switch (native_os) { machine: [256:0]u8, domainname: [256:0]u8, }, - .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { + .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { sysname: [255:0]u8, nodename: [255:0]u8, release: [255:0]u8, -- 2.54.0 From d305d55e38926d2420b4dad9caf4345f9afbe52c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:07:57 +0200 Subject: [PATCH 42/50] std.c: fix speed_t width for openbsd --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 14d11576ec6e9eea1415b629a998f9bb27d0b25b..87db7f370f5ed4302a8245adf7dbc474d4a68d44 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -9600,7 +9600,7 @@ pub const tc_lflag_t = switch (native_os) { pub const speed_t = switch (native_os) { .linux => linux.speed_t, - .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .openbsd => enum(u64) { + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .openbsd => enum(if (native_os == .openbsd) c_uint else u64) { B0 = 0, B50 = 50, B75 = 75, -- 2.54.0 From b272a9197a19bd81b2743ca222a2ed386c747e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:08:41 +0200 Subject: [PATCH 43/50] std.c: define pthread_cancelstate for openbsd --- lib/std/c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 87db7f370f5ed4302a8245adf7dbc474d4a68d44..53117959cc26bba62e285b4eec01ca26021bba5d 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11099,7 +11099,7 @@ pub const pthread_cancelstate = switch (native_os) { ENABLE = 1, DISABLE = 0, }, - .dragonfly, .freebsd, .haiku => enum(c_int) { + .dragonfly, .freebsd, .haiku, .openbsd => enum(c_int) { ENABLE = 0, DISABLE = 1, }, -- 2.54.0 From 775618425d4cc50830894627dcc4615a6cefe3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:10:17 +0200 Subject: [PATCH 44/50] std.c: fix LC constants for openbsd --- lib/std/c.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index 53117959cc26bba62e285b4eec01ca26021bba5d..235ec18da1a1cddbd09eaf5acfae736aa28b0635 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11327,6 +11327,16 @@ pub extern "c" fn setsid() pid_t; /// - https://sourceware.org/git/?p=glibc.git;a=blob;f=locale/bits/locale.h;h=0fcbb66114be5fef0577dc9047256eb508c45919;hb=c90cfce849d010474e8cccf3e5bff49a2c8b141f#l26 pub const LC = switch (native_os) { // https://github.com/SerenityOS/serenity/blob/fe4f3879551f2fdd8a24de06b88f4450e2f3b93d/Userland/Libraries/LibC/locale.h#L14-L29 + .serenity => enum(c_int) { + ALL = 0, + COLLATE = 1, + CTYPE = 2, + MONETARY = 3, + NUMERIC = 4, + TIME = 5, + MESSAGES = 6, + _, + }, .serenity => enum(c_int) { ALL = 0, NUMERIC = 1, -- 2.54.0 From da1b245719e37fbf1db7279530dedec5f2d44647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:12:48 +0200 Subject: [PATCH 45/50] std.c: fix getnameinfo() signature for openbsd --- lib/std/c.zig | 1 + lib/std/c/openbsd.zig | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index 235ec18da1a1cddbd09eaf5acfae736aa28b0635..fc64f8b282310bb3fa767e2f790c5525fd84569c 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11235,6 +11235,7 @@ pub extern "c" fn freeaddrinfo(res: *addrinfo) void; pub const getnameinfo = switch (native_os) { .dragonfly => dragonfly.getnameinfo, .freebsd => freebsd.getnameinfo, + .openbsd => openbsd.getnameinfo, else => private.getnameinfo, }; diff --git a/lib/std/c/openbsd.zig b/lib/std/c/openbsd.zig index e6d277af9f4a613743d5d6fd1e29a739a7be6d93..5d9b863fdb7b50f173fc66ef3b85228beefb286b 100644 --- a/lib/std/c/openbsd.zig +++ b/lib/std/c/openbsd.zig @@ -9,10 +9,23 @@ const passwd = std.c.passwd; const timespec = std.c.timespec; const uid_t = std.c.uid_t; const pid_t = std.c.pid_t; +const sockaddr = std.c.sockaddr; +const socklen_t = std.c.socklen_t; +const NI = std.c.NI; +const EAI = std.c.EAI; comptime { assert(builtin.os.tag == .openbsd); // Prevent access of std.c symbols on wrong OS. } +pub extern "c" fn getnameinfo( + noalias addr: *const sockaddr, + addrlen: socklen_t, + noalias host: ?[*]u8, + hostlen: usize, + noalias serv: ?[*]u8, + servlen: usize, + flags: NI, +) EAI; pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int; -- 2.54.0 From 3b8f1e655357523f50752296093e56da53ca287f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:17:05 +0200 Subject: [PATCH 46/50] std.c: fix ioctl() signature for freebsd and openbsd --- lib/std/c.zig | 5 ++++- lib/std/c/dragonfly.zig | 3 +++ lib/std/c/freebsd.zig | 2 ++ lib/std/c/openbsd.zig | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index fc64f8b282310bb3fa767e2f790c5525fd84569c..0367ac6011577d51b92077a64a782158dbea4f63 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11430,6 +11430,9 @@ pub const clock_nanosleep = switch (native_os) { }; pub const ioctl = switch (native_os) { + .dragonfly => dragonfly.ioctl, + .freebsd => freebsd.ioctl, + .openbsd => openbsd.ioctl, .windows => {}, else => private.ioctl, }; @@ -11897,7 +11900,7 @@ const private = struct { }; extern "c" fn getrusage(who: c_int, usage: *rusage) c_int; extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int; - extern "c" fn ioctl(fd: fd_t, request: if (native_os == .dragonfly) c_ulong else c_int, ...) c_int; + extern "c" fn ioctl(fd: fd_t, request: c_int, ...) c_int; extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int; extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque; extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int; diff --git a/lib/std/c/dragonfly.zig b/lib/std/c/dragonfly.zig index 8a4aca1b8a08b28fcb29132be3f399f28b63882b..43ee9dc0ae352df4d8899c9e699463267dd575ec 100644 --- a/lib/std/c/dragonfly.zig +++ b/lib/std/c/dragonfly.zig @@ -8,9 +8,12 @@ const pid_t = std.c.pid_t; const sockaddr = std.c.sockaddr; const socklen_t = std.c.socklen_t; const uid_t = std.c.uid_t; +const fd_t = std.c.fd_t; const NI = std.c.NI; const EAI = std.c.EAI; +pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int; + pub extern "c" fn lwp_gettid() c_int; pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int; pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int; diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index b08bd0888a17f1c9712fffaa21e7c3d2cc89dad5..26a234d6631602374b68fc554dc8132f2cd67cfe 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -30,6 +30,8 @@ comptime { assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS. } +pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int; + pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int; pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file; diff --git a/lib/std/c/openbsd.zig b/lib/std/c/openbsd.zig index 5d9b863fdb7b50f173fc66ef3b85228beefb286b..3dfbd2799a567711fbd7d0d9a2190be15346d499 100644 --- a/lib/std/c/openbsd.zig +++ b/lib/std/c/openbsd.zig @@ -9,6 +9,7 @@ const passwd = std.c.passwd; const timespec = std.c.timespec; const uid_t = std.c.uid_t; const pid_t = std.c.pid_t; +const fd_t = std.c.fd_t; const sockaddr = std.c.sockaddr; const socklen_t = std.c.socklen_t; const NI = std.c.NI; @@ -17,6 +18,9 @@ const EAI = std.c.EAI; comptime { assert(builtin.os.tag == .openbsd); // Prevent access of std.c symbols on wrong OS. } + +pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int; + pub extern "c" fn getnameinfo( noalias addr: *const sockaddr, addrlen: socklen_t, -- 2.54.0 From 3ffcdb9c3d0e84b3c9d2fa115f3db5d6c988c66c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:21:21 +0200 Subject: [PATCH 47/50] std.c: fix MINSIGSTKSZ and SIGSTKSZ constants for openbsd --- lib/std/c.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 0367ac6011577d51b92077a64a782158dbea4f63..3bb4378a5493308e1b68498c77c49d48429ccd01 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -9812,7 +9812,7 @@ pub const MINSIGSTKSZ = switch (native_os) { }, .illumos => 2048, .haiku, .netbsd => 8192, - .openbsd => 1 << openbsd.MAX_PAGE_SHIFT, + .openbsd => 3 << openbsd.MAX_PAGE_SHIFT, // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L58 .serenity => 4096, else => {}, @@ -9822,7 +9822,7 @@ pub const SIGSTKSZ = switch (native_os) { .netbsd, .freebsd => MINSIGSTKSZ + 32768, .illumos => 8192, .haiku => 16384, - .openbsd => MINSIGSTKSZ + (1 << openbsd.MAX_PAGE_SHIFT) * 4, + .openbsd => MINSIGSTKSZ + (1 << openbsd.MAX_PAGE_SHIFT) * (if (openbsd.MAX_PAGE_SHIFT < 14) 4 else 2), // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L59 .serenity => 32768, else => {}, -- 2.54.0 From dfe7f83956f6fd3c858e90044508bc43bc4db638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:22:14 +0200 Subject: [PATCH 48/50] std.c.openbsd: fix PTHREAD_STACK_MIN constant --- lib/std/c/openbsd.zig | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/std/c/openbsd.zig b/lib/std/c/openbsd.zig index 3dfbd2799a567711fbd7d0d9a2190be15346d499..fded9262aa84223647689b351f71df6cec2c3e66 100644 --- a/lib/std/c/openbsd.zig +++ b/lib/std/c/openbsd.zig @@ -290,11 +290,7 @@ pub const MAX_PAGE_SHIFT = switch (builtin.cpu.arch) { .sparc64 => 13, }; -pub const PTHREAD_STACK_MIN = switch (builtin.cpu.arch) { - .sparc64 => 1 << 13, - .mips64 => 1 << 14, - else => 1 << 12, -}; +pub const PTHREAD_STACK_MIN = 1 << MAX_PAGE_SHIFT; // https://github.com/openbsd/src/blob/718a31b40d39fc6064de6355eb144e74633133fc/sys/netinet/in.h#L283 pub const IP = struct { -- 2.54.0 From 12e5a6909f82694d6686d7bf5fd5bf9c7f369e04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:25:56 +0200 Subject: [PATCH 49/50] std.c.openbsd: define MAX_PAGE_SHIFT for all relevant architectures --- lib/std/c/openbsd.zig | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/std/c/openbsd.zig b/lib/std/c/openbsd.zig index fded9262aa84223647689b351f71df6cec2c3e66..ea5bbdc62972d3c0b3cc81514ae4e79bb42c7e10 100644 --- a/lib/std/c/openbsd.zig +++ b/lib/std/c/openbsd.zig @@ -285,9 +285,23 @@ pub const E = enum(u16) { _, }; -pub const MAX_PAGE_SHIFT = switch (builtin.cpu.arch) { - .x86 => 12, - .sparc64 => 13, +pub const MAX_PAGE_SHIFT = switch (builtin.target.cpu.arch) { + .alpha, + .sparc64, + => 13, + .arm, + .aarch64, + .hppa, + .m88k, + .powerpc, + .powerpc64, + .riscv64, + .sh, + .x86, + .x86_64, + => 12, + .mips64, + => 14, }; pub const PTHREAD_STACK_MIN = 1 << MAX_PAGE_SHIFT; -- 2.54.0 From cf7ffbf82d9322890862b164885bd56be9104dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 22 Oct 2026 05:40:13 +0200 Subject: [PATCH 50/50] std.Io: make Operation.DeviceIoControl.code a usize on some BSDs --- lib/std/Io.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/std/Io.zig b/lib/std/Io.zig index 7d3602b1c42dbbaded08baa5d9fe77f5f283e841..5be4f9f438a0068b9708781b6466c7586e5faf26 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -333,7 +333,10 @@ pub const Operation = union(enum) { else => struct { file: File, /// Device-dependent operation code. - code: u32, + code: switch (builtin.target.os.tag) { + .dragonfly, .freebsd, .openbsd => usize, + else => u32, + }, arg: ?*anyopaque, /// Device and operation dependent result. Negative values are -- 2.54.0