From dba1bf935390ddb0184a4dc72245454de6c06fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sun, 26 Oct 2025 05:45:38 +0100 Subject: [PATCH] remove all Oracle Solaris support There is no straightforward way for the Zig team to access the Solaris system headers; to do this, one has to create an Oracle account, accept their EULA to download the installer ISO, and finally install it on a machine or VM. We do not have to jump through hoops like this for any other OS that we support, and no one on the team has expressed willingness to do it. As a result, we cannot audit any Solaris contributions to std.c or other similarly sensitive parts of the standard library. The best we would be able to do is assume that Solaris and illumos are 100% compatible with no way to verify that assumption. But at that point, the solaris and illumos OS tags would be functionally identical anyway. For Solaris especially, any contributions that involve APIs introduced after the OS was made closed-source would also be inherently more risky than equivalent contributions for other proprietary OSs due to the case of Google LLC v. Oracle America, Inc., wherein Oracle clearly demonstrated its willingness to pursue legal action against entities that merely copy API declarations. Finally, Oracle laid off most of the Solaris team in 2017; the OS has been in maintenance mode since, presumably to be retired completely sometime in the 2030s. For these reasons, this commit removes all Oracle Solaris support. Anyone who still wishes to use Zig on Solaris can try their luck by simply using illumos instead of solaris in target triples - chances are it'll work. But there will be no effort from the Zig team to support this use case; we recommend that people move to illumos instead. --- CMakeLists.txt | 9 +- build.zig | 2 +- lib/compiler/aro/aro/Compilation.zig | 8 +- lib/compiler/aro/aro/Toolchain.zig | 8 +- lib/compiler/aro/aro/target.zig | 13 +- lib/std/Progress.zig | 2 +- lib/std/Target.zig | 65 ++---- lib/std/Thread.zig | 10 +- lib/std/c.zig | 269 ++++++++++++------------- lib/std/c/{solaris.zig => illumos.zig} | 2 +- lib/std/crypto/Certificate/Bundle.zig | 2 +- lib/std/debug.zig | 2 - lib/std/debug/SelfInfo/Elf.zig | 3 - lib/std/debug/cpu_context.zig | 35 ---- lib/std/dynamic_library.zig | 4 +- lib/std/fs.zig | 6 +- lib/std/fs/Dir.zig | 11 +- lib/std/fs/File.zig | 2 +- lib/std/fs/get_app_data_dir.zig | 2 +- lib/std/heap.zig | 6 +- lib/std/os.zig | 3 +- lib/std/posix.zig | 3 +- lib/std/posix/test.zig | 8 +- lib/std/process.zig | 1 - lib/std/start.zig | 2 +- lib/std/zig/LibCInstallation.zig | 4 +- lib/std/zig/system.zig | 8 +- lib/std/zig/system/NativePaths.zig | 2 +- src/codegen/llvm.zig | 2 +- src/link/Elf.zig | 2 +- src/link/Elf2.zig | 2 +- src/target.zig | 9 +- test/llvm_targets.zig | 2 - test/src/ErrorTrace.zig | 2 +- test/src/StackTrace.zig | 2 +- test/standalone/posix/relpaths.zig | 2 +- test/tests.zig | 2 +- 37 files changed, 209 insertions(+), 308 deletions(-) rename lib/std/c/{solaris.zig => illumos.zig} (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 690e2e35b1..6efe4e7490 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -738,17 +738,12 @@ string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" ZIG_HOST_TARGET_OS) if(ZIG_HOST_TARGET_OS STREQUAL "darwin") set(ZIG_HOST_TARGET_OS "macos") elseif(ZIG_HOST_TARGET_OS STREQUAL "sunos") - check_symbol_exists(__illumos__ "" ZIG_HOST_TARGET_HAS_ILLUMOS_MACRO) - if (ZIG_HOST_TARGET_HAS_ILLUMOS_MACRO) - set(ZIG_HOST_TARGET_OS "illumos") - else() - set(ZIG_HOST_TARGET_OS "solaris") - endif() + set(ZIG_HOST_TARGET_OS "illumos") endif() string(TOLOWER "${CMAKE_HOST_SYSTEM_PROCESSOR}" ZIG_HOST_TARGET_ARCH) if(ZIG_HOST_TARGET_ARCH MATCHES "^i[3-9]86$") - if (ZIG_HOST_TARGET_OS MATCHES "(solaris|illumos)") + if (ZIG_HOST_TARGET_OS STREQUAL "illumos") set(ZIG_HOST_TARGET_ARCH "x86_64") else() set(ZIG_HOST_TARGET_ARCH "x86") diff --git a/build.zig b/build.zig index c4a1d2f3ad..40b74b94b4 100644 --- a/build.zig +++ b/build.zig @@ -818,7 +818,7 @@ fn addCmakeCfgOptionsToExe( try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes); if (static) try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes); }, - .solaris, .illumos => { + .illumos => { try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes); try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes); }, diff --git a/lib/compiler/aro/aro/Compilation.zig b/lib/compiler/aro/aro/Compilation.zig index a31ff7ef70..fea2ba2a62 100644 --- a/lib/compiler/aro/aro/Compilation.zig +++ b/lib/compiler/aro/aro/Compilation.zig @@ -337,7 +337,7 @@ fn generateSystemDefines(comp: *Compilation, w: *std.Io.Writer) !void { .netbsd => try define(w, "__NetBSD__"), .openbsd => try define(w, "__OpenBSD__"), .dragonfly => try define(w, "__DragonFly__"), - .solaris => try defineStd(w, "sun", is_gnu), + .illumos => try defineStd(w, "sun", is_gnu), .macos, .tvos, .ios, @@ -361,7 +361,7 @@ fn generateSystemDefines(comp: *Compilation, w: *std.Io.Writer) !void { .linux, .haiku, .hurd, - .solaris, + .illumos, .aix, .emscripten, .ps4, @@ -618,7 +618,7 @@ fn generateSystemDefines(comp: *Compilation, w: *std.Io.Writer) !void { try defineStd(w, "sparc", is_gnu); try define(w, "__sparc_v9__"); try define(w, "__arch64__"); - if (comp.target.os.tag != .solaris) { + if (comp.target.os.tag != .illumos) { try define(w, "__sparc64__"); try define(w, "__sparc_v9__"); try define(w, "__sparcv9__"); @@ -626,7 +626,7 @@ fn generateSystemDefines(comp: *Compilation, w: *std.Io.Writer) !void { }, .sparc => { try defineStd(w, "sparc", is_gnu); - if (comp.target.os.tag == .solaris) { + if (comp.target.os.tag == .illumos) { try define(w, "__sparcv8"); } }, diff --git a/lib/compiler/aro/aro/Toolchain.zig b/lib/compiler/aro/aro/Toolchain.zig index 75c04d7215..23e8d929b9 100644 --- a/lib/compiler/aro/aro/Toolchain.zig +++ b/lib/compiler/aro/aro/Toolchain.zig @@ -391,8 +391,8 @@ fn getUnwindLibKind(tc: *const Toolchain) !UnwindLibKind { } } -fn getAsNeededOption(is_solaris: bool, needed: bool) []const u8 { - if (is_solaris) { +fn getAsNeededOption(is_illumos: bool, needed: bool) []const u8 { + if (is_illumos) { return if (needed) "-zignore" else "-zrecord"; } else { return if (needed) "--as-needed" else "--no-as-needed"; @@ -412,7 +412,7 @@ fn addUnwindLibrary(tc: *const Toolchain, argv: *std.ArrayList([]const u8)) !voi try argv.ensureUnusedCapacity(tc.driver.comp.gpa, 3); if (as_needed) { - argv.appendAssumeCapacity(getAsNeededOption(target.os.tag == .solaris, true)); + argv.appendAssumeCapacity(getAsNeededOption(target.os.tag == .illumos, true)); } switch (unw) { .none => return, @@ -435,7 +435,7 @@ fn addUnwindLibrary(tc: *const Toolchain, argv: *std.ArrayList([]const u8)) !voi } if (as_needed) { - argv.appendAssumeCapacity(getAsNeededOption(target.os.tag == .solaris, false)); + argv.appendAssumeCapacity(getAsNeededOption(target.os.tag == .illumos, false)); } } diff --git a/lib/compiler/aro/aro/target.zig b/lib/compiler/aro/aro/target.zig index 0c17e816f8..080e99d6df 100644 --- a/lib/compiler/aro/aro/target.zig +++ b/lib/compiler/aro/aro/target.zig @@ -252,7 +252,7 @@ pub fn systemCompiler(target: std.Target) LangOpts.Compiler { target.abi.isAndroid() or target.os.tag.isBSD() or target.os.tag == .fuchsia or - target.os.tag == .solaris or + target.os.tag == .illumos or target.os.tag == .haiku or target.cpu.arch == .hexagon) { @@ -281,7 +281,7 @@ pub fn hasFloat128(target: std.Target) bool { .haiku, .linux, .openbsd, - .solaris, + .illumos, => target.cpu.arch.isX86(), else => false, }; @@ -654,8 +654,7 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 { .ps3 => "lv2", .netbsd => "netbsd", .openbsd => "openbsd", - .solaris => "solaris", - .illumos => "illumos", + .illumos => "solaris", .windows => "windows", .zos => "zos", .haiku => "haiku", @@ -755,7 +754,7 @@ pub fn isPIEDefault(target: std.Target) DefaultPIStatus { .dragonfly, .netbsd, .freebsd, - .solaris, + .illumos, .cuda, .amdhsa, @@ -838,7 +837,7 @@ pub fn isPICdefault(target: std.Target) DefaultPIStatus { .openbsd, .netbsd, .freebsd, - .solaris, + .illumos, .hurd, => { return switch (target.cpu.arch) { @@ -897,7 +896,7 @@ pub fn isPICDefaultForced(target: std.Target) DefaultPIStatus { .openbsd, .netbsd, .freebsd, - .solaris, + .illumos, .cuda, .ps4, .ps5, diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig index 060ba085b6..fb06fca2e9 100644 --- a/lib/std/Progress.zig +++ b/lib/std/Progress.zig @@ -1547,7 +1547,7 @@ fn handleSigWinch(sig: i32, info: *const posix.siginfo_t, ctx_ptr: ?*anyopaque) const have_sigwinch = switch (builtin.os.tag) { .linux, .plan9, - .solaris, + .illumos, .netbsd, .openbsd, .haiku, diff --git a/lib/std/Target.zig b/lib/std/Target.zig index fbb931357d..8bfd029be4 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -27,6 +27,7 @@ pub const Os = struct { aix, haiku, hurd, + illumos, linux, plan9, rtems, @@ -45,9 +46,6 @@ pub const Os = struct { visionos, watchos, - illumos, - solaris, - windows, uefi, @@ -98,10 +96,6 @@ pub const Os = struct { }; } - pub inline fn isSolarish(tag: Tag) bool { - return tag == .solaris or tag == .illumos; - } - pub fn exeFileExt(tag: Tag, arch: Cpu.Arch) [:0]const u8 { return switch (tag) { .windows => ".exe", @@ -163,11 +157,10 @@ pub const Os = struct { .managarm, .haiku, + .illumos, .plan9, .serenity, - .illumos, - .ps3, .ps4, .ps5, @@ -197,8 +190,6 @@ pub const Os = struct { .visionos, .watchos, - .solaris, - .uefi, .@"3ds", @@ -395,11 +386,10 @@ pub const Os = struct { .managarm, .haiku, + .illumos, .plan9, .serenity, - .illumos, - .ps3, .ps4, .ps5, @@ -597,13 +587,6 @@ pub const Os = struct { }, }, - .solaris => .{ - .semver = .{ - .min = .{ .major = 11, .minor = 0, .patch = 0 }, - .max = .{ .major = 11, .minor = 4, .patch = 0 }, - }, - }, - .windows => .{ .windows = .{ .min = .win10, @@ -930,6 +913,7 @@ pub const Abi = enum { .contiki, .fuchsia, .hermit, + .illumos, .managarm, .plan9, .serenity, @@ -937,8 +921,6 @@ pub const Abi = enum { .dragonfly, .driverkit, .macos, - .illumos, - .solaris, .ps3, .ps4, .ps5, @@ -2043,10 +2025,6 @@ pub const Cpu = struct { else => &s390x.cpu.arch8, }, .sparc => &sparc.cpu.v9, // glibc does not work with 'plain' v8. - .sparc64 => switch (os.tag) { - .solaris => &sparc.cpu.ultrasparc3, - else => generic(arch), - }, .x86 => &x86.cpu.pentium4, .x86_64 => switch (os.tag) { .driverkit => &x86.cpu.nehalem, @@ -2175,6 +2153,7 @@ pub inline fn isWasiLibC(target: *const Target) bool { pub fn requiresLibC(target: *const Target) bool { return switch (target.os.tag) { .aix, + .illumos, .driverkit, .macos, .ios, @@ -2184,8 +2163,6 @@ pub fn requiresLibC(target: *const Target) bool { .dragonfly, .openbsd, .haiku, - .solaris, - .illumos, .serenity, => true, @@ -2332,6 +2309,7 @@ pub const DynamicLinker = struct { .fuchsia, .haiku, + .illumos, .serenity, .dragonfly, @@ -2345,9 +2323,6 @@ pub const DynamicLinker = struct { .tvos, .visionos, .watchos, - - .illumos, - .solaris, => .arch_os, .hurd, .linux, @@ -2439,6 +2414,14 @@ pub const DynamicLinker = struct { else => none, }, + .illumos, + => switch (cpu.arch) { + .x86, + .x86_64, + => initFmt("/lib/{s}ld.so.1", .{if (ptrBitWidth_cpu_abi(cpu, .none) == 64) "64/" else ""}), + else => none, + }, + .linux => if (abi.isAndroid()) switch (cpu.arch) { .arm => if (abi == .androideabi) init("/system/bin/linker") else none, @@ -2755,22 +2738,6 @@ pub const DynamicLinker = struct { else => none, }, - .illumos, - => switch (cpu.arch) { - .x86, - .x86_64, - => initFmt("/lib/{s}ld.so.1", .{if (ptrBitWidth_cpu_abi(cpu, .none) == 64) "64/" else ""}), - else => none, - }, - - .solaris, - => switch (cpu.arch) { - .sparc64, - .x86_64, - => initFmt("/lib/{s}ld.so.1", .{if (ptrBitWidth_cpu_abi(cpu, .none) == 64) "64/" else ""}), - else => none, - }, - // Operating systems in this list have been verified as not having a standard // dynamic linker path. .freestanding, @@ -3134,6 +3101,7 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) u16 { .aix, .haiku, .hurd, + .illumos, .linux, .plan9, .rtems, @@ -3145,9 +3113,6 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) u16 { .netbsd, .openbsd, - .illumos, - .solaris, - .wasi, .emscripten, => switch (target.cpu.arch) { diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index dfefeceea0..f587b15f86 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -120,7 +120,7 @@ pub const max_name_len = switch (native_os) { .freebsd => 15, .openbsd => 23, .dragonfly => 1023, - .solaris, .illumos => 31, + .illumos => 31, // https://github.com/SerenityOS/serenity/blob/6b4c300353da49d3508b5442cf61da70bd04d757/Kernel/Tasks/Thread.h#L102 .serenity => 63, else => 0, @@ -211,7 +211,7 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { else => |e| return posix.unexpectedErrno(e), } }, - .netbsd, .solaris, .illumos => if (use_pthreads) { + .netbsd, .illumos => if (use_pthreads) { const err = std.c.pthread_setname_np(self.getHandle(), name_with_terminator.ptr, null); switch (@as(posix.E, @enumFromInt(err))) { .SUCCESS => return, @@ -324,7 +324,7 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co else => |e| return posix.unexpectedErrno(e), } }, - .netbsd, .solaris, .illumos => if (use_pthreads) { + .netbsd, .illumos => if (use_pthreads) { const err = std.c.pthread_getname_np(self.getHandle(), buffer.ptr, max_name_len + 1); switch (@as(posix.E, @enumFromInt(err))) { .SUCCESS => return std.mem.sliceTo(buffer, 0), @@ -739,10 +739,10 @@ const PosixThreadImpl = struct { }; return @as(usize, @intCast(count)); }, - .solaris, .illumos, .serenity => { + .illumos, .serenity => { // The "proper" way to get the cpu count would be to query // /dev/kstat via ioctls, and traverse a linked list for each - // cpu. (solaris, illumos) + // cpu. (illumos) const rc = c.sysconf(@intFromEnum(std.c._SC.NPROCESSORS_ONLN)); return switch (posix.errno(rc)) { .SUCCESS => @as(usize, @intCast(rc)), diff --git a/lib/std/c.zig b/lib/std/c.zig index cc7bd17cb0..30e584c1a1 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -14,7 +14,7 @@ const windows = std.os.windows; const ws2_32 = std.os.windows.ws2_32; const darwin = @import("c/darwin.zig"); const freebsd = @import("c/freebsd.zig"); -const solaris = @import("c/solaris.zig"); +const illumos = @import("c/illumos.zig"); const netbsd = @import("c/netbsd.zig"); const dragonfly = @import("c/dragonfly.zig"); const haiku = @import("c/haiku.zig"); @@ -117,7 +117,7 @@ pub const timespec = switch (native_os) { sec: isize, nsec: isize, }, - .netbsd, .solaris, .illumos => extern struct { + .netbsd, .illumos => extern struct { sec: i64, nsec: isize, }, @@ -132,7 +132,7 @@ pub const dev_t = switch (native_os) { .linux => linux.dev_t, .emscripten => emscripten.dev_t, .wasi => wasi.device_t, - .openbsd, .haiku, .solaris, .illumos, .macos, .ios, .tvos, .watchos, .visionos => i32, + .openbsd, .haiku, .illumos, .macos, .ios, .tvos, .watchos, .visionos => i32, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L43 .netbsd, .freebsd, .serenity => u64, else => void, @@ -141,7 +141,7 @@ pub const dev_t = switch (native_os) { pub const mode_t = switch (native_os) { .linux => linux.mode_t, .emscripten => emscripten.mode_t, - .openbsd, .haiku, .netbsd, .solaris, .illumos, .wasi, .windows => u32, + .openbsd, .haiku, .netbsd, .illumos, .wasi, .windows => u32, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L44 .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .dragonfly, .serenity => u16, else => u0, @@ -153,7 +153,7 @@ pub const nlink_t = switch (native_os) { .wasi => c_ulonglong, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L45 .freebsd, .serenity => u64, - .openbsd, .netbsd, .solaris, .illumos => u32, + .openbsd, .netbsd, .illumos => u32, .haiku => i32, else => void, }; @@ -310,7 +310,7 @@ pub const clockid_t = switch (native_os) { THREAD_CPUTIME_ID = 14, PROCESS_CPUTIME_ID = 15, }, - .solaris, .illumos => enum(u32) { + .illumos => enum(u32) { VIRTUAL = 1, THREAD_CPUTIME_ID = 2, REALTIME = 3, @@ -457,7 +457,7 @@ pub const E = switch (native_os) { }, .macos, .ios, .tvos, .watchos, .visionos => darwin.E, .freebsd => freebsd.E, - .solaris, .illumos => enum(u16) { + .illumos => enum(u16) { /// No error occurred. SUCCESS = 0, /// Not super-user @@ -1002,7 +1002,7 @@ pub const F = switch (native_os) { pub const GETOWNER_UIDS = 17; }, - .solaris, .illumos => struct { + .illumos => struct { /// Unlock a previously locked region pub const ULOCK = 0; /// Lock a region for exclusive use @@ -1263,7 +1263,7 @@ pub const Flock = switch (native_os) { /// Remote system id or zero for local. sysid: i32, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { type: c_short, whence: c_short, start: off_t, @@ -1293,7 +1293,7 @@ pub const Flock = switch (native_os) { pub const HOST_NAME_MAX = switch (native_os) { .linux => linux.HOST_NAME_MAX, .macos, .ios, .tvos, .watchos, .visionos => 72, - .openbsd, .haiku, .dragonfly, .netbsd, .solaris, .illumos, .freebsd => 255, + .openbsd, .haiku, .dragonfly, .netbsd, .illumos, .freebsd => 255, // https://github.com/SerenityOS/serenity/blob/c87557e9c1865fa1a6440de34ff6ce6fc858a2b7/Kernel/API/POSIX/sys/limits.h#L22 .serenity => 64, else => {}, @@ -1302,7 +1302,7 @@ pub const IOV_MAX = switch (native_os) { .linux => linux.IOV_MAX, .emscripten => emscripten.IOV_MAX, // https://github.com/SerenityOS/serenity/blob/098af0f846a87b651731780ff48420205fd33754/Kernel/API/POSIX/sys/uio.h#L16 - .openbsd, .haiku, .solaris, .illumos, .wasi, .serenity => 1024, + .openbsd, .haiku, .illumos, .wasi, .serenity => 1024, .macos, .ios, .tvos, .watchos, .visionos => 16, .dragonfly, .netbsd, .freebsd => KERN.IOV_MAX, else => {}, @@ -1549,7 +1549,7 @@ pub const MADV = switch (native_os) { pub const CORE = 9; pub const PROTECT = 10; }, - .solaris, .illumos => struct { + .illumos => struct { /// no further special treatment pub const NORMAL = 0; /// expect random page references @@ -1605,9 +1605,8 @@ pub const MCL = switch (native_os) { // https://github.com/DragonFlyBSD/DragonFlyBSD/blob/088552723935447397400336f5ddb7aa5f5de660/sys/sys/mman.h#L118 // https://github.com/NetBSD/src/blob/fd2741deca927c18e3ba15acdf78b8b14b2abe36/sys/sys/mman.h#L179 // https://github.com/openbsd/src/blob/39404228f6d36c0ca4be5f04ab5385568ebd6aa3/sys/sys/mman.h#L129 - // https://github.com/kofemann/opensolaris/blob/80192cd83bf665e708269dae856f9145f7190f74/usr/src/uts/common/sys/mman.h#L379 // https://github.com/illumos/illumos-gate/blob/5280477614f83fea20fc938729df6adb3e44340d/usr/src/uts/common/sys/mman.h#L343 - .freebsd, .dragonfly, .netbsd, .openbsd, .solaris, .illumos => packed struct(c_int) { + .freebsd, .dragonfly, .netbsd, .openbsd, .illumos => packed struct(c_int) { CURRENT: bool = 0, FUTURE: bool = 0, _: std.meta.Int(.unsigned, @bitSizeOf(c_int) - 2) = 0, @@ -1630,7 +1629,7 @@ pub const MSF = switch (native_os) { pub const DEACTIVATE = 0x8; pub const SYNC = 0x10; }, - .openbsd, .haiku, .dragonfly, .netbsd, .solaris, .illumos, .freebsd => struct { + .openbsd, .haiku, .dragonfly, .netbsd, .illumos, .freebsd => struct { pub const ASYNC = 1; pub const INVALIDATE = 2; pub const SYNC = 4; @@ -1650,7 +1649,7 @@ pub const NAME_MAX = switch (native_os) { // character, but POSIX definition says that NAME_MAX does not include the // terminating null. // https://github.com/SerenityOS/serenity/blob/c87557e9c1865fa1a6440de34ff6ce6fc858a2b7/Kernel/API/POSIX/sys/limits.h#L20 - .haiku, .openbsd, .dragonfly, .netbsd, .solaris, .illumos, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 255, + .haiku, .openbsd, .dragonfly, .netbsd, .illumos, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 255, else => {}, }; pub const PATH_MAX = switch (native_os) { @@ -1658,7 +1657,7 @@ pub const PATH_MAX = switch (native_os) { .emscripten => emscripten.PATH_MAX, .wasi => 4096, .windows => 260, - .openbsd, .haiku, .dragonfly, .netbsd, .solaris, .illumos, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 1024, + .openbsd, .haiku, .dragonfly, .netbsd, .illumos, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 1024, else => {}, }; @@ -1721,7 +1720,7 @@ pub const POLL = switch (native_os) { pub const STANDARD = IN | PRI | OUT | RDNORM | RDBAND | WRBAND | ERR | HUP | NVAL; }, - .solaris, .illumos => struct { + .illumos => struct { pub const IN = 0x0001; pub const PRI = 0x0002; pub const OUT = 0x0004; @@ -1812,7 +1811,7 @@ pub const PROT = switch (native_os) { .linux => linux.PROT, .emscripten => emscripten.PROT, // https://github.com/SerenityOS/serenity/blob/6d59d4d3d9e76e39112842ec487840828f1c9bfe/Kernel/API/POSIX/sys/mman.h#L28-L31 - .openbsd, .haiku, .dragonfly, .netbsd, .solaris, .illumos, .freebsd, .windows, .serenity => struct { + .openbsd, .haiku, .dragonfly, .netbsd, .illumos, .freebsd, .windows, .serenity => struct { /// page can not be accessed pub const NONE = 0x0; /// page can be read @@ -1852,7 +1851,7 @@ pub const RLIM = switch (native_os) { pub const SAVED_MAX = INFINITY; pub const SAVED_CUR = INFINITY; }, - .solaris, .illumos => struct { + .illumos => struct { /// No limit pub const INFINITY: rlim_t = (1 << 63) - 3; pub const SAVED_MAX: rlim_t = (1 << 63) - 2; @@ -2022,7 +2021,7 @@ pub const S = switch (native_os) { return m & IFMT == IFWHT; } }, - .solaris, .illumos => struct { + .illumos => struct { pub const IFMT = 0o170000; pub const IFIFO = 0o010000; @@ -2424,7 +2423,7 @@ pub const SA = switch (native_os) { pub const NOCLDWAIT = 0x0020; pub const SIGINFO = 0x0040; }, - .solaris, .illumos => struct { + .illumos => struct { pub const ONSTACK = 0x00000001; pub const RESETHAND = 0x00000002; pub const RESTART = 0x00000004; @@ -2485,7 +2484,7 @@ pub const SA = switch (native_os) { else => void, }; pub const sigval_t = switch (native_os) { - .netbsd, .solaris, .illumos => extern union { + .netbsd, .illumos => extern union { int: i32, ptr: ?*anyopaque, }, @@ -2525,7 +2524,7 @@ pub const _SC = if (builtin.abi.isAndroid()) enum(c_int) { .openbsd => enum(c_int) { PAGESIZE = 28, }, - .solaris, .illumos => enum(c_int) { + .illumos => enum(c_int) { PAGESIZE = 11, NPROCESSORS_ONLN = 15, SIGRT_MIN = 40, @@ -2566,7 +2565,7 @@ pub const SEEK = switch (native_os) { pub const CUR = 1; pub const END = 2; }, - .dragonfly, .solaris, .illumos => struct { + .dragonfly, .illumos => struct { pub const SET = 0; pub const CUR = 1; pub const END = 2; @@ -2765,7 +2764,7 @@ pub const SIG = switch (native_os) { return sig <= MAXSIG and sig > 0; } }, - .solaris, .illumos => struct { + .illumos => struct { pub const DFL: ?Sigaction.handler_fn = @ptrFromInt(0); pub const ERR: ?Sigaction.handler_fn = @ptrFromInt(maxInt(usize)); pub const IGN: ?Sigaction.handler_fn = @ptrFromInt(1); @@ -3089,7 +3088,7 @@ pub const SIG = switch (native_os) { pub const SIOCGIFINDEX = switch (native_os) { .linux => linux.SIOCGIFINDEX, .emscripten => emscripten.SIOCGIFINDEX, - .solaris, .illumos => solaris.SIOCGLIFINDEX, + .illumos => illumos.SIOCGLIFINDEX, // https://github.com/SerenityOS/serenity/blob/cb10f70394fb7e9cfc77f827adb2e46d199bc3a5/Kernel/API/Ioctl.h#L118 .serenity => 34, else => void, @@ -3204,7 +3203,7 @@ pub const Sigaction = switch (native_os) { /// signal mask to apply mask: sigset_t, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { pub const handler_fn = *align(1) const fn (i32) callconv(.c) void; pub const sigaction_fn = *const fn (i32, *const siginfo_t, ?*anyopaque) callconv(.c) void; @@ -3301,7 +3300,7 @@ pub const T = switch (native_os) { pub const IOCGPTN = 0x4004740f; pub const IOCSIG = 0x2004745f; }, - .solaris, .illumos => struct { + .illumos => struct { pub const CGETA = tioc('T', 1); pub const CSETA = tioc('T', 2); pub const CSETAW = tioc('T', 3); @@ -3731,7 +3730,7 @@ pub const W = switch (native_os) { return (s & 0xffff) -% 1 < 0xff; } }, - .solaris, .illumos => struct { + .illumos => struct { pub const EXITED = 0o001; pub const TRAPPED = 0o002; pub const UNTRACED = 0o004; @@ -3944,7 +3943,7 @@ pub const clock_t = switch (native_os) { .emscripten => emscripten.clock_t, .macos, .ios, .tvos, .watchos, .visionos => c_ulong, .freebsd => isize, - .openbsd, .solaris, .illumos => i64, + .openbsd, .illumos => i64, .netbsd => u32, .haiku => i32, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L50 @@ -3975,7 +3974,7 @@ pub const dl_phdr_info = switch (native_os) { tls_modid: usize, tls_data: ?*anyopaque, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { addr: std.elf.Addr, name: ?[*:0]const u8, phdr: [*]std.elf.Phdr, @@ -4001,7 +4000,7 @@ pub const epoll_event = switch (native_os) { pub const ifreq = switch (native_os) { .linux => linux.ifreq, .emscripten => emscripten.ifreq, - .solaris, .illumos => lifreq, + .illumos => lifreq, // https://github.com/SerenityOS/serenity/blob/9882848e0bf783dfc8e8a6d887a848d70d9c58f4/Kernel/API/POSIX/net/if.h#L49-L82 .serenity => extern struct { // Not actually in a union, but the stdlib expects one for ifreq @@ -4026,10 +4025,9 @@ pub const ifreq = switch (native_os) { }; pub const in_pktinfo = switch (native_os) { .linux => linux.in_pktinfo, - // https://github.com/kofemann/opensolaris/blob/80192cd83bf665e708269dae856f9145f7190f74/usr/src/uts/common/netinet/in.h#L1084 // https://github.com/illumos/illumos-gate/blob/608eb926e14f4ba4736b2d59e891335f1cba9e1e/usr/src/uts/common/netinet/in.h#L1132 // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/netinet/in.h#L696 - .solaris, .illumos, .driverkit, .ios, .macos, .tvos, .watchos, .visionos => extern struct { + .illumos, .driverkit, .ios, .macos, .tvos, .watchos, .visionos => extern struct { ifindex: u32, spec_dst: u32, addr: u32, @@ -4042,12 +4040,11 @@ pub const in6_pktinfo = switch (native_os) { // https://github.com/DragonFlyBSD/DragonFlyBSD/blob/6098912863ed4c7b3f70d7483910ce2956cf4ed3/sys/netinet6/in6.h#L575 // https://github.com/NetBSD/src/blob/80bf25a5691072d4755e84567ccbdf0729370dea/sys/netinet6/in6.h#L468 // https://github.com/openbsd/src/blob/718a31b40d39fc6064de6355eb144e74633133fc/sys/netinet6/in6.h#L365 - // https://github.com/kofemann/opensolaris/blob/80192cd83bf665e708269dae856f9145f7190f74/usr/src/uts/common/netinet/in.h#L1093 // https://github.com/illumos/illumos-gate/blob/608eb926e14f4ba4736b2d59e891335f1cba9e1e/usr/src/uts/common/netinet/in.h#L114IP1 // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/netinet6/in6.h#L737 // https://github.com/haiku/haiku/blob/2aab5f5f14aeb3f34c3a3d9a9064cc3c0d914bea/headers/posix/netinet6/in6.h#L63 // https://github.com/SerenityOS/serenity/blob/5bd8af99be0bc4b2e14f361fd7d7590e6bcfa4d6/Kernel/API/POSIX/sys/socket.h#L122 - .freebsd, .dragonfly, .netbsd, .openbsd, .solaris, .illumos, .driverkit, .ios, .macos, .tvos, .watchos, .visionos, .haiku, .serenity => extern struct { + .freebsd, .dragonfly, .netbsd, .openbsd, .illumos, .driverkit, .ios, .macos, .tvos, .watchos, .visionos, .haiku, .serenity => extern struct { addr: [16]u8, ifindex: u32, }, @@ -4071,8 +4068,6 @@ pub const linger = switch (native_os) { .netbsd, // https://github.com/openbsd/src/blob/718a31b40d39fc6064de6355eb144e74633133fc/sys/sys/socket.h#L126 .openbsd, - // https://github.com/kofemann/opensolaris/blob/80192cd83bf665e708269dae856f9145f7190f74/usr/src/uts/common/sys/socket.h#L214 - .solaris, // https://github.com/illumos/illumos-gate/blob/608eb926e14f4ba4736b2d59e891335f1cba9e1e/usr/src/uts/common/sys/socket.h#L250 .illumos, // https://github.com/haiku/haiku/blob/2aab5f5f14aeb3f34c3a3d9a9064cc3c0d914bea/headers/posix/sys/socket.h#L87 @@ -4100,7 +4095,6 @@ pub const msghdr = switch (native_os) { .freebsd, .netbsd, .haiku, - .solaris, .illumos, .macos, .driverkit, @@ -4144,7 +4138,6 @@ pub const msghdr_const = switch (native_os) { .freebsd, .netbsd, .haiku, - .solaris, .illumos, .macos, .driverkit, @@ -4190,8 +4183,6 @@ pub const cmsghdr = switch (native_os) { .netbsd, // https://github.com/openbsd/src/blob/master/sys/sys/socket.h#L527 .openbsd, - // https://github.com/kofemann/opensolaris/blob/80192cd83bf665e708269dae856f9145f7190f74/usr/src/uts/common/sys/socket.h#L416 - .solaris, // https://github.com/illumos/illumos-gate/blob/afdf2e523873cb523df379676067bf9785a0f456/usr/src/uts/common/sys/socket.h#L460 .illumos, // https://github.com/SerenityOS/serenity/blob/4ee360a348a5e2490eeaeeabb3eb19e70dd450eb/Kernel/API/POSIX/sys/socket.h#L68 @@ -4215,7 +4206,7 @@ pub const cmsghdr = switch (native_os) { pub const nfds_t = switch (native_os) { .linux => linux.nfds_t, .emscripten => emscripten.nfds_t, - .haiku, .solaris, .illumos, .wasi => usize, + .haiku, .illumos, .wasi => usize, .windows => c_ulong, .openbsd, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => u32, // https://github.com/SerenityOS/serenity/blob/265764ff2fec038855193296588a887fc322d76a/Kernel/API/POSIX/poll.h#L32 @@ -4253,7 +4244,7 @@ pub const pollfd = switch (native_os) { pub const rlim_t = switch (native_os) { .linux => linux.rlim_t, .emscripten => emscripten.rlim_t, - .openbsd, .netbsd, .solaris, .illumos, .macos, .ios, .tvos, .watchos, .visionos => u64, + .openbsd, .netbsd, .illumos, .macos, .ios, .tvos, .watchos, .visionos => u64, .haiku, .dragonfly, .freebsd => i64, // https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/sys/resource.h#L54 .serenity => usize, @@ -4307,7 +4298,7 @@ pub const rlimit_resource = switch (native_os) { pub const AS: rlimit_resource = .VMEM; }, - .solaris, .illumos => enum(c_int) { + .illumos => enum(c_int) { CPU = 0, FSIZE = 1, DATA = 2, @@ -4401,7 +4392,7 @@ pub const rusage = switch (native_os) { pub const SELF = 0; pub const CHILDREN = -1; }, - .solaris, .illumos => extern struct { + .illumos => extern struct { utime: timeval, stime: timeval, maxrss: isize, @@ -4510,7 +4501,7 @@ pub const siginfo_t = switch (native_os) { }, }, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { signo: c_int, code: c_int, errno: c_int, @@ -4530,8 +4521,8 @@ pub const siginfo_t = switch (native_os) { stime: clock_t, }, }, - contract: solaris.ctid_t, - zone: solaris.zoneid_t, + contract: illumos.ctid_t, + zone: illumos.zoneid_t, }, fault: extern struct { addr: *allowzero anyopaque, @@ -4642,7 +4633,7 @@ pub const sigset_t = switch (native_os) { // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L19 .openbsd, .serenity => u32, .macos, .ios, .tvos, .watchos, .visionos => darwin.sigset_t, - .dragonfly, .netbsd, .solaris, .illumos, .freebsd => extern struct { + .dragonfly, .netbsd, .illumos, .freebsd => extern struct { __bits: [SIG.WORDS]u32, }, .haiku => u64, @@ -4681,7 +4672,7 @@ pub const addrinfo = if (builtin.abi.isAndroid()) extern struct { addr: ?*sockaddr, next: ?*addrinfo, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { flags: AI, family: i32, socktype: i32, @@ -4819,7 +4810,7 @@ pub const sockaddr = switch (native_os) { path: [104]u8, }; }, - .solaris, .illumos => extern struct { + .illumos => extern struct { /// address family family: sa_family_t, @@ -5081,7 +5072,7 @@ pub const sa_family_t = switch (native_os) { .windows => ws2_32.ADDRESS_FAMILY, .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => u8, // https://github.com/SerenityOS/serenity/blob/ac44ec5ebc707f9dd0c3d4759a1e17e91db5d74f/Kernel/API/POSIX/sys/socket.h#L66 - .solaris, .illumos, .serenity => u16, + .illumos, .serenity => u16, else => void, }; pub const AF = if (builtin.abi.isAndroid()) struct { @@ -5219,7 +5210,7 @@ pub const AF = if (builtin.abi.isAndroid()) struct { pub const INET6_SDP = 42; pub const MAX = 42; }, - .solaris, .illumos => struct { + .illumos => struct { pub const UNSPEC = 0; pub const UNIX = 1; pub const LOCAL = UNIX; @@ -5499,7 +5490,7 @@ pub const PF = if (builtin.abi.isAndroid()) struct { pub const INET6_SDP = AF.INET6_SDP; pub const MAX = AF.MAX; }, - .solaris, .illumos => struct { + .illumos => struct { pub const UNSPEC = AF.UNSPEC; pub const UNIX = AF.UNIX; pub const LOCAL = UNIX; @@ -5778,7 +5769,7 @@ pub const MSG = switch (native_os) { pub const FBLOCKING = 0x10000; pub const FNONBLOCKING = 0x20000; }, - .solaris, .illumos => struct { + .illumos => struct { pub const OOB = 0x0001; pub const PEEK = 0x0002; pub const DONTROUTE = 0x0004; @@ -5825,7 +5816,7 @@ pub const SOCK = switch (native_os) { pub const CLOEXEC = 0x10000000; pub const NONBLOCK = 0x20000000; }, - .solaris, .illumos => struct { + .illumos => struct { /// Datagram. pub const DGRAM = 1; /// STREAM. @@ -6155,7 +6146,7 @@ pub const IPPROTO = switch (native_os) { /// Reserved pub const RESERVED_254 = 254; }, - .solaris, .illumos => struct { + .illumos => struct { /// dummy for IP pub const IP = 0; /// Hop by hop header for IPv6 @@ -6514,7 +6505,7 @@ pub const IP = switch (native_os) { .dragonfly => dragonfly.IP, .netbsd => netbsd.IP, .openbsd => openbsd.IP, - .solaris, .illumos => solaris.IP, + .illumos => illumos.IP, .haiku => haiku.IP, .serenity => serenity.IP, else => void, @@ -6525,7 +6516,7 @@ pub const IPV6 = switch (native_os) { .dragonfly => dragonfly.IPV6, .netbsd => netbsd.IPV6, .openbsd => openbsd.IPV6, - .solaris, .illumos => solaris.IPV6, + .illumos => illumos.IPV6, .haiku => haiku.IPV6, .serenity => serenity.IPV6, else => void, @@ -6536,7 +6527,7 @@ pub const IPTOS = switch (native_os) { .dragonfly => dragonfly.IPTOS, .netbsd => netbsd.IPTOS, .openbsd => openbsd.IPTOS, - .solaris, .illumos => solaris.IPTOS, + .illumos => illumos.IPTOS, .haiku => haiku.IPTOS, .serenity => serenity.IPTOS, else => void, @@ -6548,7 +6539,7 @@ pub const SOL = switch (native_os) { .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos => struct { pub const SOCKET = 0xffff; }, - .solaris, .illumos => struct { + .illumos => struct { pub const SOCKET = 0xffff; pub const ROUTE = 0xfffe; pub const PACKET = 0xfffd; @@ -6632,7 +6623,7 @@ pub const SO = switch (native_os) { pub const MAX_PACING_RATE = 0x1018; pub const DOMAIN = 0x1019; }, - .solaris, .illumos => struct { + .illumos => struct { pub const DEBUG = 0x0001; pub const ACCEPTCONN = 0x0002; pub const REUSEADDR = 0x0004; @@ -6803,7 +6794,7 @@ pub const SOMAXCONN = switch (native_os) { .linux => linux.SOMAXCONN, .windows => ws2_32.SOMAXCONN, // https://github.com/SerenityOS/serenity/blob/ac44ec5ebc707f9dd0c3d4759a1e17e91db5d74f/Kernel/API/POSIX/sys/socket.h#L128 - .solaris, .illumos, .serenity => 128, + .illumos, .serenity => 128, // https://github.com/freebsd/freebsd-src/blob/9ab31f821ad1c6bad474510447387c50bef2c24c/sys/sys/socket.h#L434 // https://github.com/DragonFlyBSD/DragonFlyBSD/blob/fd3d1949d526ffa646e57037770acd6f2f3bb617/sys/sys/socket.h#L393 // https://github.com/NetBSD/src/blob/a673fb3f8487e974c669216064f7588207229fea/sys/sys/socket.h#L472 @@ -6814,9 +6805,8 @@ pub const SOMAXCONN = switch (native_os) { }; pub const SCM = switch (native_os) { .linux, .emscripten => linux.SCM, - // https://github.com/kofemann/opensolaris/blob/80192cd83bf665e708269dae856f9145f7190f74/usr/src/uts/common/sys/socket.h#L172 // https://github.com/illumos/illumos-gate/blob/489f6310fe8952e87fc1dce8af87990fcfd90f18/usr/src/uts/common/sys/socket.h#L196 - .solaris, .illumos => struct { + .illumos => struct { pub const RIGHTS = 0x1010; pub const UCRED = 0x1012; pub const TIMESTAMP = SO.TIMESTAMP; @@ -6874,7 +6864,7 @@ pub const IFNAMESIZE = switch (native_os) { .windows => 30, // https://github.com/SerenityOS/serenity/blob/9882848e0bf783dfc8e8a6d887a848d70d9c58f4/Kernel/API/POSIX/net/if.h#L50 .openbsd, .dragonfly, .netbsd, .freebsd, .macos, .ios, .tvos, .watchos, .visionos, .serenity => 16, - .solaris, .illumos => 32, + .illumos => 32, else => void, }; @@ -6910,7 +6900,7 @@ pub const time_t = switch (native_os) { }; pub const suseconds_t = switch (native_os) { // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L49 - .solaris, .illumos, .serenity => i64, + .illumos, .serenity => i64, .freebsd, .dragonfly => c_long, .netbsd => c_int, .haiku => i32, @@ -6929,7 +6919,7 @@ pub const timeval = switch (native_os) { usec: i32, }, // https://github.com/SerenityOS/serenity/blob/6b6eca0631c893c5f8cfb8274cdfe18e2d0637c0/Kernel/API/POSIX/sys/time.h#L15-L18 - .dragonfly, .netbsd, .freebsd, .solaris, .illumos, .serenity => extern struct { + .dragonfly, .netbsd, .freebsd, .illumos, .serenity => extern struct { /// seconds sec: time_t, /// microseconds @@ -6963,7 +6953,7 @@ pub const user_desc = switch (native_os) { pub const utsname = switch (native_os) { .linux => linux.utsname, .emscripten => emscripten.utsname, - .solaris, .illumos => extern struct { + .illumos => extern struct { sysname: [256:0]u8, nodename: [256:0]u8, release: [256:0]u8, @@ -7003,7 +6993,7 @@ pub const _errno = switch (native_os) { .wasi, .dragonfly => private.errnoFromThreadLocal, .windows => private._errno, .macos, .ios, .tvos, .watchos, .visionos, .freebsd => private.__error, - .solaris, .illumos => private.___errno, + .illumos => private.___errno, .openbsd, .netbsd => private.__errno, .haiku => haiku._errnop, // https://github.com/SerenityOS/serenity/blob/a353ceecf13b6f156a078e32f1ddf1d21366934c/Userland/Libraries/LibC/errno.h#L33 @@ -7049,7 +7039,7 @@ pub const RTLD = switch (native_os) { NOLOAD: bool = false, _: u18 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { LAZY: bool = false, NOW: bool = false, NOLOAD: bool = false, @@ -7128,7 +7118,7 @@ pub const dirent = switch (native_os) { /// Name of entry. name: [255:0]u8, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { /// Inode number of entry. ino: ino_t, /// Offset of this entry on disk. @@ -7177,7 +7167,7 @@ pub const dirent = switch (native_os) { else => void, }; pub const MAXNAMLEN = switch (native_os) { - .netbsd, .solaris, .illumos => 511, + .netbsd, .illumos => 511, // https://github.com/SerenityOS/serenity/blob/1262a7d1424d0d2e89d80644409721cbf056ab17/Kernel/API/POSIX/dirent.h#L37 .haiku, .serenity => NAME_MAX, .openbsd => 255, @@ -7228,7 +7218,7 @@ pub const AI = if (builtin.abi.isAndroid()) packed struct(u32) { ADDRCONFIG: bool = false, _: u21 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { V4MAPPED: bool = false, ALL: bool = false, ADDRCONFIG: bool = false, @@ -7286,7 +7276,7 @@ pub const NI = switch (native_os) { NUMERICSCOPE: bool = false, _: u23 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { NOFQDN: bool = false, NUMERICHOST: bool = false, NAMEREQD: bool = false, @@ -7396,7 +7386,7 @@ pub const EAI = if (builtin.abi.isAndroid()) enum(c_int) { OVERFLOW = 14, _, }, - .solaris, .illumos => enum(c_int) { + .illumos => enum(c_int) { /// address family for hostname not supported ADDRFAMILY = 1, /// name could not be resolved at this time @@ -7736,7 +7726,7 @@ pub const Stat = switch (native_os) { } }, .freebsd => freebsd.Stat, - .solaris, .illumos => extern struct { + .illumos => extern struct { dev: dev_t, ino: ino_t, mode: mode_t, @@ -7970,7 +7960,7 @@ pub const pthread_mutex_t = switch (native_os) { owner: i32 = -1, owner_count: i32 = 0, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { flag1: u16 = 0, flag2: u8 = 0, ceiling: u8 = 0, @@ -8025,7 +8015,7 @@ pub const pthread_cond_t = switch (native_os) { waiter_count: i32 = 0, lock: i32 = 0, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { flag: [4]u8 = [_]u8{0} ** 4, type: u16 = 0, magic: u16 = 0x4356, @@ -8084,7 +8074,7 @@ pub const pthread_rwlock_t = switch (native_os) { owner: ?pthread_t = null, private: ?*anyopaque = null, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { readers: i32 = 0, type: u16 = 0, magic: u16 = 0x5257, @@ -8118,7 +8108,7 @@ pub const pthread_attr_t = switch (native_os) { .freebsd, .openbsd, .serenity => extern struct { inner: ?*anyopaque = null, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { mutexattr: ?*anyopaque = null, }, .netbsd => extern struct { @@ -8140,7 +8130,7 @@ pub const pthread_key_t = switch (native_os) { .linux, .emscripten => c_uint, .macos, .ios, .tvos, .watchos, .visionos => c_ulong, // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L65 - .openbsd, .solaris, .illumos, .serenity => c_int, + .openbsd, .illumos, .serenity => c_int, else => void, }; @@ -8180,7 +8170,7 @@ pub const sem_t = switch (native_os) { }, _padding: u32, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { count: u32 = 0, type: u16 = 0, magic: u16 = 0x534d, @@ -8271,12 +8261,12 @@ pub const Kevent = switch (native_os) { }; pub const port_t = switch (native_os) { - .solaris, .illumos => c_int, + .illumos => c_int, else => void, }; pub const port_event = switch (native_os) { - .solaris, .illumos => extern struct { + .illumos => extern struct { events: u32, /// Event source. source: u16, @@ -8364,7 +8354,7 @@ pub const AT = switch (native_os) { pub const REMOVEDIR = 0x04; pub const EACCESS = 0x08; }, - .solaris, .illumos => struct { + .illumos => struct { /// Magic value that specify the use of the current working directory /// to determine the target of relative file paths in the openat() and /// similar syscalls. @@ -8461,7 +8451,7 @@ pub const O = switch (native_os) { // ignored in C code. Thus no mapping in Zig. _: u3 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { ACCMODE: std.posix.ACCMODE = .RDONLY, NDELAY: bool = false, APPEND: bool = false, @@ -8672,7 +8662,7 @@ pub const MAP = switch (native_os) { FIXED_NOREPLACE: bool = false, _: u11 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { TYPE: enum(u4) { SHARED = 0x01, PRIVATE = 0x02, @@ -8869,7 +8859,7 @@ pub const V = switch (native_os) { STOP, SUSP, }, - .solaris, .illumos => enum { + .illumos => enum { INTR, QUIT, ERASE, @@ -8936,7 +8926,7 @@ pub const NCCS = switch (native_os) { .linux => linux.NCCS, .macos, .ios, .tvos, .watchos, .visionos, .freebsd, .netbsd, .openbsd, .dragonfly => 20, .haiku => 11, - .solaris, .illumos => 19, + .illumos => 19, // https://github.com/SerenityOS/serenity/blob/d277cdfd4c7ed21d5248a83217ae03b9f890c3c8/Kernel/API/POSIX/termios.h#L15 .emscripten, .wasi, .serenity => 32, else => void, @@ -8973,7 +8963,7 @@ pub const termios = switch (native_os) { ospeed: speed_t, cc: [NCCS]cc_t, }, - .solaris, .illumos => extern struct { + .illumos => extern struct { iflag: tc_iflag_t, oflag: tc_oflag_t, cflag: tc_cflag_t, @@ -9063,7 +9053,7 @@ pub const tc_iflag_t = switch (native_os) { IXOFF: bool = false, _: u19 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { IGNBRK: bool = false, BRKINT: bool = false, IGNPAR: bool = false, @@ -9156,7 +9146,7 @@ pub const tc_oflag_t = switch (native_os) { ONLRET: bool = false, _: u25 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { OPOST: bool = false, OLCUC: bool = false, ONLCR: bool = false, @@ -9303,7 +9293,7 @@ pub const tc_cflag_t = switch (native_os) { RTSFLOW: bool = false, _: u17 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { _0: u4 = 0, CSIZE: CSIZE = .CS5, CSTOPB: bool = false, @@ -9441,7 +9431,7 @@ pub const tc_lflag_t = switch (native_os) { PENDIN: bool = false, _: u17 = 0, }, - .solaris, .illumos => packed struct(u32) { + .illumos => packed struct(u32) { ISIG: bool = false, ICANON: bool = false, XCASE: bool = false, @@ -9609,7 +9599,7 @@ pub const speed_t = switch (native_os) { B230400 = 0x12, B31250 = 0x13, }, - .solaris, .illumos => enum(c_uint) { + .illumos => enum(c_uint) { B0 = 0, B50 = 1, B75 = 2, @@ -9696,7 +9686,7 @@ pub const NSIG = switch (native_os) { .haiku => 65, .netbsd, .freebsd => 32, .macos => darwin.NSIG, - .solaris, .illumos => 75, + .illumos => 75, // https://github.com/SerenityOS/serenity/blob/046c23f567a17758d762a33bdf04bacbfd088f9f/Kernel/API/POSIX/signal_numbers.h#L42 .openbsd, .serenity => 33, else => {}, @@ -9709,7 +9699,7 @@ pub const MINSIGSTKSZ = switch (native_os) { .arm, .aarch64 => 4096, else => @compileError("unsupported arch"), }, - .solaris, .illumos => 2048, + .illumos => 2048, .haiku, .netbsd => 8192, .openbsd => 1 << openbsd.MAX_PAGE_SHIFT, // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L58 @@ -9719,7 +9709,7 @@ pub const MINSIGSTKSZ = switch (native_os) { pub const SIGSTKSZ = switch (native_os) { .macos, .ios, .tvos, .watchos, .visionos => 131072, .netbsd, .freebsd => MINSIGSTKSZ + 32768, - .solaris, .illumos => 8192, + .illumos => 8192, .haiku => 16384, .openbsd => MINSIGSTKSZ + (1 << openbsd.MAX_PAGE_SHIFT) * 4, // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L59 @@ -9733,7 +9723,7 @@ pub const SS = switch (native_os) { pub const DISABLE = 4; }, // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L54-L55 - .haiku, .solaris, .illumos, .serenity => struct { + .haiku, .illumos, .serenity => struct { pub const ONSTACK = 0x1; pub const DISABLE = 0x2; }, @@ -10314,7 +10304,7 @@ pub extern "c" fn setrlimit64(resource: rlimit_resource, rlim: *const rlimit) c_ pub const arc4random_buf = switch (native_os) { .linux => if (builtin.abi.isAndroid()) private.arc4random_buf else {}, - .dragonfly, .netbsd, .freebsd, .solaris, .illumos, .openbsd, .serenity, .macos, .ios, .tvos, .watchos, .visionos => private.arc4random_buf, + .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .serenity, .macos, .ios, .tvos, .watchos, .visionos => private.arc4random_buf, else => {}, }; pub const getentropy = switch (native_os) { @@ -10383,7 +10373,7 @@ pub const sigaltstack = switch (native_os) { pub extern "c" fn memfd_create(name: [*:0]const u8, flags: c_uint) c_int; pub const pipe2 = switch (native_os) { - .dragonfly, .emscripten, .netbsd, .freebsd, .solaris, .illumos, .openbsd, .linux, .serenity => private.pipe2, + .dragonfly, .emscripten, .netbsd, .freebsd, .illumos, .openbsd, .linux, .serenity => private.pipe2, else => {}, }; pub const copy_file_range = switch (native_os) { @@ -10443,12 +10433,12 @@ pub const munlock = switch (native_os) { }; pub const mlockall = switch (native_os) { - .linux, .freebsd, .dragonfly, .netbsd, .openbsd, .solaris, .illumos => private.mlockall, + .linux, .freebsd, .dragonfly, .netbsd, .openbsd, .illumos => private.mlockall, else => {}, }; pub const munlockall = switch (native_os) { - .linux, .freebsd, .dragonfly, .netbsd, .openbsd, .solaris, .illumos => private.munlockall, + .linux, .freebsd, .dragonfly, .netbsd, .openbsd, .illumos => private.munlockall, else => {}, }; @@ -10491,7 +10481,7 @@ pub fn sigrtmin() u8 { return switch (native_os) { .freebsd => 65, .netbsd => 33, - .solaris, .illumos => @truncate(sysconf(@intFromEnum(_SC.SIGRT_MIN))), + .illumos => @truncate(sysconf(@intFromEnum(_SC.SIGRT_MIN))), else => @truncate(@as(c_uint, @bitCast(private.__libc_current_sigrtmin()))), }; } @@ -10501,7 +10491,7 @@ pub fn sigrtmax() u8 { return switch (native_os) { .freebsd => 126, .netbsd => 63, - .solaris, .illumos => @truncate(sysconf(@intFromEnum(_SC.SIGRT_MAX))), + .illumos => @truncate(sysconf(@intFromEnum(_SC.SIGRT_MAX))), else => @truncate(@as(c_uint, @bitCast(private.__libc_current_sigrtmax()))), }; } @@ -10556,11 +10546,11 @@ pub const malloc_usable_size = switch (native_os) { else => {}, }; pub const posix_memalign = switch (native_os) { - .dragonfly, .netbsd, .freebsd, .solaris, .openbsd, .linux, .macos, .ios, .tvos, .watchos, .visionos, .serenity => private.posix_memalign, + .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .linux, .macos, .ios, .tvos, .watchos, .visionos, .serenity => private.posix_memalign, else => {}, }; pub const sysconf = switch (native_os) { - .solaris => solaris.sysconf, + .illumos => illumos.sysconf, else => private.sysconf, }; @@ -10629,7 +10619,6 @@ pub const fork = switch (native_os) { .macos, .netbsd, .openbsd, - .solaris, .illumos, .tvos, .watchos, @@ -10777,7 +10766,7 @@ pub extern "c" fn pthread_setspecific(key: pthread_key_t, value: ?*anyopaque) c_ pub extern "c" fn pthread_sigmask(how: c_int, set: *const sigset_t, oldset: *sigset_t) c_int; pub const pthread_setname_np = switch (native_os) { .macos, .ios, .tvos, .watchos, .visionos => darwin.pthread_setname_np, - .solaris, .illumos => solaris.pthread_setname_np, + .illumos => illumos.pthread_setname_np, .netbsd => netbsd.pthread_setname_np, else => private.pthread_setname_np, }; @@ -10987,33 +10976,33 @@ pub extern "c" fn pthread_get_name_np(thread: pthread_t, name: [*:0]u8, len: usi // OS-specific bits. These are protected from being used on the wrong OS by // comptime assertions inside each OS-specific file. -pub const AF_SUN = solaris.AF_SUN; -pub const AT_SUN = solaris.AT_SUN; -pub const FILE_EVENT = solaris.FILE_EVENT; -pub const GETCONTEXT = solaris.GETCONTEXT; -pub const GETUSTACK = solaris.GETUSTACK; -pub const PORT_ALERT = solaris.PORT_ALERT; -pub const PORT_SOURCE = solaris.PORT_SOURCE; -pub const POSIX_FADV = solaris.POSIX_FADV; -pub const SETCONTEXT = solaris.SETCONTEXT; -pub const SETUSTACK = solaris.GETUSTACK; -pub const SFD = solaris.SFD; -pub const ctid_t = solaris.ctid_t; -pub const file_obj = solaris.file_obj; -pub const id_t = solaris.id_t; -pub const lif_ifinfo_req = solaris.lif_ifinfo_req; -pub const lif_nd_req = solaris.lif_nd_req; -pub const lifreq = solaris.lifreq; -pub const major_t = solaris.major_t; -pub const minor_t = solaris.minor_t; -pub const poolid_t = solaris.poolid_t; -pub const port_notify = solaris.port_notify; -pub const priority = solaris.priority; -pub const procfs = solaris.procfs; -pub const projid_t = solaris.projid_t; -pub const signalfd_siginfo = solaris.signalfd_siginfo; -pub const taskid_t = solaris.taskid_t; -pub const zoneid_t = solaris.zoneid_t; +pub const AF_SUN = illumos.AF_SUN; +pub const AT_SUN = illumos.AT_SUN; +pub const FILE_EVENT = illumos.FILE_EVENT; +pub const GETCONTEXT = illumos.GETCONTEXT; +pub const GETUSTACK = illumos.GETUSTACK; +pub const PORT_ALERT = illumos.PORT_ALERT; +pub const PORT_SOURCE = illumos.PORT_SOURCE; +pub const POSIX_FADV = illumos.POSIX_FADV; +pub const SETCONTEXT = illumos.SETCONTEXT; +pub const SETUSTACK = illumos.GETUSTACK; +pub const SFD = illumos.SFD; +pub const ctid_t = illumos.ctid_t; +pub const file_obj = illumos.file_obj; +pub const id_t = illumos.id_t; +pub const lif_ifinfo_req = illumos.lif_ifinfo_req; +pub const lif_nd_req = illumos.lif_nd_req; +pub const lifreq = illumos.lifreq; +pub const major_t = illumos.major_t; +pub const minor_t = illumos.minor_t; +pub const poolid_t = illumos.poolid_t; +pub const port_notify = illumos.port_notify; +pub const priority = illumos.priority; +pub const procfs = illumos.procfs; +pub const projid_t = illumos.projid_t; +pub const signalfd_siginfo = illumos.signalfd_siginfo; +pub const taskid_t = illumos.taskid_t; +pub const zoneid_t = illumos.zoneid_t; pub const DirEnt = haiku.DirEnt; pub const _get_next_area_info = haiku._get_next_area_info; @@ -11361,7 +11350,7 @@ const private = struct { extern "c" fn getdirentries(fd: fd_t, buf_ptr: [*]u8, nbytes: usize, basep: *i64) isize; extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) switch (native_os) { .freebsd => isize, - .solaris, .illumos => usize, + .illumos => usize, else => c_int, }; extern "c" fn getrusage(who: c_int, usage: *rusage) c_int; diff --git a/lib/std/c/solaris.zig b/lib/std/c/illumos.zig similarity index 99% rename from lib/std/c/solaris.zig rename to lib/std/c/illumos.zig index e69c77dac7..694b7de5ec 100644 --- a/lib/std/c/solaris.zig +++ b/lib/std/c/illumos.zig @@ -16,7 +16,7 @@ const uid_t = std.c.uid_t; const IFNAMESIZE = std.c.IFNAMESIZE; comptime { - assert(builtin.os.tag == .solaris or builtin.os.tag == .illumos); // Prevent access of std.c symbols on wrong OS. + assert(builtin.os.tag == .illumos); // Prevent access of std.c symbols on wrong OS. } pub extern "c" fn pthread_setname_np(thread: pthread_t, name: [*:0]const u8, arg: ?*anyopaque) c_int; diff --git a/lib/std/crypto/Certificate/Bundle.zig b/lib/std/crypto/Certificate/Bundle.zig index 437f7a224c..dd65b4cc4a 100644 --- a/lib/std/crypto/Certificate/Bundle.zig +++ b/lib/std/crypto/Certificate/Bundle.zig @@ -63,7 +63,7 @@ pub fn rescan(cb: *Bundle, gpa: Allocator) RescanError!void { .freebsd, .openbsd => return rescanWithPath(cb, gpa, "/etc/ssl/cert.pem"), .netbsd => return rescanWithPath(cb, gpa, "/etc/openssl/certs/ca-certificates.crt"), .dragonfly => return rescanWithPath(cb, gpa, "/usr/local/etc/ssl/cert.pem"), - .solaris, .illumos => return rescanWithPath(cb, gpa, "/etc/ssl/cacert.pem"), + .illumos => return rescanWithPath(cb, gpa, "/etc/ssl/cacert.pem"), .haiku => return rescanWithPath(cb, gpa, "/boot/system/data/ssl/CARootCertificates.pem"), // https://github.com/SerenityOS/serenity/blob/222acc9d389bc6b490d4c39539761b043a4bfcb0/Ports/ca-certificates/package.sh#L19 .serenity => return rescanWithPath(cb, gpa, "/etc/ssl/certs/ca-certificates.crt"), diff --git a/lib/std/debug.zig b/lib/std/debug.zig index 57d6f45111..f6287135e5 100644 --- a/lib/std/debug.zig +++ b/lib/std/debug.zig @@ -1368,7 +1368,6 @@ pub const have_segfault_handling_support = switch (native_os) { .watchos, .illumos, - .solaris, .windows, => true, @@ -1471,7 +1470,6 @@ fn handleSegfaultPosix(sig: i32, info: *const posix.siginfo_t, ctx_ptr: ?*anyopa .openbsd, => @intFromPtr(info.data.fault.addr), .illumos, - .solaris, => @intFromPtr(info.reason.fault.addr), else => comptime unreachable, }; diff --git a/lib/std/debug/SelfInfo/Elf.zig b/lib/std/debug/SelfInfo/Elf.zig index d9f48281de..0f3c46e980 100644 --- a/lib/std/debug/SelfInfo/Elf.zig +++ b/lib/std/debug/SelfInfo/Elf.zig @@ -160,9 +160,6 @@ pub const can_unwind: bool = s: { .x86, .x86_64, }, - .solaris => &.{ - .x86_64, - }, else => unreachable, }; diff --git a/lib/std/debug/cpu_context.zig b/lib/std/debug/cpu_context.zig index 03cf6e633d..9d460a1797 100644 --- a/lib/std/debug/cpu_context.zig +++ b/lib/std/debug/cpu_context.zig @@ -961,7 +961,6 @@ const Powerpc = extern struct { // * System V Application Binary Interface - PowerPC Processor Supplement §3-46 // * Power Architecture 32-bit Application Binary Interface Supplement 1.0 - Linux & Embedded §3.4 // * 64-bit ELF V2 ABI Specification - Power Architecture Revision 1.5 §2.4 - // * ??? AIX? // // Are we having fun yet? @@ -1936,40 +1935,6 @@ const signal_ucontext_t = switch (native_os) { else => unreachable, }, }, - // This needs to be audited by someone with access to the Solaris headers. - .solaris => switch (native_arch) { - .sparc64 => @compileError("sparc64-solaris ucontext_t missing"), - .x86_64 => extern struct { - _flags: u64, - _link: ?*signal_ucontext_t, - _sigmask: std.c.sigset_t, - _stack: std.c.stack_t, - mcontext: extern struct { - r15: u64, - r14: u64, - r13: u64, - r12: u64, - r11: u64, - r10: u64, - r9: u64, - r8: u64, - rdi: u64, - rsi: u64, - rbp: u64, - rbx: u64, - rdx: u64, - rcx: u64, - rax: u64, - _trapno: i64, - _err: i64, - rip: u64, - _cs: i64, - _rflags: i64, - rsp: u64, - }, - }, - else => unreachable, - }, // https://github.com/illumos/illumos-gate/blob/d4ce137bba3bd16823db6374d9e9a643264ce245/usr/src/uts/intel/sys/ucontext.h .illumos => extern struct { _flags: usize, diff --git a/lib/std/dynamic_library.zig b/lib/std/dynamic_library.zig index 9504242cd5..92aea780bf 100644 --- a/lib/std/dynamic_library.zig +++ b/lib/std/dynamic_library.zig @@ -16,7 +16,7 @@ pub const DynLib = struct { else DlDynLib, .windows => WindowsDynLib, - .macos, .tvos, .watchos, .ios, .visionos, .freebsd, .netbsd, .openbsd, .dragonfly, .solaris, .illumos => DlDynLib, + .macos, .tvos, .watchos, .ios, .visionos, .freebsd, .netbsd, .openbsd, .dragonfly, .illumos => DlDynLib, else => struct { const open = @compileError("unsupported platform"); const openZ = @compileError("unsupported platform"); @@ -672,7 +672,7 @@ pub const DlDynLib = struct { test "dynamic_library" { const libname = switch (native_os) { - .linux, .freebsd, .openbsd, .solaris, .illumos => "invalid_so.so", + .linux, .freebsd, .openbsd, .illumos => "invalid_so.so", .windows => "invalid_dll.dll", .macos, .tvos, .watchos, .ios, .visionos => "invalid_dylib.dylib", else => return error.SkipZigTest, diff --git a/lib/std/fs.zig b/lib/std/fs.zig index 6bfc41cd79..652480914f 100644 --- a/lib/std/fs.zig +++ b/lib/std/fs.zig @@ -51,7 +51,7 @@ pub const GetAppDataDirError = @import("fs/get_app_data_dir.zig").GetAppDataDirE /// * On other platforms, `[]u8` file paths are opaque sequences of bytes with /// no particular encoding. pub const max_path_bytes = switch (native_os) { - .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .solaris, .illumos, .plan9, .emscripten, .wasi, .serenity => posix.PATH_MAX, + .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .illumos, .plan9, .emscripten, .wasi, .serenity => posix.PATH_MAX, // Each WTF-16LE code unit may be expanded to 3 WTF-8 bytes. // If it would require 4 WTF-8 bytes, then there would be a surrogate // pair in the WTF-16LE, and we (over)account 3 bytes for it that way. @@ -72,7 +72,7 @@ pub const max_path_bytes = switch (native_os) { /// On WASI, file name components are encoded as valid UTF-8. /// On other platforms, `[]u8` components are an opaque sequence of bytes with no particular encoding. pub const max_name_bytes = switch (native_os) { - .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .solaris, .illumos, .serenity => posix.NAME_MAX, + .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .illumos, .serenity => posix.NAME_MAX, // Haiku's NAME_MAX includes the null terminator, so subtract one. .haiku => posix.NAME_MAX - 1, // Each WTF-16LE character may be expanded to 3 WTF-8 bytes. @@ -571,7 +571,7 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { error.NetworkNotFound => unreachable, // Windows-only else => |e| return e, }, - .solaris, .illumos => return posix.readlinkZ("/proc/self/path/a.out", out_buffer) catch |err| switch (err) { + .illumos => return posix.readlinkZ("/proc/self/path/a.out", out_buffer) catch |err| switch (err) { error.InvalidUtf8 => unreachable, // WASI-only error.InvalidWtf8 => unreachable, // Windows-only error.UnsupportedReparsePointType => unreachable, // Windows-only diff --git a/lib/std/fs/Dir.zig b/lib/std/fs/Dir.zig index 67f0c0d724..14b26c89bd 100644 --- a/lib/std/fs/Dir.zig +++ b/lib/std/fs/Dir.zig @@ -39,7 +39,7 @@ const IteratorError = error{ } || posix.UnexpectedError; pub const Iterator = switch (native_os) { - .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .solaris, .illumos => struct { + .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .illumos => struct { dir: Dir, seek: i64, buf: [1024]u8 align(@alignOf(posix.system.dirent)), @@ -57,7 +57,7 @@ pub const Iterator = switch (native_os) { switch (native_os) { .macos, .ios => return self.nextDarwin(), .freebsd, .netbsd, .dragonfly, .openbsd => return self.nextBsd(), - .solaris, .illumos => return self.nextSolaris(), + .illumos => return self.nextIllumos(), else => @compileError("unimplemented"), } } @@ -116,7 +116,7 @@ pub const Iterator = switch (native_os) { } } - fn nextSolaris(self: *Self) !?Entry { + fn nextIllumos(self: *Self) !?Entry { start_over: while (true) { if (self.index >= self.end_index) { if (self.first_iter) { @@ -144,7 +144,7 @@ pub const Iterator = switch (native_os) { if (mem.eql(u8, name, ".") or mem.eql(u8, name, "..")) continue :start_over; - // Solaris dirent doesn't expose type, so we have to call stat to get it. + // illumos dirent doesn't expose type, so we have to call stat to get it. const stat_info = posix.fstatat( self.dir.fd, name, @@ -619,7 +619,6 @@ fn iterateImpl(self: Dir, first_iter_start_value: bool) Iterator { .netbsd, .dragonfly, .openbsd, - .solaris, .illumos, => return Iterator{ .dir = self, @@ -1770,7 +1769,7 @@ pub fn deleteFileZ(self: Dir, sub_path_c: [*:0]const u8) DeleteFileError!void { error.AccessDenied, error.PermissionDenied => |e| switch (native_os) { // non-Linux POSIX systems return permission errors when trying to delete a // directory, so we need to handle that case specifically and translate the error - .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .solaris, .illumos => { + .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .illumos => { // Don't follow symlinks to match unlinkat (which acts on symlinks rather than follows them) const fstat = posix.fstatatZ(self.fd, sub_path_c, posix.AT.SYMLINK_NOFOLLOW) catch return e; const is_dir = fstat.mode & posix.S.IFMT == posix.S.IFDIR; diff --git a/lib/std/fs/File.zig b/lib/std/fs/File.zig index 169f3f5222..ebc3809878 100644 --- a/lib/std/fs/File.zig +++ b/lib/std/fs/File.zig @@ -444,7 +444,7 @@ pub const Stat = struct { posix.S.IFSOCK => break :k .unix_domain_socket, else => {}, } - if (builtin.os.tag.isSolarish()) switch (m) { + if (builtin.os.tag == .illumos) switch (m) { posix.S.IFDOOR => break :k .door, posix.S.IFPORT => break :k .event_port, else => {}, diff --git a/lib/std/fs/get_app_data_dir.zig b/lib/std/fs/get_app_data_dir.zig index a256758a07..05b115956c 100644 --- a/lib/std/fs/get_app_data_dir.zig +++ b/lib/std/fs/get_app_data_dir.zig @@ -30,7 +30,7 @@ pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDi }; return fs.path.join(allocator, &[_][]const u8{ home_dir, "Library", "Application Support", appname }); }, - .linux, .freebsd, .netbsd, .dragonfly, .openbsd, .solaris, .illumos, .serenity => { + .linux, .freebsd, .netbsd, .dragonfly, .openbsd, .illumos, .serenity => { if (posix.getenv("XDG_DATA_HOME")) |xdg| { if (xdg.len > 0) { return fs.path.join(allocator, &[_][]const u8{ xdg, appname }); diff --git a/lib/std/heap.zig b/lib/std/heap.zig index 5f183133f3..24d84c83c2 100644 --- a/lib/std/heap.zig +++ b/lib/std/heap.zig @@ -155,7 +155,7 @@ const CAllocator = struct { else {}; pub const supports_posix_memalign = switch (builtin.os.tag) { - .dragonfly, .netbsd, .freebsd, .solaris, .openbsd, .linux, .macos, .ios, .tvos, .watchos, .visionos, .serenity => true, + .dragonfly, .netbsd, .freebsd, .illumos, .openbsd, .linux, .macos, .ios, .tvos, .watchos, .visionos, .serenity => true, else => false, }; @@ -768,7 +768,7 @@ const page_size_min_default: ?usize = switch (builtin.os.tag) { .sparc64 => 8 << 10, else => null, }, - .solaris, .illumos => switch (builtin.cpu.arch) { + .illumos => switch (builtin.cpu.arch) { // src/uts/*/sys/machparam.h .x86, .x86_64 => 4 << 10, .sparc, .sparc64 => 8 << 10, @@ -926,7 +926,7 @@ const page_size_max_default: ?usize = switch (builtin.os.tag) { .sparc64 => 8 << 10, else => null, }, - .solaris, .illumos => switch (builtin.cpu.arch) { + .illumos => switch (builtin.cpu.arch) { // src/uts/*/sys/machparam.h .x86, .x86_64 => 4 << 10, .sparc, .sparc64 => 8 << 10, diff --git a/lib/std/os.zig b/lib/std/os.zig index f2519a62e9..a3d659d4ca 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -80,7 +80,6 @@ pub fn isGetFdPathSupportedOnTarget(os: std.Target.Os) bool { .tvos, .visionos, .linux, - .solaris, .illumos, .freebsd, .serenity, @@ -147,7 +146,7 @@ pub fn getFdPath(fd: std.posix.fd_t, out_buffer: *[max_path_bytes]u8) std.posix. }; return target; }, - .solaris, .illumos => { + .illumos => { var procfs_buf: ["/proc/self/path/-2147483648\x00".len]u8 = undefined; const proc_path = std.fmt.bufPrintSentinel(procfs_buf[0..], "/proc/self/path/{d}", .{fd}, 0) catch unreachable; diff --git a/lib/std/posix.zig b/lib/std/posix.zig index dd38f8202d..e602b47c7b 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -6035,7 +6035,7 @@ pub fn sigaction(sig: u8, noalias act: ?*const Sigaction, noalias oact: ?*Sigact switch (errno(system.sigaction(sig, act, oact))) { .SUCCESS => return, // EINVAL means the signal is either invalid or some signal that cannot have its action - // changed. For POSIX, this means SIGKILL/SIGSTOP. For e.g. Solaris, this also includes the + // changed. For POSIX, this means SIGKILL/SIGSTOP. For e.g. illumos, this also includes the // non-standard SIGWAITING, SIGCANCEL, and SIGLWP. Either way, programmer error. .INVAL => unreachable, else => unreachable, @@ -7414,7 +7414,6 @@ pub fn ptrace(request: u32, pid: pid_t, addr: usize, data: usize) PtraceError!vo .wasi, .emscripten, .haiku, - .solaris, .illumos, .plan9, => @compileError("ptrace unsupported by target OS"), diff --git a/lib/std/posix/test.zig b/lib/std/posix/test.zig index ed329c911e..50ffd7998f 100644 --- a/lib/std/posix/test.zig +++ b/lib/std/posix/test.zig @@ -186,7 +186,7 @@ test "linkat with different directories" { if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // `nstat.nlink` assertion is failing with LLVM 20+ for unclear reasons. switch (native_os) { - .wasi, .linux, .solaris, .illumos => {}, + .wasi, .linux, .illumos => {}, else => return error.SkipZigTest, } @@ -558,7 +558,7 @@ test "fcntl" { test "signalfd" { switch (native_os) { - .linux, .solaris, .illumos => {}, + .linux, .illumos => {}, else => return error.SkipZigTest, } _ = &posix.signalfd; @@ -577,7 +577,7 @@ test "sync" { test "fsync" { switch (native_os) { - .linux, .windows, .solaris, .illumos => {}, + .linux, .windows, .illumos => {}, else => return error.SkipZigTest, } @@ -708,7 +708,7 @@ test "sigset add/del" { test "dup & dup2" { switch (native_os) { - .linux, .solaris, .illumos => {}, + .linux, .illumos => {}, else => return error.SkipZigTest, } diff --git a/lib/std/process.zig b/lib/std/process.zig index 989e640859..eb748e3b3e 100644 --- a/lib/std/process.zig +++ b/lib/std/process.zig @@ -1539,7 +1539,6 @@ pub fn getUserInfo(name: []const u8) !UserInfo { .netbsd, .openbsd, .haiku, - .solaris, .illumos, .serenity, => posixGetUserInfo(name), diff --git a/lib/std/start.zig b/lib/std/start.zig index 4cf2a0956b..69207e690d 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -761,7 +761,7 @@ fn maybeIgnoreSigpipe() void { const have_sigpipe_support = switch (builtin.os.tag) { .linux, .plan9, - .solaris, + .illumos, .netbsd, .openbsd, .haiku, diff --git a/lib/std/zig/LibCInstallation.zig b/lib/std/zig/LibCInstallation.zig index 0414d32ee7..f6d381be82 100644 --- a/lib/std/zig/LibCInstallation.zig +++ b/lib/std/zig/LibCInstallation.zig @@ -198,7 +198,7 @@ pub fn findNative(args: FindNativeOptions) FindError!LibCInstallation { try self.findNativeIncludeDirPosix(args); try self.findNativeGccDirHaiku(args); self.crt_dir = try args.allocator.dupeZ(u8, "/system/develop/lib"); - } else if (builtin.target.os.tag.isSolarish()) { + } else if (builtin.target.os.tag == .illumos) { // There is only one libc, and its headers/libraries are always in the same spot. self.include_dir = try args.allocator.dupeZ(u8, "/usr/include"); self.sys_include_dir = try args.allocator.dupeZ(u8, "/usr/include"); @@ -935,7 +935,7 @@ pub const CrtBasenames = struct { .crtn = "crtn.o", }, }, - .solaris, .illumos => switch (mode) { + .illumos => switch (mode) { .dynamic_lib => .{ .crti = "crti.o", .crtn = "crtn.o", diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index f5fae5581a..0324e7670f 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -228,7 +228,7 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { error.InvalidVersion => {}, } }, - .solaris, .illumos => { + .illumos => { const uts = posix.uname(); const release = mem.sliceTo(&uts.release, 0); if (std.SemanticVersion.parse(release)) |ver| { @@ -1058,13 +1058,13 @@ fn detectAbiAndDynamicLinker( ) DetectError!Target { const native_target_has_ld = comptime Target.DynamicLinker.kind(builtin.os.tag) != .none; const is_linux = builtin.target.os.tag == .linux; - const is_solarish = builtin.target.os.tag.isSolarish(); + const is_illumos = builtin.target.os.tag == .illumos; const is_darwin = builtin.target.os.tag.isDarwin(); const have_all_info = query.dynamic_linker.get() != null and query.abi != null and (!is_linux or query.abi.?.isGnu()); const os_is_non_native = query.os_tag != null; - // The Solaris/illumos environment is always the same. - if (!native_target_has_ld or have_all_info or os_is_non_native or is_solarish or is_darwin) { + // The illumos environment is always the same. + if (!native_target_has_ld or have_all_info or os_is_non_native or is_illumos or is_darwin) { return defaultAbiAndDynamicLinker(cpu, os, query); } if (query.abi) |abi| { diff --git a/lib/std/zig/system/NativePaths.zig b/lib/std/zig/system/NativePaths.zig index 47af64bc96..c459981dd6 100644 --- a/lib/std/zig/system/NativePaths.zig +++ b/lib/std/zig/system/NativePaths.zig @@ -99,7 +99,7 @@ pub fn detect(arena: Allocator, native_target: *const std.Target) !NativePaths { return self; } - if (builtin.os.tag.isSolarish()) { + if (builtin.os.tag == .illumos) { try self.addLibDir("/usr/lib/64"); try self.addLibDir("/usr/local/lib/64"); try self.addLibDir("/lib/64"); diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index c94951dfa2..42fa18da40 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -211,7 +211,7 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 .linux => "linux", .netbsd => "netbsd", .openbsd => "openbsd", - .solaris, .illumos => "solaris", + .illumos => "solaris", .windows, .uefi => "windows", .zos => "zos", .haiku => "haiku", diff --git a/src/link/Elf.zig b/src/link/Elf.zig index de506700fa..2537332c28 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1561,7 +1561,7 @@ pub fn writeElfHeader(self: *Elf) !void { else => switch (target.os.tag) { .freebsd, .ps4 => .FREEBSD, .hermit => .STANDALONE, - .illumos, .solaris => .SOLARIS, + .illumos => .SOLARIS, .openbsd => .OPENBSD, else => .NONE, }, diff --git a/src/link/Elf2.zig b/src/link/Elf2.zig index 9c8fc5fdc1..a050e361b5 100644 --- a/src/link/Elf2.zig +++ b/src/link/Elf2.zig @@ -417,7 +417,7 @@ fn create( else => .NONE, .freestanding, .other => .STANDALONE, .netbsd => .NETBSD, - .solaris => .SOLARIS, + .illumos => .SOLARIS, .aix => .AIX, .freebsd => .FREEBSD, .cuda => .CUDA, diff --git a/src/target.zig b/src/target.zig index 79e647e641..858e6f7634 100644 --- a/src/target.zig +++ b/src/target.zig @@ -129,13 +129,13 @@ pub fn hasValgrindSupport(target: *const std.Target, backend: std.builtin.Compil else => false, }, .x86 => switch (target.os.tag) { - .linux, .freebsd, .solaris, .illumos => true, + .linux, .freebsd, .illumos => true, .windows => !ofmt_c_msvc, else => false, }, .x86_64 => switch (target.os.tag) { .linux => target.abi != .gnux32 and target.abi != .muslx32, - .freebsd, .solaris, .illumos => true, + .freebsd, .illumos => true, .windows => !ofmt_c_msvc, else => false, }, @@ -257,7 +257,7 @@ pub fn hasNewLinkerSupport(ofmt: std.Target.ObjectFormat, backend: std.builtin.C pub fn selfHostedBackendIsAsRobustAsLlvm(target: *const std.Target) bool { if (target.cpu.arch.isSpirV()) return true; if (target.cpu.arch == .x86_64 and target.ptrBitWidth() == 64) { - if (target.os.tag.isSolarish()) { + if (target.os.tag == .illumos) { // https://github.com/ziglang/zig/issues/25699 return false; } @@ -428,8 +428,7 @@ pub fn libcFullLinkFlags(target: *const std.Target) []const []const u8 { // c compilers such as gcc or clang use. const result: []const []const u8 = switch (target.os.tag) { .dragonfly, .freebsd, .netbsd, .openbsd => &.{ "-lm", "-lpthread", "-lc", "-lutil" }, - // Solaris releases after 10 merged the threading libraries into libc. - .solaris, .illumos => &.{ "-lm", "-lsocket", "-lnsl", "-lc" }, + .illumos => &.{ "-lm", "-lsocket", "-lnsl", "-lc" }, .haiku => &.{ "-lm", "-lroot", "-lpthread", "-lc", "-lnetwork" }, .linux => switch (target.abi) { .android, .androideabi, .ohos, .ohoseabi => &.{ "-lm", "-lc", "-ldl" }, diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index f111b33f31..4fc41b532f 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -254,7 +254,6 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .sparc64, .os_tag = .netbsd, .abi = .none }, .{ .cpu_arch = .sparc64, .os_tag = .openbsd, .abi = .none }, .{ .cpu_arch = .sparc64, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .sparc64, .os_tag = .solaris, .abi = .none }, .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi }, .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf }, @@ -338,7 +337,6 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .rtems, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .solaris, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .tvos, .abi = .simulator }, .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .visionos, .abi = .simulator }, diff --git a/test/src/ErrorTrace.zig b/test/src/ErrorTrace.zig index 3c781e3a3a..bd3febef0e 100644 --- a/test/src/ErrorTrace.zig +++ b/test/src/ErrorTrace.zig @@ -41,7 +41,7 @@ pub fn addCase(self: *ErrorTrace, case: Case) void { fn shouldTestNonLlvm(target: *const std.Target) bool { return switch (target.cpu.arch) { .x86_64 => switch (target.ofmt) { - .elf => !target.os.tag.isBSD() and !target.os.tag.isSolarish(), + .elf => !target.os.tag.isBSD() and target.os.tag != .illumos, else => false, }, else => false, diff --git a/test/src/StackTrace.zig b/test/src/StackTrace.zig index 721db139c2..8b2d514010 100644 --- a/test/src/StackTrace.zig +++ b/test/src/StackTrace.zig @@ -46,7 +46,7 @@ fn addCaseTarget( ) void { const both_backends = switch (target.result.cpu.arch) { .x86_64 => switch (target.result.ofmt) { - .elf => !target.result.os.tag.isBSD() and !target.result.os.tag.isSolarish(), + .elf => !target.result.os.tag.isBSD() and target.result.os.tag != .illumos, else => false, }, else => false, diff --git a/test/standalone/posix/relpaths.zig b/test/standalone/posix/relpaths.zig index c6e0418ec6..f7ced28cdb 100644 --- a/test/standalone/posix/relpaths.zig +++ b/test/standalone/posix/relpaths.zig @@ -50,7 +50,7 @@ fn test_symlink(a: std.mem.Allocator, tmp: std.testing.TmpDir) !void { fn test_link(tmp: std.testing.TmpDir) !void { switch (builtin.target.os.tag) { - .linux, .solaris, .illumos => {}, + .linux, .illumos => {}, else => return, } diff --git a/test/tests.zig b/test/tests.zig index d83c95956a..a6931c408f 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -2493,7 +2493,7 @@ pub fn wouldUseLlvm(use_llvm: ?bool, query: std.Target.Query, optimize_mode: Opt const cpu_arch = query.cpu_arch orelse builtin.cpu.arch; const os_tag = query.os_tag orelse builtin.os.tag; switch (cpu_arch) { - .x86_64 => if (os_tag.isBSD() or os_tag.isSolarish() or std.Target.ptrBitWidth_arch_abi(cpu_arch, query.abi orelse .none) != 64) return true, + .x86_64 => if (os_tag.isBSD() or os_tag == .illumos or std.Target.ptrBitWidth_arch_abi(cpu_arch, query.abi orelse .none) != 64) return true, .spirv32, .spirv64 => return false, else => return true, }