From 7f012eef0b7bd4dbccf796c2889495150f996fba Mon Sep 17 00:00:00 2001 From: Michael Dusan Date: Mon, 2 Jan 2023 19:18:33 -0500 Subject: [PATCH] freebsd: memfd_create: < 13.0 version check - add conditional compile error - add conditional skip test --- lib/std/os.zig | 2 ++ lib/std/os/test.zig | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/std/os.zig b/lib/std/os.zig index 2cc00d7a52..0394e50389 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -6564,6 +6564,8 @@ pub fn memfd_createZ(name: [*:0]const u8, flags: u32) MemFdCreateError!fd_t { } }, .freebsd => { + if (comptime builtin.os.version_range.semver.max.order(.{ .major = 13, .minor = 0 }) == .lt) + @compileError("memfd_create is unavailable on FreeBSD < 13.0"); const rc = system.memfd_create(name, flags); switch (errno(rc)) { .SUCCESS => return rc, diff --git a/lib/std/os/test.zig b/lib/std/os/test.zig index 483cec29d1..ae4de77b76 100644 --- a/lib/std/os/test.zig +++ b/lib/std/os/test.zig @@ -515,7 +515,14 @@ test "argsAlloc" { test "memfd_create" { // memfd_create is only supported by linux and freebsd. - if (native_os != .linux and native_os != .freebsd) return error.SkipZigTest; + switch (native_os) { + .linux => {}, + .freebsd => { + if (comptime builtin.os.version_range.semver.max.order(.{ .major = 13, .minor = 0 }) == .lt) + return error.SkipZigTest; + }, + else => return error.SkipZigTest, + } const fd = std.os.memfd_create("test", 0) catch |err| switch (err) { // Related: https://github.com/ziglang/zig/issues/4019