From d84faceebdce75648cc56c06c94ab404bc52e491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 16 Oct 2025 23:15:23 +0200 Subject: [PATCH 1/9] std.os.linux: remove some pointless asm clobbers in naked fns --- lib/std/os/linux/arm.zig | 4 ++-- lib/std/os/linux/powerpc.zig | 2 +- lib/std/os/linux/powerpc64.zig | 2 +- lib/std/os/linux/x86.zig | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/std/os/linux/arm.zig b/lib/std/os/linux/arm.zig index 7995570654..bef158b925 100644 --- a/lib/std/os/linux/arm.zig +++ b/lib/std/os/linux/arm.zig @@ -134,12 +134,12 @@ pub fn restore() callconv(.naked) noreturn { \\ svc #0 : : [number] "I" (@intFromEnum(SYS.sigreturn)), - : .{ .memory = true }), + ), else => asm volatile ( \\ svc #0 : : [number] "{r7}" (@intFromEnum(SYS.sigreturn)), - : .{ .memory = true }), + ), } } diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig index c96a8a0804..85335b0275 100644 --- a/lib/std/os/linux/powerpc.zig +++ b/lib/std/os/linux/powerpc.zig @@ -254,7 +254,7 @@ pub fn restore_rt() callconv(.naked) noreturn { : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), ), - else => _ = asm volatile ( + else => asm volatile ( \\ sc : : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig index 5b1af7cc2b..73e8f74012 100644 --- a/lib/std/os/linux/powerpc64.zig +++ b/lib/std/os/linux/powerpc64.zig @@ -239,7 +239,7 @@ pub fn restore_rt() callconv(.naked) noreturn { : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), ), - else => _ = asm volatile ( + else => asm volatile ( \\ sc : : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig index c24ffcae6a..6fe4d402b2 100644 --- a/lib/std/os/linux/x86.zig +++ b/lib/std/os/linux/x86.zig @@ -175,12 +175,12 @@ pub fn restore() callconv(.naked) noreturn { \\ int $0x80 : : [number] "i" (@intFromEnum(SYS.sigreturn)), - : .{ .memory = true }), + ), else => asm volatile ( \\ int $0x80 : : [number] "{eax}" (@intFromEnum(SYS.sigreturn)), - : .{ .memory = true }), + ), } } From 8970d80355e869b07582ef400e7a7a6b8a4de974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 16 Oct 2025 23:17:25 +0200 Subject: [PATCH 2/9] std.os.linux.thumb: remove some @setRuntimeSafety(false) with no clear purpose --- lib/std/os/linux/thumb.zig | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/lib/std/os/linux/thumb.zig b/lib/std/os/linux/thumb.zig index 3e13bad1d8..4f5566acf4 100644 --- a/lib/std/os/linux/thumb.zig +++ b/lib/std/os/linux/thumb.zig @@ -8,8 +8,6 @@ const linux = std.os.linux; const SYS = linux.SYS; pub fn syscall0(number: SYS) usize { - @setRuntimeSafety(false); - var buf: [2]usize = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] @@ -22,8 +20,6 @@ pub fn syscall0(number: SYS) usize { } pub fn syscall1(number: SYS, arg1: usize) usize { - @setRuntimeSafety(false); - var buf: [2]usize = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] @@ -37,8 +33,6 @@ pub fn syscall1(number: SYS, arg1: usize) usize { } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { - @setRuntimeSafety(false); - var buf: [2]usize = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] @@ -53,8 +47,6 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { - @setRuntimeSafety(false); - var buf: [2]usize = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] @@ -70,8 +62,6 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { - @setRuntimeSafety(false); - var buf: [2]usize = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] @@ -88,8 +78,6 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { - @setRuntimeSafety(false); - var buf: [2]usize = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] @@ -115,8 +103,6 @@ pub fn syscall6( arg5: usize, arg6: usize, ) usize { - @setRuntimeSafety(false); - var buf: [2]usize = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] From fc7a5f2ae49aa0a0c5e1f1dd1c5678ee3e49b1b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 16 Oct 2025 23:38:18 +0200 Subject: [PATCH 3/9] std.os.linux: move some generic decls out of the arch bits --- lib/std/os/linux.zig | 15 ++++++++++++--- lib/std/os/linux/aarch64.zig | 12 ------------ lib/std/os/linux/arm.zig | 12 ------------ lib/std/os/linux/hexagon.zig | 7 ------- lib/std/os/linux/loongarch64.zig | 7 ------- lib/std/os/linux/m68k.zig | 7 ------- lib/std/os/linux/mips.zig | 12 ------------ lib/std/os/linux/mips64.zig | 12 ------------ lib/std/os/linux/powerpc.zig | 12 ------------ lib/std/os/linux/powerpc64.zig | 12 ------------ lib/std/os/linux/riscv32.zig | 7 ------- lib/std/os/linux/riscv64.zig | 7 ------- lib/std/os/linux/s390x.zig | 7 ------- lib/std/os/linux/sparc64.zig | 12 ------------ lib/std/os/linux/x86.zig | 12 ------------ lib/std/os/linux/x86_64.zig | 12 ------------ 16 files changed, 12 insertions(+), 153 deletions(-) diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 502b2defc2..a3b675a379 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -88,7 +88,6 @@ pub fn clone( } pub const ARCH = arch_bits.ARCH; -pub const Elf_Symndx = arch_bits.Elf_Symndx; pub const F = arch_bits.F; pub const Flock = arch_bits.Flock; pub const HWCAP = arch_bits.HWCAP; @@ -103,8 +102,6 @@ pub const mode_t = arch_bits.mode_t; pub const nlink_t = arch_bits.nlink_t; pub const off_t = arch_bits.off_t; pub const time_t = arch_bits.time_t; -pub const timeval = arch_bits.timeval; -pub const timezone = arch_bits.timezone; pub const user_desc = arch_bits.user_desc; pub const tls = @import("linux/tls.zig"); @@ -1611,6 +1608,8 @@ pub fn flock(fd: fd_t, operation: i32) usize { return syscall2(.flock, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, operation)))); } +pub const Elf_Symndx = if (native_arch == .s390x) u64 else u32; + // We must follow the C calling convention when we call into the VDSO const VdsoClockGettime = *align(1) const fn (clockid_t, *timespec) callconv(.c) usize; var vdso_clock_gettime: ?VdsoClockGettime = &init_vdso_clock_gettime; @@ -8360,6 +8359,16 @@ pub const POSIX_FADV = switch (native_arch) { }, }; +pub const timeval = extern struct { + tv_sec: isize, + tv_usec: i64, +}; + +pub const timezone = extern struct { + minuteswest: i32, + dsttime: i32, +}; + /// The timespec struct used by the kernel. pub const kernel_timespec = extern struct { sec: i64, diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig index 4888a9eda3..771d1126e7 100644 --- a/lib/std/os/linux/aarch64.zig +++ b/lib/std/os/linux/aarch64.zig @@ -230,15 +230,3 @@ pub const Stat = extern struct { return self.ctim; } }; - -pub const timeval = extern struct { - sec: isize, - usec: isize, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/arm.zig b/lib/std/os/linux/arm.zig index bef158b925..4689bf8be2 100644 --- a/lib/std/os/linux/arm.zig +++ b/lib/std/os/linux/arm.zig @@ -266,15 +266,3 @@ pub const Stat = extern struct { return self.ctim; } }; - -pub const timeval = extern struct { - sec: i32, - usec: i32, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/hexagon.zig b/lib/std/os/linux/hexagon.zig index e3bf7a8709..230b6ad88d 100644 --- a/lib/std/os/linux/hexagon.zig +++ b/lib/std/os/linux/hexagon.zig @@ -154,11 +154,6 @@ pub const F = struct { pub const GETOWNER_UIDS = 17; }; -pub const timeval = extern struct { - sec: time_t, - usec: i32, -}; - pub const Flock = extern struct { type: i16, whence: i16, @@ -209,6 +204,4 @@ pub const Stat = extern struct { } }; -pub const Elf_Symndx = u32; - pub const VDSO = void; diff --git a/lib/std/os/linux/loongarch64.zig b/lib/std/os/linux/loongarch64.zig index 4ed817167d..7fc226bb90 100644 --- a/lib/std/os/linux/loongarch64.zig +++ b/lib/std/os/linux/loongarch64.zig @@ -176,11 +176,6 @@ pub const Stat = extern struct { } }; -pub const timeval = extern struct { - tv_sec: time_t, - tv_usec: i64, -}; - pub const F = struct { pub const DUPFD = 0; pub const GETFD = 1; @@ -209,5 +204,3 @@ pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_5.10"; }; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/m68k.zig b/lib/std/os/linux/m68k.zig index c3bd42b2ff..16008053e1 100644 --- a/lib/std/os/linux/m68k.zig +++ b/lib/std/os/linux/m68k.zig @@ -186,11 +186,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const timeval = extern struct { - sec: time_t, - usec: i32, -}; - pub const Flock = extern struct { type: i16, whence: i16, @@ -230,7 +225,5 @@ pub const Stat = extern struct { } }; -pub const Elf_Symndx = u32; - // No VDSO used as of glibc 112a0ae18b831bf31f44d81b82666980312511d6. pub const VDSO = void; diff --git a/lib/std/os/linux/mips.zig b/lib/std/os/linux/mips.zig index 6412c847bd..dd67a853f2 100644 --- a/lib/std/os/linux/mips.zig +++ b/lib/std/os/linux/mips.zig @@ -336,15 +336,3 @@ pub const Stat = extern struct { }; } }; - -pub const timeval = extern struct { - sec: isize, - usec: isize, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/mips64.zig b/lib/std/os/linux/mips64.zig index 4419190193..4fc77d0fe1 100644 --- a/lib/std/os/linux/mips64.zig +++ b/lib/std/os/linux/mips64.zig @@ -315,15 +315,3 @@ pub const Stat = extern struct { }; } }; - -pub const timeval = extern struct { - sec: isize, - usec: isize, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig index 85335b0275..7ebfe3d69e 100644 --- a/lib/std/os/linux/powerpc.zig +++ b/lib/std/os/linux/powerpc.zig @@ -340,15 +340,3 @@ pub const Stat = extern struct { return self.ctim; } }; - -pub const timeval = extern struct { - sec: time_t, - usec: isize, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig index 73e8f74012..fa8ab5e238 100644 --- a/lib/std/os/linux/powerpc64.zig +++ b/lib/std/os/linux/powerpc64.zig @@ -325,15 +325,3 @@ pub const Stat = extern struct { return self.ctim; } }; - -pub const timeval = extern struct { - sec: isize, - usec: isize, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/riscv32.zig b/lib/std/os/linux/riscv32.zig index a0f73adeef..760af2c489 100644 --- a/lib/std/os/linux/riscv32.zig +++ b/lib/std/os/linux/riscv32.zig @@ -168,11 +168,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const timeval = extern struct { - sec: time_t, - usec: i64, -}; - pub const Flock = extern struct { type: i16, whence: i16, @@ -214,8 +209,6 @@ pub const Stat = extern struct { } }; -pub const Elf_Symndx = u32; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_4.15"; diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig index 5331620451..05b8adca68 100644 --- a/lib/std/os/linux/riscv64.zig +++ b/lib/std/os/linux/riscv64.zig @@ -168,11 +168,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const timeval = extern struct { - sec: time_t, - usec: i64, -}; - pub const Flock = extern struct { type: i16, whence: i16, @@ -214,8 +209,6 @@ pub const Stat = extern struct { } }; -pub const Elf_Symndx = u32; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_4.15"; diff --git a/lib/std/os/linux/s390x.zig b/lib/std/os/linux/s390x.zig index 00bc09c518..aade6d9d2f 100644 --- a/lib/std/os/linux/s390x.zig +++ b/lib/std/os/linux/s390x.zig @@ -186,11 +186,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const timeval = extern struct { - sec: time_t, - usec: i64, -}; - pub const Flock = extern struct { type: i16, whence: i16, @@ -229,8 +224,6 @@ pub const Stat = extern struct { } }; -pub const Elf_Symndx = u64; - pub const VDSO = struct { pub const CGT_SYM = "__kernel_clock_gettime"; pub const CGT_VER = "LINUX_2.6.29"; diff --git a/lib/std/os/linux/sparc64.zig b/lib/std/os/linux/sparc64.zig index b542c3f985..bb8c748960 100644 --- a/lib/std/os/linux/sparc64.zig +++ b/lib/std/os/linux/sparc64.zig @@ -314,15 +314,3 @@ pub const Stat = extern struct { return self.ctim; } }; - -pub const timeval = extern struct { - sec: isize, - usec: i32, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig index 6fe4d402b2..aa94ad6a63 100644 --- a/lib/std/os/linux/x86.zig +++ b/lib/std/os/linux/x86.zig @@ -278,18 +278,6 @@ pub const Stat = extern struct { } }; -pub const timeval = extern struct { - sec: i32, - usec: i32, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; - pub const user_desc = extern struct { entry_number: u32, base_addr: u32, diff --git a/lib/std/os/linux/x86_64.zig b/lib/std/os/linux/x86_64.zig index e3db9e99c4..8d27983f29 100644 --- a/lib/std/os/linux/x86_64.zig +++ b/lib/std/os/linux/x86_64.zig @@ -234,15 +234,3 @@ pub const Stat = extern struct { return self.ctim; } }; - -pub const timeval = extern struct { - sec: isize, - usec: isize, -}; - -pub const timezone = extern struct { - minuteswest: i32, - dsttime: i32, -}; - -pub const Elf_Symndx = u32; From cfdc0f0e34b00a7e1a4dc23f1d6672f213bbf9ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 16 Oct 2025 23:39:11 +0200 Subject: [PATCH 4/9] std.os.linux: replace usize/isize in arch bits with fixed types for clarity --- lib/std/os/linux/aarch64.zig | 54 ++++++++++---------- lib/std/os/linux/arm.zig | 44 ++++++++-------- lib/std/os/linux/hexagon.zig | 42 +++++++-------- lib/std/os/linux/loongarch64.zig | 42 +++++++-------- lib/std/os/linux/m68k.zig | 42 +++++++-------- lib/std/os/linux/mips.zig | 64 +++++++++++------------ lib/std/os/linux/mips64.zig | 64 +++++++++++------------ lib/std/os/linux/powerpc.zig | 88 ++++++++++++++++---------------- lib/std/os/linux/powerpc64.zig | 86 +++++++++++++++---------------- lib/std/os/linux/riscv32.zig | 44 ++++++++-------- lib/std/os/linux/riscv64.zig | 44 ++++++++-------- lib/std/os/linux/s390x.zig | 30 +++++------ lib/std/os/linux/sparc64.zig | 58 ++++++++++----------- lib/std/os/linux/thumb.zig | 54 ++++++++++---------- lib/std/os/linux/x86.zig | 50 +++++++++--------- lib/std/os/linux/x86_64.zig | 58 ++++++++++----------- 16 files changed, 432 insertions(+), 432 deletions(-) diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig index 771d1126e7..5f3d68549e 100644 --- a/lib/std/os/linux/aarch64.zig +++ b/lib/std/os/linux/aarch64.zig @@ -14,33 +14,33 @@ const stack_t = linux.stack_t; const sigset_t = linux.sigset_t; const timespec = std.os.linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { return asm volatile ("svc #0" - : [ret] "={x0}" (-> usize), + : [ret] "={x0}" (-> u64), : [number] "{x8}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { return asm volatile ("svc #0" - : [ret] "={x0}" (-> usize), + : [ret] "={x0}" (-> u64), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { return asm volatile ("svc #0" - : [ret] "={x0}" (-> usize), + : [ret] "={x0}" (-> u64), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { return asm volatile ("svc #0" - : [ret] "={x0}" (-> usize), + : [ret] "={x0}" (-> u64), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), @@ -48,9 +48,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { return asm volatile ("svc #0" - : [ret] "={x0}" (-> usize), + : [ret] "={x0}" (-> u64), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), @@ -59,9 +59,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { return asm volatile ("svc #0" - : [ret] "={x0}" (-> usize), + : [ret] "={x0}" (-> u64), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), @@ -73,15 +73,15 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) u64 { return asm volatile ("svc #0" - : [ret] "={x0}" (-> usize), + : [ret] "={x0}" (-> u64), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), @@ -92,7 +92,7 @@ pub fn syscall6( : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // x0, x1, w2, x3, x4, x5, x6 // @@ -192,12 +192,12 @@ pub const Flock = extern struct { pub const blksize_t = i32; pub const nlink_t = u32; -pub const time_t = isize; +pub const time_t = i64; pub const mode_t = u32; -pub const off_t = isize; -pub const ino_t = usize; -pub const dev_t = usize; -pub const blkcnt_t = isize; +pub const off_t = i64; +pub const ino_t = u64; +pub const dev_t = u64; +pub const blkcnt_t = i64; // The `stat` definition used by the Linux kernel. pub const Stat = extern struct { @@ -208,7 +208,7 @@ pub const Stat = extern struct { uid: uid_t, gid: gid_t, rdev: dev_t, - __pad: usize, + __pad: u64, size: off_t, blksize: blksize_t, __pad2: i32, diff --git a/lib/std/os/linux/arm.zig b/lib/std/os/linux/arm.zig index 4689bf8be2..15c371c53c 100644 --- a/lib/std/os/linux/arm.zig +++ b/lib/std/os/linux/arm.zig @@ -13,33 +13,33 @@ const pid_t = linux.pid_t; const sockaddr = linux.sockaddr; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u32 { return asm volatile ("svc #0" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r7}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u32) u32 { return asm volatile ("svc #0" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { return asm volatile ("svc #0" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { return asm volatile ("svc #0" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -47,9 +47,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { return asm volatile ("svc #0" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -58,9 +58,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { return asm volatile ("svc #0" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -72,15 +72,15 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { return asm volatile ("svc #0" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -91,7 +91,7 @@ pub fn syscall6( : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u32 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // r0, r1, r2, r3, +0, +4, +8 // @@ -228,7 +228,7 @@ pub const Flock = extern struct { pub const blksize_t = i32; pub const nlink_t = u32; -pub const time_t = isize; +pub const time_t = i32; pub const mode_t = u32; pub const off_t = i64; pub const ino_t = u64; diff --git a/lib/std/os/linux/hexagon.zig b/lib/std/os/linux/hexagon.zig index 230b6ad88d..c42de2ac25 100644 --- a/lib/std/os/linux/hexagon.zig +++ b/lib/std/os/linux/hexagon.zig @@ -13,33 +13,33 @@ const stack_t = linux.stack_t; const sigset_t = linux.sigset_t; const timespec = std.os.linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u32 { return asm volatile ("trap0(#1)" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r6}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u32) u32 { return asm volatile ("trap0(#1)" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { return asm volatile ("trap0(#1)" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { return asm volatile ("trap0(#1)" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -47,9 +47,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { return asm volatile ("trap0(#1)" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -58,9 +58,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { return asm volatile ("trap0(#1)" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -72,15 +72,15 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { return asm volatile ("trap0(#1)" - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -91,7 +91,7 @@ pub fn syscall6( : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u32 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // r0, r1, r2, r3, r4, r5, +0 // diff --git a/lib/std/os/linux/loongarch64.zig b/lib/std/os/linux/loongarch64.zig index 7fc226bb90..da2caa3d06 100644 --- a/lib/std/os/linux/loongarch64.zig +++ b/lib/std/os/linux/loongarch64.zig @@ -12,37 +12,37 @@ const sockaddr = linux.sockaddr; const socklen_t = linux.socklen_t; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { return asm volatile ( \\ syscall 0 - : [ret] "={$r4}" (-> usize), + : [ret] "={$r4}" (-> u64), : [number] "{$r11}" (@intFromEnum(number)), : .{ .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r16 = true, .r17 = true, .r18 = true, .r19 = true, .r20 = true, .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { return asm volatile ( \\ syscall 0 - : [ret] "={$r4}" (-> usize), + : [ret] "={$r4}" (-> u64), : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), : .{ .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r16 = true, .r17 = true, .r18 = true, .r19 = true, .r20 = true, .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { return asm volatile ( \\ syscall 0 - : [ret] "={$r4}" (-> usize), + : [ret] "={$r4}" (-> u64), : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), [arg2] "{$r5}" (arg2), : .{ .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r16 = true, .r17 = true, .r18 = true, .r19 = true, .r20 = true, .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { return asm volatile ( \\ syscall 0 - : [ret] "={$r4}" (-> usize), + : [ret] "={$r4}" (-> u64), : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), [arg2] "{$r5}" (arg2), @@ -50,10 +50,10 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r16 = true, .r17 = true, .r18 = true, .r19 = true, .r20 = true, .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { return asm volatile ( \\ syscall 0 - : [ret] "={$r4}" (-> usize), + : [ret] "={$r4}" (-> u64), : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), [arg2] "{$r5}" (arg2), @@ -62,10 +62,10 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r16 = true, .r17 = true, .r18 = true, .r19 = true, .r20 = true, .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { return asm volatile ( \\ syscall 0 - : [ret] "={$r4}" (-> usize), + : [ret] "={$r4}" (-> u64), : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), [arg2] "{$r5}" (arg2), @@ -77,16 +77,16 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) u64 { return asm volatile ( \\ syscall 0 - : [ret] "={$r4}" (-> usize), + : [ret] "={$r4}" (-> u64), : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), [arg2] "{$r5}" (arg2), @@ -97,7 +97,7 @@ pub fn syscall6( : .{ .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r16 = true, .r17 = true, .r18 = true, .r19 = true, .r20 = true, .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // a0, a1, a2, a3, a4, a5, a6 // sys_clone(flags, stack, ptid, ctid, tls) diff --git a/lib/std/os/linux/m68k.zig b/lib/std/os/linux/m68k.zig index 16008053e1..9febdc3087 100644 --- a/lib/std/os/linux/m68k.zig +++ b/lib/std/os/linux/m68k.zig @@ -11,33 +11,33 @@ const sockaddr = linux.sockaddr; const socklen_t = linux.socklen_t; const timespec = std.os.linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u32 { return asm volatile ("trap #0" - : [ret] "={d0}" (-> usize), + : [ret] "={d0}" (-> u32), : [number] "{d0}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u32) u32 { return asm volatile ("trap #0" - : [ret] "={d0}" (-> usize), + : [ret] "={d0}" (-> u32), : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { return asm volatile ("trap #0" - : [ret] "={d0}" (-> usize), + : [ret] "={d0}" (-> u32), : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), [arg2] "{d2}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { return asm volatile ("trap #0" - : [ret] "={d0}" (-> usize), + : [ret] "={d0}" (-> u32), : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), [arg2] "{d2}" (arg2), @@ -45,9 +45,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { return asm volatile ("trap #0" - : [ret] "={d0}" (-> usize), + : [ret] "={d0}" (-> u32), : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), [arg2] "{d2}" (arg2), @@ -56,9 +56,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { return asm volatile ("trap #0" - : [ret] "={d0}" (-> usize), + : [ret] "={d0}" (-> u32), : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), [arg2] "{d2}" (arg2), @@ -70,15 +70,15 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { return asm volatile ("trap #0" - : [ret] "={d0}" (-> usize), + : [ret] "={d0}" (-> u32), : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), [arg2] "{d2}" (arg2), @@ -89,7 +89,7 @@ pub fn syscall6( : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u32 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // +4, +8, +12, +16, +20, +24, +28 // diff --git a/lib/std/os/linux/mips.zig b/lib/std/os/linux/mips.zig index dd67a853f2..3e16042ea0 100644 --- a/lib/std/os/linux/mips.zig +++ b/lib/std/os/linux/mips.zig @@ -14,19 +14,19 @@ const sigset_t = linux.sigset_t; const sockaddr = linux.sockaddr; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u32 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), : .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall_pipe(fd: *[2]i32) usize { +pub fn syscall_pipe(fd: *[2]i32) u32 { return asm volatile ( \\ .set noat \\ .set noreorder @@ -39,47 +39,47 @@ pub fn syscall_pipe(fd: *[2]i32) usize { \\ sw $2, 0($4) \\ sw $3, 4($4) \\ 2: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(SYS.pipe)), [fd] "{$4}" (fd), : .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u32) u32 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), : .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), : .{ .r1 = true, .r3 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -87,14 +87,14 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .r1 = true, .r3 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -103,7 +103,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { return asm volatile ( \\ .set noat \\ subu $sp, $sp, 24 @@ -114,7 +114,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -129,13 +129,13 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { return asm volatile ( \\ .set noat \\ subu $sp, $sp, 24 @@ -147,7 +147,7 @@ pub fn syscall6( \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -160,14 +160,14 @@ pub fn syscall6( pub fn syscall7( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, - arg7: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, + arg7: u32, +) u32 { return asm volatile ( \\ .set noat \\ subu $sp, $sp, 32 @@ -180,7 +180,7 @@ pub fn syscall7( \\ blez $2, 1f \\ subu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u32), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -192,7 +192,7 @@ pub fn syscall7( : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u32 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // 3, 4, 5, 6, 7, 8, 9 // diff --git a/lib/std/os/linux/mips64.zig b/lib/std/os/linux/mips64.zig index 4fc77d0fe1..477fb32c61 100644 --- a/lib/std/os/linux/mips64.zig +++ b/lib/std/os/linux/mips64.zig @@ -14,19 +14,19 @@ const sigset_t = linux.sigset_t; const sockaddr = linux.sockaddr; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), : .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall_pipe(fd: *[2]i32) usize { +pub fn syscall_pipe(fd: *[2]i32) u64 { return asm volatile ( \\ .set noat \\ .set noreorder @@ -39,13 +39,13 @@ pub fn syscall_pipe(fd: *[2]i32) usize { \\ sw $2, 0($4) \\ sw $3, 4($4) \\ 2: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(SYS.pipe)), [fd] "{$4}" (fd), : .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f @@ -53,34 +53,34 @@ pub fn syscall1(number: SYS, arg1: usize) usize { \\ nop \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), : .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), : .{ .r1 = true, .r3 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -88,14 +88,14 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .r1 = true, .r3 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -104,14 +104,14 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -123,20 +123,20 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -149,21 +149,21 @@ pub fn syscall6( pub fn syscall7( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, - arg7: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, + arg7: u64, +) u64 { return asm volatile ( \\ syscall \\ beq $7, $zero, 1f \\ blez $2, 1f \\ dsubu $2, $0, $2 \\ 1: - : [ret] "={$2}" (-> usize), + : [ret] "={$2}" (-> u64), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), @@ -175,7 +175,7 @@ pub fn syscall7( : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // 3, 4, 5, 6, 7, 8, 9 // diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig index 7ebfe3d69e..d79bcf5e94 100644 --- a/lib/std/os/linux/powerpc.zig +++ b/lib/std/os/linux/powerpc.zig @@ -14,48 +14,48 @@ const sigset_t = linux.sigset_t; const sockaddr = linux.sockaddr; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u32 { // r0 is both an input register and a clobber. musl and glibc achieve this with // a "+" constraint, which isn't supported in Zig, so instead we separately list // r0 as both an input and an output. (Listing it as an input and a clobber would // cause the C backend to emit invalid code; see #25209.) - var r0_out: usize = undefined; + var r0_out: u32 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u32), [r0_out] "={r0}" (r0_out), : [number] "{r0}" (@intFromEnum(number)), : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u32) u32 { // r0 is both an input and a clobber. - var r0_out: usize = undefined; + var r0_out: u32 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u32), [r0_out] "={r0}" (r0_out), : [number] "{r0}" (@intFromEnum(number)), [arg1] "{r3}" (arg1), : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; + var r0_out: u32 = undefined; + var r4_out: u32 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u32), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), : [number] "{r0}" (@intFromEnum(number)), @@ -64,17 +64,17 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : .{ .memory = true, .cr0 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; + var r0_out: u32 = undefined; + var r4_out: u32 = undefined; + var r5_out: u32 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u32), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -85,18 +85,18 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true, .cr0 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; - var r6_out: usize = undefined; + var r0_out: u32 = undefined; + var r4_out: u32 = undefined; + var r5_out: u32 = undefined; + var r6_out: u32 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u32), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -109,19 +109,19 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true, .cr0 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; - var r6_out: usize = undefined; - var r7_out: usize = undefined; + var r0_out: u32 = undefined; + var r4_out: u32 = undefined; + var r5_out: u32 = undefined; + var r6_out: u32 = undefined; + var r7_out: u32 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u32), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -138,26 +138,26 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; - var r6_out: usize = undefined; - var r7_out: usize = undefined; - var r8_out: usize = undefined; + var r0_out: u32 = undefined; + var r4_out: u32 = undefined; + var r5_out: u32 = undefined; + var r6_out: u32 = undefined; + var r7_out: u32 = undefined; + var r8_out: u32 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u32), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -174,7 +174,7 @@ pub fn syscall6( : .{ .memory = true, .cr0 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u32 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // 3, 4, 5, 6, 7, 8, 9 // @@ -303,7 +303,7 @@ pub const Flock = extern struct { pub const blksize_t = i32; pub const nlink_t = u32; -pub const time_t = isize; +pub const time_t = i32; pub const mode_t = u32; pub const off_t = i64; pub const ino_t = u64; diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig index fa8ab5e238..14c2f47bc7 100644 --- a/lib/std/os/linux/powerpc64.zig +++ b/lib/std/os/linux/powerpc64.zig @@ -14,48 +14,48 @@ const sigset_t = linux.sigset_t; const sockaddr = linux.sockaddr; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { // r0 is both an input register and a clobber. musl and glibc achieve this with // a "+" constraint, which isn't supported in Zig, so instead we separately list // r0 as both an input and an output. (Listing it as an input and a clobber would // cause the C backend to emit invalid code; see #25209.) - var r0_out: usize = undefined; + var r0_out: u64 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u64), [r0_out] "={r0}" (r0_out), : [number] "{r0}" (@intFromEnum(number)), : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { // r0 is both an input and a clobber. - var r0_out: usize = undefined; + var r0_out: u64 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u64), [r0_out] "={r0}" (r0_out), : [number] "{r0}" (@intFromEnum(number)), [arg1] "{r3}" (arg1), : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; + var r0_out: u64 = undefined; + var r4_out: u64 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u64), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), : [number] "{r0}" (@intFromEnum(number)), @@ -64,17 +64,17 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : .{ .memory = true, .cr0 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; + var r0_out: u64 = undefined; + var r4_out: u64 = undefined; + var r5_out: u64 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u64), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -85,18 +85,18 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true, .cr0 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; - var r6_out: usize = undefined; + var r0_out: u64 = undefined; + var r4_out: u64 = undefined; + var r5_out: u64 = undefined; + var r6_out: u64 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u64), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -109,19 +109,19 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true, .cr0 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; - var r6_out: usize = undefined; - var r7_out: usize = undefined; + var r0_out: u64 = undefined; + var r4_out: u64 = undefined; + var r5_out: u64 = undefined; + var r6_out: u64 = undefined; + var r7_out: u64 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u64), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -138,26 +138,26 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) u64 { // These registers are both inputs and clobbers. - var r0_out: usize = undefined; - var r4_out: usize = undefined; - var r5_out: usize = undefined; - var r6_out: usize = undefined; - var r7_out: usize = undefined; - var r8_out: usize = undefined; + var r0_out: u64 = undefined; + var r4_out: u64 = undefined; + var r5_out: u64 = undefined; + var r6_out: u64 = undefined; + var r7_out: u64 = undefined; + var r8_out: u64 = undefined; return asm volatile ( \\ sc \\ bns+ 1f \\ neg 3, 3 \\ 1: - : [ret] "={r3}" (-> usize), + : [ret] "={r3}" (-> u64), [r0_out] "={r0}" (r0_out), [r4_out] "={r4}" (r4_out), [r5_out] "={r5}" (r5_out), @@ -174,7 +174,7 @@ pub fn syscall6( : .{ .memory = true, .cr0 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // 3, 4, 5, 6, 7, 8, 9 // diff --git a/lib/std/os/linux/riscv32.zig b/lib/std/os/linux/riscv32.zig index 760af2c489..896dbb456b 100644 --- a/lib/std/os/linux/riscv32.zig +++ b/lib/std/os/linux/riscv32.zig @@ -13,33 +13,33 @@ const sockaddr = linux.sockaddr; const socklen_t = linux.socklen_t; const timespec = std.os.linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u32 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u32), : [number] "{x17}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u32) u32 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u32), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u32), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u32), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -47,9 +47,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u32), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -58,9 +58,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u32), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -72,15 +72,15 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u32), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -91,7 +91,7 @@ pub fn syscall6( : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u32 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // a0, a1, a2, a3, a4, a5, a6 // @@ -186,7 +186,7 @@ pub const Stat = extern struct { uid: uid_t, gid: gid_t, rdev: dev_t, - __pad: usize, + __pad: u32, size: off_t, blksize: blksize_t, __pad2: i32, diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig index 05b8adca68..6091c386ff 100644 --- a/lib/std/os/linux/riscv64.zig +++ b/lib/std/os/linux/riscv64.zig @@ -13,33 +13,33 @@ const sockaddr = linux.sockaddr; const socklen_t = linux.socklen_t; const timespec = std.os.linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u64), : [number] "{x17}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u64), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u64), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u64), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -47,9 +47,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u64), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -58,9 +58,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u64), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -72,15 +72,15 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) u64 { return asm volatile ("ecall" - : [ret] "={x10}" (-> usize), + : [ret] "={x10}" (-> u64), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), @@ -91,7 +91,7 @@ pub fn syscall6( : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // a0, a1, a2, a3, a4, a5, a6 // @@ -186,7 +186,7 @@ pub const Stat = extern struct { uid: uid_t, gid: gid_t, rdev: dev_t, - __pad: usize, + __pad: u64, size: off_t, blksize: blksize_t, __pad2: i32, diff --git a/lib/std/os/linux/s390x.zig b/lib/std/os/linux/s390x.zig index aade6d9d2f..fc1e79db85 100644 --- a/lib/std/os/linux/s390x.zig +++ b/lib/std/os/linux/s390x.zig @@ -13,33 +13,33 @@ const timespec = std.os.linux.timespec; const stack_t = std.os.linux.stack_t; const sigset_t = std.os.linux.sigset_t; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { return asm volatile ("svc 0" - : [ret] "={r2}" (-> usize), + : [ret] "={r2}" (-> u64), : [number] "{r1}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { return asm volatile ("svc 0" - : [ret] "={r2}" (-> usize), + : [ret] "={r2}" (-> u64), : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { return asm volatile ("svc 0" - : [ret] "={r2}" (-> usize), + : [ret] "={r2}" (-> u64), : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), [arg2] "{r3}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { return asm volatile ("svc 0" - : [ret] "={r2}" (-> usize), + : [ret] "={r2}" (-> u64), : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), [arg2] "{r3}" (arg2), @@ -47,9 +47,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { return asm volatile ("svc 0" - : [ret] "={r2}" (-> usize), + : [ret] "={r2}" (-> u64), : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), [arg2] "{r3}" (arg2), @@ -58,9 +58,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { return asm volatile ("svc 0" - : [ret] "={r2}" (-> usize), + : [ret] "={r2}" (-> u64), : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), [arg2] "{r3}" (arg2), @@ -70,9 +70,9 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, : .{ .memory = true }); } -pub fn syscall6(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize, arg6: usize) usize { +pub fn syscall6(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64, arg6: u64) u64 { return asm volatile ("svc 0" - : [ret] "={r2}" (-> usize), + : [ret] "={r2}" (-> u64), : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), [arg2] "{r3}" (arg2), @@ -83,7 +83,7 @@ pub fn syscall6(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { asm volatile ( \\# int clone( \\# fn, a = r2 diff --git a/lib/std/os/linux/sparc64.zig b/lib/std/os/linux/sparc64.zig index bb8c748960..7365d85c76 100644 --- a/lib/std/os/linux/sparc64.zig +++ b/lib/std/os/linux/sparc64.zig @@ -15,7 +15,7 @@ const iovec = std.posix.iovec; const iovec_const = std.posix.iovec_const; const timespec = linux.timespec; -pub fn syscall_pipe(fd: *[2]i32) usize { +pub fn syscall_pipe(fd: *[2]i32) u64 { return asm volatile ( \\ mov %[arg], %%g3 \\ t 0x6d @@ -29,13 +29,13 @@ pub fn syscall_pipe(fd: *[2]i32) usize { \\ st %%o1, [%%g3+4] \\ clr %%o0 \\2: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(SYS.pipe)), [arg] "r" (fd), : .{ .memory = true, .g3 = true }); } -pub fn syscall_fork() usize { +pub fn syscall_fork() u64 { // Linux/sparc64 fork() returns two values in %o0 and %o1: // - On the parent's side, %o0 is the child's PID and %o1 is 0. // - On the child's side, %o0 is the parent's PID and %o1 is 1. @@ -52,58 +52,58 @@ pub fn syscall_fork() usize { \\ dec %%o1 \\ and %%o1, %%o0, %%o0 \\ 2: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(SYS.fork)), : .{ .memory = true, .icc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { return asm volatile ( \\ t 0x6d \\ bcc,pt %%xcc, 1f \\ nop \\ neg %%o0 \\ 1: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(number)), : .{ .memory = true, .icc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { return asm volatile ( \\ t 0x6d \\ bcc,pt %%xcc, 1f \\ nop \\ neg %%o0 \\ 1: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), : .{ .memory = true, .icc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { return asm volatile ( \\ t 0x6d \\ bcc,pt %%xcc, 1f \\ nop \\ neg %%o0 \\ 1: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), [arg2] "{o1}" (arg2), : .{ .memory = true, .icc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { return asm volatile ( \\ t 0x6d \\ bcc,pt %%xcc, 1f \\ nop \\ neg %%o0 \\ 1: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), [arg2] "{o1}" (arg2), @@ -111,14 +111,14 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true, .icc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { return asm volatile ( \\ t 0x6d \\ bcc,pt %%xcc, 1f \\ nop \\ neg %%o0 \\ 1: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), [arg2] "{o1}" (arg2), @@ -127,14 +127,14 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true, .icc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { return asm volatile ( \\ t 0x6d \\ bcc,pt %%xcc, 1f \\ nop \\ neg %%o0 \\ 1: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), [arg2] "{o1}" (arg2), @@ -146,20 +146,20 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) u64 { return asm volatile ( \\ t 0x6d \\ bcc,pt %%xcc, 1f \\ nop \\ neg %%o0 \\ 1: - : [ret] "={o0}" (-> usize), + : [ret] "={o0}" (-> u64), : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), [arg2] "{o1}" (arg2), @@ -170,7 +170,7 @@ pub fn syscall6( : .{ .memory = true, .icc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // i0, i1, i2, i3, i4, i5, sp // @@ -274,12 +274,12 @@ pub const Flock = extern struct { pub const off_t = i64; pub const ino_t = u64; -pub const time_t = isize; +pub const time_t = i64; pub const mode_t = u32; -pub const dev_t = usize; +pub const dev_t = u64; pub const nlink_t = u32; -pub const blksize_t = isize; -pub const blkcnt_t = isize; +pub const blksize_t = i64; +pub const blkcnt_t = i64; // The `stat64` definition used by the kernel. pub const Stat = extern struct { diff --git a/lib/std/os/linux/thumb.zig b/lib/std/os/linux/thumb.zig index 4f5566acf4..cd0daec4d9 100644 --- a/lib/std/os/linux/thumb.zig +++ b/lib/std/os/linux/thumb.zig @@ -7,53 +7,53 @@ const std = @import("../../std.zig"); const linux = std.os.linux; const SYS = linux.SYS; -pub fn syscall0(number: SYS) usize { - var buf: [2]usize = .{ @intFromEnum(number), undefined }; +pub fn syscall0(number: SYS) u32 { + var buf: [2]u32 = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] \\ ldr r7, [%[tmp]] \\ svc #0 \\ ldr r7, [%[tmp], #4] - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [tmp] "{r1}" (&buf), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { - var buf: [2]usize = .{ @intFromEnum(number), undefined }; +pub fn syscall1(number: SYS, arg1: u32) u32 { + var buf: [2]u32 = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] \\ ldr r7, [%[tmp]] \\ svc #0 \\ ldr r7, [%[tmp], #4] - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [tmp] "{r1}" (&buf), [arg1] "{r0}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { - var buf: [2]usize = .{ @intFromEnum(number), undefined }; +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { + var buf: [2]u32 = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] \\ ldr r7, [%[tmp]] \\ svc #0 \\ ldr r7, [%[tmp], #4] - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [tmp] "{r2}" (&buf), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { - var buf: [2]usize = .{ @intFromEnum(number), undefined }; +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { + var buf: [2]u32 = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] \\ ldr r7, [%[tmp]] \\ svc #0 \\ ldr r7, [%[tmp], #4] - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [tmp] "{r3}" (&buf), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -61,14 +61,14 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { - var buf: [2]usize = .{ @intFromEnum(number), undefined }; +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { + var buf: [2]u32 = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] \\ ldr r7, [%[tmp]] \\ svc #0 \\ ldr r7, [%[tmp], #4] - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [tmp] "{r4}" (&buf), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -77,14 +77,14 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { - var buf: [2]usize = .{ @intFromEnum(number), undefined }; +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { + var buf: [2]u32 = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] \\ ldr r7, [%[tmp]] \\ svc #0 \\ ldr r7, [%[tmp], #4] - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [tmp] "{r5}" (&buf), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), @@ -96,20 +96,20 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { - var buf: [2]usize = .{ @intFromEnum(number), undefined }; + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { + var buf: [2]u32 = .{ @intFromEnum(number), undefined }; return asm volatile ( \\ str r7, [%[tmp], #4] \\ ldr r7, [%[tmp]] \\ svc #0 \\ ldr r7, [%[tmp], #4] - : [ret] "={r0}" (-> usize), + : [ret] "={r0}" (-> u32), : [tmp] "{r6}" (&buf), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig index aa94ad6a63..4f72c3cc63 100644 --- a/lib/std/os/linux/x86.zig +++ b/lib/std/os/linux/x86.zig @@ -14,33 +14,33 @@ const sigset_t = linux.sigset_t; const sockaddr = linux.sockaddr; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u32 { return asm volatile ("int $0x80" - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(number)), : .{ .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u32) u32 { return asm volatile ("int $0x80" - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), : .{ .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { return asm volatile ("int $0x80" - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), [arg2] "{ecx}" (arg2), : .{ .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { return asm volatile ("int $0x80" - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), [arg2] "{ecx}" (arg2), @@ -48,9 +48,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { return asm volatile ("int $0x80" - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), [arg2] "{ecx}" (arg2), @@ -59,9 +59,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { return asm volatile ("int $0x80" - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), [arg2] "{ecx}" (arg2), @@ -73,20 +73,20 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { // arg6 can't be passed to asm in a register because ebp might be reserved as the frame pointer // and there are no more GPRs available; so we'll need a memory operand for it. Adding that // memory operand means that on PIC we might need a reference to the GOT, which in turn needs // *its* own GPR, so we need to pass another arg in memory too! This is surprisingly hard to get // right, because we can't touch esp or ebp until we're done with the memory input (as that // input could be relative to esp or ebp). - const args56: [2]usize = .{ arg5, arg6 }; + const args56: [2]u32 = .{ arg5, arg6 }; return asm volatile ( \\ push %[args56] \\ push %%ebp @@ -99,7 +99,7 @@ pub fn syscall6( \\ int $0x80 \\ pop %%ebp \\ pop %%edi - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), [arg2] "{ecx}" (arg2), @@ -109,16 +109,16 @@ pub fn syscall6( : .{ .memory = true }); } -pub fn socketcall(call: usize, args: [*]const usize) usize { +pub fn socketcall(call: u32, args: [*]const u32) u32 { return asm volatile ("int $0x80" - : [ret] "={eax}" (-> usize), + : [ret] "={eax}" (-> u32), : [number] "{eax}" (@intFromEnum(SYS.socketcall)), [arg1] "{ebx}" (call), [arg2] "{ecx}" (@intFromPtr(args)), : .{ .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u32 { // __clone(func, stack, flags, arg, ptid, tls, ctid) // +8, +12, +16, +20, +24, +28, +32 // @@ -239,7 +239,7 @@ pub const Flock = extern struct { pub const blksize_t = i32; pub const nlink_t = u32; -pub const time_t = isize; +pub const time_t = i32; pub const mode_t = u32; pub const off_t = i64; pub const ino_t = u64; diff --git a/lib/std/os/linux/x86_64.zig b/lib/std/os/linux/x86_64.zig index 8d27983f29..79381c8b58 100644 --- a/lib/std/os/linux/x86_64.zig +++ b/lib/std/os/linux/x86_64.zig @@ -16,33 +16,33 @@ const sockaddr = linux.sockaddr; const socklen_t = linux.socklen_t; const timespec = linux.timespec; -pub fn syscall0(number: SYS) usize { +pub fn syscall0(number: SYS) u64 { return asm volatile ("syscall" - : [ret] "={rax}" (-> usize), + : [ret] "={rax}" (-> u64), : [number] "{rax}" (@intFromEnum(number)), : .{ .rcx = true, .r11 = true, .memory = true }); } -pub fn syscall1(number: SYS, arg1: usize) usize { +pub fn syscall1(number: SYS, arg1: u64) u64 { return asm volatile ("syscall" - : [ret] "={rax}" (-> usize), + : [ret] "={rax}" (-> u64), : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), : .{ .rcx = true, .r11 = true, .memory = true }); } -pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { +pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 { return asm volatile ("syscall" - : [ret] "={rax}" (-> usize), + : [ret] "={rax}" (-> u64), : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), : .{ .rcx = true, .r11 = true, .memory = true }); } -pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { +pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 { return asm volatile ("syscall" - : [ret] "={rax}" (-> usize), + : [ret] "={rax}" (-> u64), : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), @@ -50,9 +50,9 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { : .{ .rcx = true, .r11 = true, .memory = true }); } -pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { +pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 { return asm volatile ("syscall" - : [ret] "={rax}" (-> usize), + : [ret] "={rax}" (-> u64), : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), @@ -61,9 +61,9 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) : .{ .rcx = true, .r11 = true, .memory = true }); } -pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { +pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 { return asm volatile ("syscall" - : [ret] "={rax}" (-> usize), + : [ret] "={rax}" (-> u64), : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), @@ -75,15 +75,15 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, pub fn syscall6( number: SYS, - arg1: usize, - arg2: usize, - arg3: usize, - arg4: usize, - arg5: usize, - arg6: usize, -) usize { + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) u64 { return asm volatile ("syscall" - : [ret] "={rax}" (-> usize), + : [ret] "={rax}" (-> u64), : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), @@ -94,7 +94,7 @@ pub fn syscall6( : .{ .rcx = true, .r11 = true, .memory = true }); } -pub fn clone() callconv(.naked) usize { +pub fn clone() callconv(.naked) u64 { asm volatile ( \\ movl $56,%%eax // SYS_clone \\ movq %%rdi,%%r11 @@ -146,11 +146,11 @@ pub fn restore_rt() callconv(.naked) noreturn { } } -pub const mode_t = usize; -pub const time_t = isize; -pub const nlink_t = usize; -pub const blksize_t = isize; -pub const blkcnt_t = isize; +pub const mode_t = u64; +pub const time_t = i64; +pub const nlink_t = u64; +pub const blksize_t = i64; +pub const blkcnt_t = i64; pub const F = struct { pub const DUPFD = 0; @@ -206,7 +206,7 @@ pub const dev_t = u64; pub const Stat = extern struct { dev: dev_t, ino: ino_t, - nlink: usize, + nlink: u64, mode: u32, uid: uid_t, @@ -214,13 +214,13 @@ pub const Stat = extern struct { __pad0: u32, rdev: dev_t, size: off_t, - blksize: isize, + blksize: i64, blocks: i64, atim: timespec, mtim: timespec, ctim: timespec, - __unused: [3]isize, + __unused: [3]i64, pub fn atime(self: @This()) timespec { return self.atim; From dc1bc52dd6c10b99041f9e6189d6fd3541c714c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 17 Oct 2025 00:36:16 +0200 Subject: [PATCH 5/9] std.os.linux: retranslate F_* constants and Flock struct, and move out of arch bits Flock is now equivalent to struct flock64, and the related F.* constants map to the 64-bit variants on 32-bit systems. --- lib/std/os/linux.zig | 68 ++++++++++++++++++++++++++++++-- lib/std/os/linux/aarch64.zig | 35 ---------------- lib/std/os/linux/arm.zig | 36 ----------------- lib/std/os/linux/hexagon.zig | 33 ---------------- lib/std/os/linux/loongarch64.zig | 24 ----------- lib/std/os/linux/m68k.zig | 34 ---------------- lib/std/os/linux/mips.zig | 36 ----------------- lib/std/os/linux/mips64.zig | 36 ----------------- lib/std/os/linux/powerpc.zig | 34 ---------------- lib/std/os/linux/powerpc64.zig | 35 ---------------- lib/std/os/linux/riscv32.zig | 33 ---------------- lib/std/os/linux/riscv64.zig | 33 ---------------- lib/std/os/linux/s390x.zig | 28 ------------- lib/std/os/linux/sparc64.zig | 31 --------------- lib/std/os/linux/x86.zig | 32 --------------- lib/std/os/linux/x86_64.zig | 38 ++---------------- 16 files changed, 68 insertions(+), 498 deletions(-) diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index a3b675a379..ce5eec59f5 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -88,8 +88,6 @@ pub fn clone( } pub const ARCH = arch_bits.ARCH; -pub const F = arch_bits.F; -pub const Flock = arch_bits.Flock; pub const HWCAP = arch_bits.HWCAP; pub const SC = arch_bits.SC; pub const Stat = arch_bits.Stat; @@ -110,7 +108,7 @@ pub const IOCTL = @import("linux/ioctl.zig"); pub const SECCOMP = @import("linux/seccomp.zig"); pub const syscalls = @import("linux/syscalls.zig"); -pub const SYS = switch (@import("builtin").cpu.arch) { +pub const SYS = switch (native_arch) { .arc => syscalls.Arc, .arm, .armeb, .thumb, .thumbeb => syscalls.Arm, .aarch64, .aarch64_be => syscalls.Arm64, @@ -1596,6 +1594,70 @@ pub fn waitid(id_type: P, id: i32, infop: *siginfo_t, flags: u32) usize { return syscall5(.waitid, @intFromEnum(id_type), @as(usize, @bitCast(@as(isize, id))), @intFromPtr(infop), flags, 0); } +pub const F = struct { + pub const DUPFD = 0; + pub const GETFD = 1; + pub const SETFD = 2; + pub const GETFL = 3; + pub const SETFL = 4; + + pub const GETLK = GET_SET_LK.GETLK; + pub const SETLK = GET_SET_LK.SETLK; + pub const SETLKW = GET_SET_LK.SETLKW; + + const GET_SET_LK = if (@sizeOf(usize) == 64) extern struct { + pub const GETLK = if (is_mips) 14 else if (is_sparc) 7 else 5; + pub const SETLK = if (is_mips) 6 else if (is_sparc) 8 else 6; + pub const SETLKW = if (is_mips) 7 else if (is_sparc) 9 else 7; + } else extern struct { + // Ensure that 32-bit code uses the large-file variants (GETLK64, etc). + + pub const GETLK = if (is_mips) 33 else 12; + pub const SETLK = if (is_mips) 34 else 13; + pub const SETLKW = if (is_mips) 35 else 14; + }; + + pub const SETOWN = if (is_mips) 24 else if (is_sparc) 6 else 8; + pub const GETOWN = if (is_mips) 23 else if (is_sparc) 5 else 9; + + pub const SETSIG = 10; + pub const GETSIG = 11; + + pub const SETOWN_EX = 15; + pub const GETOWN_EX = 16; + + pub const GETOWNER_UIDS = 17; + + pub const OFD_GETLK = 36; + pub const OFD_SETLK = 37; + pub const OFD_SETLKW = 38; + + pub const RDLCK = if (is_sparc) 1 else 0; + pub const WRLCK = if (is_sparc) 2 else 1; + pub const UNLCK = if (is_sparc) 3 else 2; +}; + +pub const F_OWNER = enum(i32) { + TID = 0, + PID = 1, + PGRP = 2, + _, +}; + +pub const f_owner_ex = extern struct { + type: F_OWNER, + pid: pid_t, +}; + +pub const Flock = extern struct { + type: i16, + whence: i16, + start: off_t, + len: off_t, + pid: pid_t, + _unused: if (is_sparc) i16 else void, +}; + pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) usize { if (@hasField(SYS, "fcntl64")) { return syscall3(.fcntl64, @as(usize, @bitCast(@as(isize, fd))), @as(usize, @bitCast(@as(isize, cmd))), arg); diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig index 5f3d68549e..a27359bb04 100644 --- a/lib/std/os/linux/aarch64.zig +++ b/lib/std/os/linux/aarch64.zig @@ -150,46 +150,11 @@ pub fn restore_rt() callconv(.naked) noreturn { } } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const VDSO = struct { pub const CGT_SYM = "__kernel_clock_gettime"; pub const CGT_VER = "LINUX_2.6.39"; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i64; diff --git a/lib/std/os/linux/arm.zig b/lib/std/os/linux/arm.zig index 15c371c53c..6cdca3787e 100644 --- a/lib/std/os/linux/arm.zig +++ b/lib/std/os/linux/arm.zig @@ -159,32 +159,6 @@ pub fn restore_rt() callconv(.naked) noreturn { } } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const GETLK = 12; - pub const SETLK = 13; - pub const SETLKW = 14; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_2.6"; @@ -216,16 +190,6 @@ pub const HWCAP = struct { pub const EVTSTRM = 1 << 21; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - __pad0: [4]u8, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i32; diff --git a/lib/std/os/linux/hexagon.zig b/lib/std/os/linux/hexagon.zig index c42de2ac25..70142617b9 100644 --- a/lib/std/os/linux/hexagon.zig +++ b/lib/std/os/linux/hexagon.zig @@ -130,39 +130,6 @@ pub fn clone() callconv(.naked) u32 { ); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i32; diff --git a/lib/std/os/linux/loongarch64.zig b/lib/std/os/linux/loongarch64.zig index da2caa3d06..3e80197812 100644 --- a/lib/std/os/linux/loongarch64.zig +++ b/lib/std/os/linux/loongarch64.zig @@ -176,30 +176,6 @@ pub const Stat = extern struct { } }; -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_5.10"; diff --git a/lib/std/os/linux/m68k.zig b/lib/std/os/linux/m68k.zig index 9febdc3087..ff2e716c00 100644 --- a/lib/std/os/linux/m68k.zig +++ b/lib/std/os/linux/m68k.zig @@ -151,32 +151,6 @@ pub fn restore_rt() callconv(.naked) noreturn { ); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const GETLK = 12; - pub const SETLK = 13; - pub const SETLKW = 14; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i32; @@ -186,14 +160,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, -}; - pub const Stat = extern struct { dev: dev_t, __pad: i16, diff --git a/lib/std/os/linux/mips.zig b/lib/std/os/linux/mips.zig index 3e16042ea0..0a019cc2c8 100644 --- a/lib/std/os/linux/mips.zig +++ b/lib/std/os/linux/mips.zig @@ -243,47 +243,11 @@ pub fn clone() callconv(.naked) u32 { ); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 24; - pub const GETOWN = 23; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const GETLK = 33; - pub const SETLK = 34; - pub const SETLKW = 35; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_2.6"; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - __pad0: [4]u8, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - pub const blksize_t = u32; pub const nlink_t = u32; pub const time_t = i32; diff --git a/lib/std/os/linux/mips64.zig b/lib/std/os/linux/mips64.zig index 477fb32c61..53daa99e4a 100644 --- a/lib/std/os/linux/mips64.zig +++ b/lib/std/os/linux/mips64.zig @@ -222,47 +222,11 @@ pub fn clone() callconv(.naked) u64 { ); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 24; - pub const GETOWN = 23; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const GETLK = 33; - pub const SETLK = 34; - pub const SETLKW = 35; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_2.6"; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - __pad0: [4]u8, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - pub const blksize_t = u32; pub const nlink_t = u32; pub const time_t = i32; diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig index d79bcf5e94..2372668c8b 100644 --- a/lib/std/os/linux/powerpc.zig +++ b/lib/std/os/linux/powerpc.zig @@ -262,45 +262,11 @@ pub fn restore_rt() callconv(.naked) noreturn { } } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const GETLK = 12; - pub const SETLK = 13; - pub const SETLKW = 14; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; -}; - pub const VDSO = struct { pub const CGT_SYM = "__kernel_clock_gettime"; pub const CGT_VER = "LINUX_2.6.15"; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i32; diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig index 14c2f47bc7..cad7143f11 100644 --- a/lib/std/os/linux/powerpc64.zig +++ b/lib/std/os/linux/powerpc64.zig @@ -247,46 +247,11 @@ pub fn restore_rt() callconv(.naked) noreturn { } } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const VDSO = struct { pub const CGT_SYM = "__kernel_clock_gettime"; pub const CGT_VER = "LINUX_2.6.15"; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - pub const blksize_t = i64; pub const nlink_t = u64; pub const time_t = i64; diff --git a/lib/std/os/linux/riscv32.zig b/lib/std/os/linux/riscv32.zig index 896dbb456b..7d32c9d6b8 100644 --- a/lib/std/os/linux/riscv32.zig +++ b/lib/std/os/linux/riscv32.zig @@ -135,30 +135,6 @@ pub fn clone() callconv(.naked) u32 { ); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i64; @@ -168,15 +144,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - // The `stat` definition used by the Linux kernel. pub const Stat = extern struct { dev: dev_t, diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig index 6091c386ff..9c1d172ede 100644 --- a/lib/std/os/linux/riscv64.zig +++ b/lib/std/os/linux/riscv64.zig @@ -135,30 +135,6 @@ pub fn clone() callconv(.naked) u64 { ); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i64; @@ -168,15 +144,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, - __unused: [4]u8, -}; - // The `stat` definition used by the Linux kernel. pub const Stat = extern struct { dev: dev_t, diff --git a/lib/std/os/linux/s390x.zig b/lib/std/os/linux/s390x.zig index fc1e79db85..c6b02946d1 100644 --- a/lib/std/os/linux/s390x.zig +++ b/lib/std/os/linux/s390x.zig @@ -157,26 +157,6 @@ pub fn restore_rt() callconv(.naked) noreturn { ); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const blksize_t = i64; pub const nlink_t = u64; pub const time_t = i64; @@ -186,14 +166,6 @@ pub const ino_t = u64; pub const dev_t = u64; pub const blkcnt_t = i64; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, -}; - // The `stat` definition used by the Linux kernel. pub const Stat = extern struct { dev: dev_t, diff --git a/lib/std/os/linux/sparc64.zig b/lib/std/os/linux/sparc64.zig index 7365d85c76..bafb09ef44 100644 --- a/lib/std/os/linux/sparc64.zig +++ b/lib/std/os/linux/sparc64.zig @@ -236,42 +236,11 @@ pub fn restore_rt() callconv(.c) void { : .{ .memory = true, .icc = true, .o0 = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - - pub const SETOWN = 5; - pub const GETOWN = 6; - pub const GETLK = 7; - pub const SETLK = 8; - pub const SETLKW = 9; - - pub const RDLCK = 1; - pub const WRLCK = 2; - pub const UNLCK = 3; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - - pub const GETOWNER_UIDS = 17; -}; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_2.6"; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, -}; - pub const off_t = i64; pub const ino_t = u64; pub const time_t = i64; diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig index 4f72c3cc63..c2d921bf93 100644 --- a/lib/std/os/linux/x86.zig +++ b/lib/std/os/linux/x86.zig @@ -200,43 +200,11 @@ pub fn restore_rt() callconv(.naked) noreturn { } } -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - pub const GETLK = 12; - pub const SETLK = 13; - pub const SETLKW = 14; - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - pub const GETOWNER_UIDS = 17; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; -}; - pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; pub const CGT_VER = "LINUX_2.6"; }; -pub const ARCH = struct {}; - -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, -}; - pub const blksize_t = i32; pub const nlink_t = u32; pub const time_t = i32; diff --git a/lib/std/os/linux/x86_64.zig b/lib/std/os/linux/x86_64.zig index 79381c8b58..05df72d991 100644 --- a/lib/std/os/linux/x86_64.zig +++ b/lib/std/os/linux/x86_64.zig @@ -151,29 +151,9 @@ pub const time_t = i64; pub const nlink_t = u64; pub const blksize_t = i64; pub const blkcnt_t = i64; - -pub const F = struct { - pub const DUPFD = 0; - pub const GETFD = 1; - pub const SETFD = 2; - pub const GETFL = 3; - pub const SETFL = 4; - pub const GETLK = 5; - pub const SETLK = 6; - pub const SETLKW = 7; - pub const SETOWN = 8; - pub const GETOWN = 9; - pub const SETSIG = 10; - pub const GETSIG = 11; - - pub const SETOWN_EX = 15; - pub const GETOWN_EX = 16; - pub const GETOWNER_UIDS = 17; - - pub const RDLCK = 0; - pub const WRLCK = 1; - pub const UNLCK = 2; -}; +pub const off_t = i64; +pub const ino_t = u64; +pub const dev_t = u64; pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; @@ -190,18 +170,6 @@ pub const ARCH = struct { pub const GET_GS = 0x1004; }; -pub const Flock = extern struct { - type: i16, - whence: i16, - start: off_t, - len: off_t, - pid: pid_t, -}; - -pub const off_t = i64; -pub const ino_t = u64; -pub const dev_t = u64; - // The `stat` definition used by the Linux kernel. pub const Stat = extern struct { dev: dev_t, From aa8e53908a355f42551b7fb51cf78b197bfbd851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 17 Oct 2025 01:01:27 +0200 Subject: [PATCH 6/9] std.os.linux: clean up a bunch of dead consts --- lib/std/os/linux/aarch64.zig | 32 +++++++-------------- lib/std/os/linux/arm.zig | 35 ++++++++--------------- lib/std/os/linux/hexagon.zig | 29 ++++++------------- lib/std/os/linux/loongarch64.zig | 28 ++++++------------- lib/std/os/linux/m68k.zig | 27 ++++++------------ lib/std/os/linux/mips.zig | 48 ++++++++------------------------ lib/std/os/linux/mips64.zig | 24 ++++------------ lib/std/os/linux/powerpc.zig | 32 +++++++-------------- lib/std/os/linux/powerpc64.zig | 32 +++++++-------------- lib/std/os/linux/riscv32.zig | 29 ++++++------------- lib/std/os/linux/riscv64.zig | 29 ++++++------------- lib/std/os/linux/s390x.zig | 29 ++++++------------- lib/std/os/linux/sparc64.zig | 46 +++++++++++------------------- lib/std/os/linux/thumb.zig | 3 +- lib/std/os/linux/x86.zig | 34 ++++++++-------------- lib/std/os/linux/x86_64.zig | 34 +++++++--------------- 16 files changed, 153 insertions(+), 338 deletions(-) diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig index a27359bb04..4977593ef5 100644 --- a/lib/std/os/linux/aarch64.zig +++ b/lib/std/os/linux/aarch64.zig @@ -1,18 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const socklen_t = linux.socklen_t; -const sockaddr = linux.sockaddr; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const pid_t = linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const timespec = std.os.linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u64 { return asm volatile ("svc #0" @@ -135,7 +123,7 @@ pub fn clone() callconv(.naked) u64 { pub const restore = restore_rt; pub fn restore_rt() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ mov x8, %[number] \\ svc #0 @@ -170,28 +158,28 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __pad: u64, size: off_t, blksize: blksize_t, __pad2: i32, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [2]u32, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/arm.zig b/lib/std/os/linux/arm.zig index 6cdca3787e..0a5b25f9f0 100644 --- a/lib/std/os/linux/arm.zig +++ b/lib/std/os/linux/arm.zig @@ -1,17 +1,6 @@ +const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const socklen_t = linux.socklen_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const pid_t = linux.pid_t; -const sockaddr = linux.sockaddr; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { return asm volatile ("svc #0" @@ -128,7 +117,7 @@ pub fn clone() callconv(.naked) u32 { } pub fn restore() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ mov r7, %[number] \\ svc #0 @@ -144,7 +133,7 @@ pub fn restore() callconv(.naked) noreturn { } pub fn restore_rt() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ mov r7, %[number] \\ svc #0 @@ -206,27 +195,27 @@ pub const Stat = extern struct { __ino_truncated: u32, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __rdev_padding: u32, size: off_t, blksize: blksize_t, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, ino: ino_t, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/hexagon.zig b/lib/std/os/linux/hexagon.zig index 70142617b9..41bcaa6d93 100644 --- a/lib/std/os/linux/hexagon.zig +++ b/lib/std/os/linux/hexagon.zig @@ -1,17 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const linux = std.os.linux; -const SYS = linux.SYS; -const uid_t = std.os.linux.uid_t; -const gid_t = std.os.linux.gid_t; -const pid_t = std.os.linux.pid_t; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const timespec = std.os.linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { return asm volatile ("trap0(#1)" @@ -145,28 +134,28 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __pad: u32, size: off_t, blksize: blksize_t, __pad2: i32, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [2]u32, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/loongarch64.zig b/lib/std/os/linux/loongarch64.zig index 3e80197812..41450c9976 100644 --- a/lib/std/os/linux/loongarch64.zig +++ b/lib/std/os/linux/loongarch64.zig @@ -1,16 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const linux = std.os.linux; -const SYS = linux.SYS; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u64 { return asm volatile ( @@ -150,28 +140,28 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, _pad1: u64, size: off_t, blksize: blksize_t, _pad2: i32, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, _pad3: [2]u32, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/m68k.zig b/lib/std/os/linux/m68k.zig index ff2e716c00..29d9adf1f7 100644 --- a/lib/std/os/linux/m68k.zig +++ b/lib/std/os/linux/m68k.zig @@ -1,15 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const linux = std.os.linux; -const SYS = linux.SYS; -const uid_t = std.os.linux.uid_t; -const gid_t = std.os.linux.uid_t; -const pid_t = std.os.linux.pid_t; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const timespec = std.os.linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { return asm volatile ("trap #0" @@ -166,27 +157,27 @@ pub const Stat = extern struct { __ino_truncated: i32, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __pad2: i16, size: off_t, blksize: blksize_t, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, ino: ino_t, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/mips.zig b/lib/std/os/linux/mips.zig index 0a019cc2c8..7468396a09 100644 --- a/lib/std/os/linux/mips.zig +++ b/lib/std/os/linux/mips.zig @@ -1,18 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const socklen_t = linux.socklen_t; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const pid_t = linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { return asm volatile ( @@ -264,39 +252,27 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __pad1: [2]u32, size: off_t, - atim: i32, - atim_nsec: i32, - mtim: i32, - mtim_nsec: i32, - ctim: i32, - ctim_nsec: i32, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, blksize: blksize_t, __pad3: u32, blocks: blkcnt_t, - pub fn atime(self: @This()) timespec { - return .{ - .sec = self.atim, - .nsec = self.atim_nsec, - }; + pub fn atime(self: @This()) std.os.linux.timespec { + return self.atim; } - pub fn mtime(self: @This()) timespec { - return .{ - .sec = self.mtim, - .nsec = self.mtim_nsec, - }; + pub fn mtime(self: @This()) std.os.linux.timespec { + return self.mtim; } - pub fn ctime(self: @This()) timespec { - return .{ - .sec = self.ctim, - .nsec = self.ctim_nsec, - }; + pub fn ctime(self: @This()) std.os.linux.timespec { + return self.ctim; } }; diff --git a/lib/std/os/linux/mips64.zig b/lib/std/os/linux/mips64.zig index 53daa99e4a..187a093c43 100644 --- a/lib/std/os/linux/mips64.zig +++ b/lib/std/os/linux/mips64.zig @@ -1,18 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const socklen_t = linux.socklen_t; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const pid_t = linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u64 { return asm volatile ( @@ -243,8 +231,8 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __pad1: [2]u32, // -1 because our dev_t is u64 (kernel dev_t is really u32). size: off_t, @@ -258,21 +246,21 @@ pub const Stat = extern struct { __pad3: u32, blocks: blkcnt_t, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return .{ .sec = self.atim, .nsec = self.atim_nsec, }; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return .{ .sec = self.mtim, .nsec = self.mtim_nsec, }; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return .{ .sec = self.ctim, .nsec = self.ctim_nsec, diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig index 2372668c8b..46197d9085 100644 --- a/lib/std/os/linux/powerpc.zig +++ b/lib/std/os/linux/powerpc.zig @@ -1,18 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const socklen_t = linux.socklen_t; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const pid_t = linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { // r0 is both an input register and a clobber. musl and glibc achieve this with @@ -247,7 +235,7 @@ pub fn clone() callconv(.naked) u32 { pub const restore = restore_rt; pub fn restore_rt() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ li 0, %[number] \\ sc @@ -282,27 +270,27 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __rdev_padding: i16, size: off_t, blksize: blksize_t, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [2]u32, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig index cad7143f11..6ff666910f 100644 --- a/lib/std/os/linux/powerpc64.zig +++ b/lib/std/os/linux/powerpc64.zig @@ -1,18 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const socklen_t = linux.socklen_t; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const pid_t = linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u64 { // r0 is both an input register and a clobber. musl and glibc achieve this with @@ -232,7 +220,7 @@ pub fn clone() callconv(.naked) u64 { pub const restore = restore_rt; pub fn restore_rt() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ li 0, %[number] \\ sc @@ -267,26 +255,26 @@ pub const Stat = extern struct { ino: ino_t, nlink: nlink_t, mode: mode_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, size: off_t, blksize: blksize_t, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [3]u64, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/riscv32.zig b/lib/std/os/linux/riscv32.zig index 7d32c9d6b8..34f73506a1 100644 --- a/lib/std/os/linux/riscv32.zig +++ b/lib/std/os/linux/riscv32.zig @@ -1,17 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const linux = std.os.linux; -const SYS = linux.SYS; -const uid_t = std.os.linux.uid_t; -const gid_t = std.os.linux.gid_t; -const pid_t = std.os.linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const timespec = std.os.linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { return asm volatile ("ecall" @@ -150,28 +139,28 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __pad: u32, size: off_t, blksize: blksize_t, __pad2: i32, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [2]u32, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig index 9c1d172ede..e404693df0 100644 --- a/lib/std/os/linux/riscv64.zig +++ b/lib/std/os/linux/riscv64.zig @@ -1,17 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const linux = std.os.linux; -const SYS = linux.SYS; -const uid_t = std.os.linux.uid_t; -const gid_t = std.os.linux.gid_t; -const pid_t = std.os.linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const timespec = std.os.linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u64 { return asm volatile ("ecall" @@ -150,28 +139,28 @@ pub const Stat = extern struct { ino: ino_t, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __pad: u64, size: off_t, blksize: blksize_t, __pad2: i32, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [2]u32, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/s390x.zig b/lib/std/os/linux/s390x.zig index c6b02946d1..13b6bfd512 100644 --- a/lib/std/os/linux/s390x.zig +++ b/lib/std/os/linux/s390x.zig @@ -1,17 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const linux = std.os.linux; -const SYS = linux.SYS; -const uid_t = std.os.linux.uid_t; -const gid_t = std.os.linux.gid_t; -const pid_t = std.os.linux.pid_t; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const timespec = std.os.linux.timespec; -const stack_t = std.os.linux.stack_t; -const sigset_t = std.os.linux.sigset_t; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u64 { return asm volatile ("svc 0" @@ -172,26 +161,26 @@ pub const Stat = extern struct { ino: ino_t, nlink: nlink_t, mode: mode_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, size: off_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, blksize: blksize_t, blocks: blkcnt_t, __unused: [3]c_ulong, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/sparc64.zig b/lib/std/os/linux/sparc64.zig index bafb09ef44..7bf1f24359 100644 --- a/lib/std/os/linux/sparc64.zig +++ b/lib/std/os/linux/sparc64.zig @@ -1,19 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const pid_t = linux.pid_t; -const uid_t = linux.uid_t; -const clock_t = linux.clock_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; - -const linux = std.os.linux; -const SYS = linux.SYS; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall_pipe(fd: *[2]i32) u64 { return asm volatile ( @@ -252,34 +239,35 @@ pub const blkcnt_t = i64; // The `stat64` definition used by the kernel. pub const Stat = extern struct { - dev: u64, - ino: u64, - nlink: u64, + dev: dev_t, + ino: ino_t, + nlink: nlink_t, + _pad: i32, - mode: u32, - uid: u32, - gid: u32, + mode: mode_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, __pad0: u32, - rdev: u64, + rdev: dev_t, size: i64, - blksize: i64, - blocks: i64, + blksize: blksize_t, + blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [3]u64, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/thumb.zig b/lib/std/os/linux/thumb.zig index cd0daec4d9..90200da744 100644 --- a/lib/std/os/linux/thumb.zig +++ b/lib/std/os/linux/thumb.zig @@ -4,8 +4,7 @@ //! Save and restore r7 around the syscall without touching the stack pointer not //! to break the frame chain. const std = @import("../../std.zig"); -const linux = std.os.linux; -const SYS = linux.SYS; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { var buf: [2]u32 = .{ @intFromEnum(number), undefined }; diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig index c2d921bf93..3770607f55 100644 --- a/lib/std/os/linux/x86.zig +++ b/lib/std/os/linux/x86.zig @@ -1,18 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const socklen_t = linux.socklen_t; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const pid_t = linux.pid_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u32 { return asm volatile ("int $0x80" @@ -169,7 +157,7 @@ pub fn clone() callconv(.naked) u32 { } pub fn restore() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ movl %[number], %%eax \\ int $0x80 @@ -185,7 +173,7 @@ pub fn restore() callconv(.naked) noreturn { } pub fn restore_rt() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ movl %[number], %%eax \\ int $0x80 @@ -221,27 +209,27 @@ pub const Stat = extern struct { __ino_truncated: u32, mode: mode_t, nlink: nlink_t, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, rdev: dev_t, __rdev_padding: u32, size: off_t, blksize: blksize_t, blocks: blkcnt_t, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, ino: ino_t, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; diff --git a/lib/std/os/linux/x86_64.zig b/lib/std/os/linux/x86_64.zig index 05df72d991..d9c2d17f09 100644 --- a/lib/std/os/linux/x86_64.zig +++ b/lib/std/os/linux/x86_64.zig @@ -1,20 +1,6 @@ const builtin = @import("builtin"); const std = @import("../../std.zig"); -const maxInt = std.math.maxInt; -const linux = std.os.linux; -const SYS = linux.SYS; -const iovec = std.posix.iovec; -const iovec_const = std.posix.iovec_const; - -const pid_t = linux.pid_t; -const uid_t = linux.uid_t; -const gid_t = linux.gid_t; -const clock_t = linux.clock_t; -const stack_t = linux.stack_t; -const sigset_t = linux.sigset_t; -const sockaddr = linux.sockaddr; -const socklen_t = linux.socklen_t; -const timespec = linux.timespec; +const SYS = std.os.linux.SYS; pub fn syscall0(number: SYS) u64 { return asm volatile ("syscall" @@ -131,7 +117,7 @@ pub fn clone() callconv(.naked) u64 { pub const restore = restore_rt; pub fn restore_rt() callconv(.naked) noreturn { - switch (@import("builtin").zig_backend) { + switch (builtin.zig_backend) { .stage2_c => asm volatile ( \\ movl %[number], %%eax \\ syscall @@ -177,28 +163,28 @@ pub const Stat = extern struct { nlink: u64, mode: u32, - uid: uid_t, - gid: gid_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, __pad0: u32, rdev: dev_t, size: off_t, blksize: i64, blocks: i64, - atim: timespec, - mtim: timespec, - ctim: timespec, + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, __unused: [3]i64, - pub fn atime(self: @This()) timespec { + pub fn atime(self: @This()) std.os.linux.timespec { return self.atim; } - pub fn mtime(self: @This()) timespec { + pub fn mtime(self: @This()) std.os.linux.timespec { return self.mtim; } - pub fn ctime(self: @This()) timespec { + pub fn ctime(self: @This()) std.os.linux.timespec { return self.ctim; } }; From 502eca7b0908cc8f0fa334fde4c3f7e4fc067027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 17 Oct 2025 01:12:07 +0200 Subject: [PATCH 7/9] std.os.linux: add incomplete mipsn32 arch bits file This is very likely full of wrong stuff. It's effectively just a copy of the mips64 file - needed because the former stopped using usize/isize. To be clear, this is no more broken than the old situation was; this just makes the brokenness explicit. --- lib/std/os/linux.zig | 5 +- lib/std/os/linux/mipsn32.zig | 271 +++++++++++++++++++++++++++++++++++ 2 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 lib/std/os/linux/mipsn32.zig diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index ce5eec59f5..df9e822c07 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -43,7 +43,10 @@ const arch_bits = switch (native_arch) { .loongarch64 => @import("linux/loongarch64.zig"), .m68k => @import("linux/m68k.zig"), .mips, .mipsel => @import("linux/mips.zig"), - .mips64, .mips64el => @import("linux/mips64.zig"), + .mips64, .mips64el => switch (builtin.abi) { + .gnuabin32, .muslabin32 => @import("linux/mipsn32.zig"), + else => @import("linux/mips64.zig"), + }, .powerpc, .powerpcle => @import("linux/powerpc.zig"), .powerpc64, .powerpc64le => @import("linux/powerpc64.zig"), .s390x => @import("linux/s390x.zig"), diff --git a/lib/std/os/linux/mipsn32.zig b/lib/std/os/linux/mipsn32.zig new file mode 100644 index 0000000000..59a4cf0549 --- /dev/null +++ b/lib/std/os/linux/mipsn32.zig @@ -0,0 +1,271 @@ +// TODO: A lot of this file is very likely wrong. + +const builtin = @import("builtin"); +const std = @import("../../std.zig"); +const SYS = std.os.linux.SYS; + +pub fn syscall0(number: SYS) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + : .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall_pipe(fd: *[2]i32) u32 { + return asm volatile ( + \\ .set noat + \\ .set noreorder + \\ syscall + \\ beq $7, $zero, 1f + \\ nop + \\ b 2f + \\ subu $2, $0, $2 + \\ 1: + \\ sw $2, 0($4) + \\ sw $3, 4($4) + \\ 2: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(SYS.pipe)), + [fd] "{$4}" (fd), + : .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall1(number: SYS, arg1: u32) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ nop + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + [arg1] "{$4}" (arg1), + : .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + [arg1] "{$4}" (arg1), + [arg2] "{$5}" (arg2), + : .{ .r1 = true, .r3 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + [arg1] "{$4}" (arg1), + [arg2] "{$5}" (arg2), + [arg3] "{$6}" (arg3), + : .{ .r1 = true, .r3 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + [arg1] "{$4}" (arg1), + [arg2] "{$5}" (arg2), + [arg3] "{$6}" (arg3), + [arg4] "{$7}" (arg4), + : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + [arg1] "{$4}" (arg1), + [arg2] "{$5}" (arg2), + [arg3] "{$6}" (arg3), + [arg4] "{$7}" (arg4), + [arg5] "{$8}" (arg5), + : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall6( + number: SYS, + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + [arg1] "{$4}" (arg1), + [arg2] "{$5}" (arg2), + [arg3] "{$6}" (arg3), + [arg4] "{$7}" (arg4), + [arg5] "{$8}" (arg5), + [arg6] "{$9}" (arg6), + : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn syscall7( + number: SYS, + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, + arg7: u32, +) u32 { + return asm volatile ( + \\ syscall + \\ beq $7, $zero, 1f + \\ blez $2, 1f + \\ dsubu $2, $0, $2 + \\ 1: + : [ret] "={$2}" (-> u32), + : [number] "{$2}" (@intFromEnum(number)), + [arg1] "{$4}" (arg1), + [arg2] "{$5}" (arg2), + [arg3] "{$6}" (arg3), + [arg4] "{$7}" (arg4), + [arg5] "{$8}" (arg5), + [arg6] "{$9}" (arg6), + [arg7] "{$10}" (arg7), + : .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); +} + +pub fn clone() callconv(.naked) u32 { + // __clone(func, stack, flags, arg, ptid, tls, ctid) + // 3, 4, 5, 6, 7, 8, 9 + // + // syscall(SYS_clone, flags, stack, ptid, tls, ctid) + // 2 4, 5, 6, 7, 8 + asm volatile ( + \\ # Save function pointer and argument pointer on new thread stack + \\ and $5, $5, -16 + \\ dsubu $5, $5, 16 + \\ sd $4, 0($5) + \\ sd $7, 8($5) + \\ # Shuffle (fn,sp,fl,arg,ptid,tls,ctid) to (fl,sp,ptid,tls,ctid) + \\ move $4, $6 + \\ move $6, $8 + \\ move $7, $9 + \\ move $8, $10 + \\ li $2, 5055 # SYS_clone + \\ syscall + \\ beq $7, $0, 1f + \\ nop + \\ jr $ra + \\ dsubu $2, $0, $2 + \\1: + \\ beq $2, $0, 1f + \\ nop + \\ jr $ra + \\ nop + \\1: + ); + if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile ( + \\ .cfi_undefined $ra + ); + asm volatile ( + \\ move $fp, $zero + \\ move $ra, $zero + \\ + \\ ld $25, 0($sp) + \\ ld $4, 8($sp) + \\ jalr $25 + \\ nop + \\ move $4, $2 + \\ li $2, 5058 # SYS_exit + \\ syscall + ); +} + +pub const VDSO = struct { + pub const CGT_SYM = "__vdso_clock_gettime"; + pub const CGT_VER = "LINUX_2.6"; +}; + +pub const blksize_t = u32; +pub const nlink_t = u32; +pub const time_t = i32; +pub const mode_t = u32; +pub const off_t = i64; +pub const ino_t = u64; +pub const dev_t = u64; +pub const blkcnt_t = i64; + +// The `stat` definition used by the Linux kernel. +pub const Stat = extern struct { + dev: dev_t, + __pad0: [2]u32, // -1 because our dev_t is u64 (kernel dev_t is really u32). + ino: ino_t, + mode: mode_t, + nlink: nlink_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, + rdev: dev_t, + __pad1: [2]u32, // -1 because our dev_t is u64 (kernel dev_t is really u32). + size: off_t, + atim: u32, + atim_nsec: u32, + mtim: u32, + mtim_nsec: u32, + ctim: u32, + ctim_nsec: u32, + blksize: blksize_t, + __pad3: u32, + blocks: blkcnt_t, + + pub fn atime(self: @This()) std.os.linux.timespec { + return .{ + .sec = self.atim, + .nsec = self.atim_nsec, + }; + } + + pub fn mtime(self: @This()) std.os.linux.timespec { + return .{ + .sec = self.mtim, + .nsec = self.mtim_nsec, + }; + } + + pub fn ctime(self: @This()) std.os.linux.timespec { + return .{ + .sec = self.ctim, + .nsec = self.ctim_nsec, + }; + } +}; From d5481e65365f78c9ca20c29882f28bf80129e579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 17 Oct 2025 01:18:54 +0200 Subject: [PATCH 8/9] std.os.linux: add incomplete x32 arch bits file This is very likely full of wrong stuff. It's effectively just a copy of the x86_64 file - needed because the former stopped using usize/isize. To be clear, this is no more broken than the old situation was; this just makes the brokenness explicit. --- lib/std/os/linux.zig | 21 +++-- lib/std/os/linux/x32.zig | 192 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+), 9 deletions(-) create mode 100644 lib/std/os/linux/x32.zig diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index df9e822c07..f5c5f09fa4 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -32,14 +32,9 @@ test { } const arch_bits = switch (native_arch) { - .x86 => @import("linux/x86.zig"), - .x86_64 => @import("linux/x86_64.zig"), .aarch64, .aarch64_be => @import("linux/aarch64.zig"), .arm, .armeb, .thumb, .thumbeb => @import("linux/arm.zig"), .hexagon => @import("linux/hexagon.zig"), - .riscv32 => @import("linux/riscv32.zig"), - .riscv64 => @import("linux/riscv64.zig"), - .sparc64 => @import("linux/sparc64.zig"), .loongarch64 => @import("linux/loongarch64.zig"), .m68k => @import("linux/m68k.zig"), .mips, .mipsel => @import("linux/mips.zig"), @@ -49,7 +44,15 @@ const arch_bits = switch (native_arch) { }, .powerpc, .powerpcle => @import("linux/powerpc.zig"), .powerpc64, .powerpc64le => @import("linux/powerpc64.zig"), + .riscv32 => @import("linux/riscv32.zig"), + .riscv64 => @import("linux/riscv64.zig"), .s390x => @import("linux/s390x.zig"), + .sparc64 => @import("linux/sparc64.zig"), + .x86 => @import("linux/x86.zig"), + .x86_64 => switch (builtin.abi) { + .gnux32, .muslx32 => @import("linux/x32.zig"), + else => @import("linux/x86_64.zig"), + }, else => struct {}, }; @@ -113,8 +116,8 @@ pub const SECCOMP = @import("linux/seccomp.zig"); pub const syscalls = @import("linux/syscalls.zig"); pub const SYS = switch (native_arch) { .arc => syscalls.Arc, - .arm, .armeb, .thumb, .thumbeb => syscalls.Arm, .aarch64, .aarch64_be => syscalls.Arm64, + .arm, .armeb, .thumb, .thumbeb => syscalls.Arm, .csky => syscalls.CSky, .hexagon => syscalls.Hexagon, .loongarch64 => syscalls.LoongArch64, @@ -124,20 +127,20 @@ pub const SYS = switch (native_arch) { .gnuabin32, .muslabin32 => syscalls.MipsN32, else => syscalls.MipsN64, }, + .or1k => syscalls.OpenRisc, + .powerpc, .powerpcle => syscalls.PowerPC, + .powerpc64, .powerpc64le => syscalls.PowerPC64, .riscv32 => syscalls.RiscV32, .riscv64 => syscalls.RiscV64, .s390x => syscalls.S390x, .sparc => syscalls.Sparc, .sparc64 => syscalls.Sparc64, - .powerpc, .powerpcle => syscalls.PowerPC, - .powerpc64, .powerpc64le => syscalls.PowerPC64, .x86 => syscalls.X86, .x86_64 => switch (builtin.abi) { .gnux32, .muslx32 => syscalls.X32, else => syscalls.X64, }, .xtensa => syscalls.Xtensa, - .or1k => syscalls.OpenRisc, else => @compileError("The Zig Standard Library is missing syscall definitions for the target CPU architecture"), }; diff --git a/lib/std/os/linux/x32.zig b/lib/std/os/linux/x32.zig new file mode 100644 index 0000000000..4335fac04b --- /dev/null +++ b/lib/std/os/linux/x32.zig @@ -0,0 +1,192 @@ +// TODO: A lot of this file is very likely wrong. + +const builtin = @import("builtin"); +const std = @import("../../std.zig"); +const SYS = std.os.linux.SYS; + +pub fn syscall0(number: SYS) u32 { + return asm volatile ("syscall" + : [ret] "={rax}" (-> u32), + : [number] "{rax}" (@intFromEnum(number)), + : .{ .rcx = true, .r11 = true, .memory = true }); +} + +pub fn syscall1(number: SYS, arg1: u32) u32 { + return asm volatile ("syscall" + : [ret] "={rax}" (-> u32), + : [number] "{rax}" (@intFromEnum(number)), + [arg1] "{rdi}" (arg1), + : .{ .rcx = true, .r11 = true, .memory = true }); +} + +pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 { + return asm volatile ("syscall" + : [ret] "={rax}" (-> u32), + : [number] "{rax}" (@intFromEnum(number)), + [arg1] "{rdi}" (arg1), + [arg2] "{rsi}" (arg2), + : .{ .rcx = true, .r11 = true, .memory = true }); +} + +pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 { + return asm volatile ("syscall" + : [ret] "={rax}" (-> u32), + : [number] "{rax}" (@intFromEnum(number)), + [arg1] "{rdi}" (arg1), + [arg2] "{rsi}" (arg2), + [arg3] "{rdx}" (arg3), + : .{ .rcx = true, .r11 = true, .memory = true }); +} + +pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 { + return asm volatile ("syscall" + : [ret] "={rax}" (-> u32), + : [number] "{rax}" (@intFromEnum(number)), + [arg1] "{rdi}" (arg1), + [arg2] "{rsi}" (arg2), + [arg3] "{rdx}" (arg3), + [arg4] "{r10}" (arg4), + : .{ .rcx = true, .r11 = true, .memory = true }); +} + +pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 { + return asm volatile ("syscall" + : [ret] "={rax}" (-> u32), + : [number] "{rax}" (@intFromEnum(number)), + [arg1] "{rdi}" (arg1), + [arg2] "{rsi}" (arg2), + [arg3] "{rdx}" (arg3), + [arg4] "{r10}" (arg4), + [arg5] "{r8}" (arg5), + : .{ .rcx = true, .r11 = true, .memory = true }); +} + +pub fn syscall6( + number: SYS, + arg1: u32, + arg2: u32, + arg3: u32, + arg4: u32, + arg5: u32, + arg6: u32, +) u32 { + return asm volatile ("syscall" + : [ret] "={rax}" (-> u32), + : [number] "{rax}" (@intFromEnum(number)), + [arg1] "{rdi}" (arg1), + [arg2] "{rsi}" (arg2), + [arg3] "{rdx}" (arg3), + [arg4] "{r10}" (arg4), + [arg5] "{r8}" (arg5), + [arg6] "{r9}" (arg6), + : .{ .rcx = true, .r11 = true, .memory = true }); +} + +pub fn clone() callconv(.naked) u32 { + asm volatile ( + \\ movl $56,%%eax // SYS_clone + \\ movq %%rdi,%%r11 + \\ movq %%rdx,%%rdi + \\ movq %%r8,%%rdx + \\ movq %%r9,%%r8 + \\ movq 8(%%rsp),%%r10 + \\ movq %%r11,%%r9 + \\ andq $-16,%%rsi + \\ subq $8,%%rsi + \\ movq %%rcx,(%%rsi) + \\ syscall + \\ testq %%rax,%%rax + \\ jz 1f + \\ retq + \\ + \\1: + ); + if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile ( + \\ .cfi_undefined %%rip + ); + asm volatile ( + \\ xorl %%ebp,%%ebp + \\ + \\ popq %%rdi + \\ callq *%%r9 + \\ movl %%eax,%%edi + \\ movl $60,%%eax // SYS_exit + \\ syscall + \\ + ); +} + +pub const restore = restore_rt; + +pub fn restore_rt() callconv(.naked) noreturn { + switch (builtin.zig_backend) { + .stage2_c => asm volatile ( + \\ movl %[number], %%eax + \\ syscall + : + : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), + ), + else => asm volatile ( + \\ syscall + : + : [number] "{rax}" (@intFromEnum(SYS.rt_sigreturn)), + ), + } +} + +pub const mode_t = u32; +pub const time_t = i32; +pub const nlink_t = u32; +pub const blksize_t = i32; +pub const blkcnt_t = i32; +pub const off_t = i64; +pub const ino_t = u64; +pub const dev_t = u64; + +pub const VDSO = struct { + pub const CGT_SYM = "__vdso_clock_gettime"; + pub const CGT_VER = "LINUX_2.6"; + + pub const GETCPU_SYM = "__vdso_getcpu"; + pub const GETCPU_VER = "LINUX_2.6"; +}; + +pub const ARCH = struct { + pub const SET_GS = 0x1001; + pub const SET_FS = 0x1002; + pub const GET_FS = 0x1003; + pub const GET_GS = 0x1004; +}; + +// The `stat` definition used by the Linux kernel. +pub const Stat = extern struct { + dev: dev_t, + ino: ino_t, + nlink: nlink_t, + + mode: mode_t, + uid: std.os.linux.uid_t, + gid: std.os.linux.gid_t, + __pad0: u32, + rdev: dev_t, + size: off_t, + blksize: blksize_t, + blocks: i64, + + atim: std.os.linux.timespec, + mtim: std.os.linux.timespec, + ctim: std.os.linux.timespec, + __unused: [3]i32, + + pub fn atime(self: @This()) std.os.linux.timespec { + return self.atim; + } + + pub fn mtime(self: @This()) std.os.linux.timespec { + return self.mtim; + } + + pub fn ctime(self: @This()) std.os.linux.timespec { + return self.ctim; + } +}; From 29fb9e4da7d60f32f7efe6d280a69e020cd117a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 17 Oct 2025 02:46:47 +0200 Subject: [PATCH 9/9] std.os.linux.tls: don't unnecessarily use std.posix --- lib/std/os/linux/tls.zig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/std/os/linux/tls.zig b/lib/std/os/linux/tls.zig index 4433727d9a..0c063e6df2 100644 --- a/lib/std/os/linux/tls.zig +++ b/lib/std/os/linux/tls.zig @@ -16,7 +16,6 @@ const math = std.math; const assert = std.debug.assert; const native_arch = @import("builtin").cpu.arch; const linux = std.os.linux; -const posix = std.posix; const page_size_min = std.heap.page_size_min; /// Represents an ELF TLS variant. @@ -523,7 +522,7 @@ pub fn initStatic(phdrs: []elf.Phdr) void { } inline fn mmap_tls(length: usize) usize { - const prot = posix.PROT.READ | posix.PROT.WRITE; + const prot = linux.PROT.READ | linux.PROT.WRITE; const flags: linux.MAP = .{ .TYPE = .PRIVATE, .ANONYMOUS = true }; if (@hasField(linux.SYS, "mmap2")) {