From 83bc24f58c98c7b2337f422b12bf6cf148cd2866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20B=C3=A4ckman?= <46724898+erikbackman@users.noreply.github.com> Date: Mon, 3 Mar 2025 13:12:45 +0100 Subject: [PATCH] Fix libc::stat on FreeBSD (x86_64) --- lib/std/libc/os/freebsd.c3 | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/lib/std/libc/os/freebsd.c3 b/lib/std/libc/os/freebsd.c3 index 39b81b24c..6782602f8 100644 --- a/lib/std/libc/os/freebsd.c3 +++ b/lib/std/libc/os/freebsd.c3 @@ -1,15 +1,14 @@ module libc @if(env::FREEBSD); -// Checked for x86_64, this is notoriously incorrect when comparing with Rust code etc +// Checked for x86_64 -def Blksize_t = $typefrom(env::X86_64 ? long.typeid : CInt.typeid); +def Blksize_t = int; def Nlink_t = $typefrom(env::X86_64 ? ulong.typeid : CUInt.typeid); -def Blkcnt_t = long; -def Ino_t = ulong; def Dev_t = ulong; -def Mode_t = uint; -def Ino64_t = ulong; -def Blkcnt64_t = long; +def Ino_t = ulong; +def Mode_t = ushort; +def Blkcnt_t = long; +def Fflags_t = uint; struct Stat @if(env::X86_64) { @@ -17,22 +16,24 @@ struct Stat @if(env::X86_64) Ino_t st_ino; Nlink_t st_nlink; Mode_t st_mode; + short __pad0; Uid_t st_uid; Gid_t st_gid; - CInt __pad0; + int __pad1; Dev_t st_rdev; + TimeSpec st_atime; + TimeSpec st_mtime; + TimeSpec st_ctime; + TimeSpec st_birthtime; Off_t st_size; - Blksize_t st_blksize; Blkcnt_t st_blocks; - Time_t st_atime; - long st_atime_nsec; - Time_t st_mtime; - long st_mtime_nsec; - Time_t st_ctime; - long st_ctime_nsec; - long[3] __unused; + Blksize_t st_blksize; + Fflags_t st_flags; + ulong st_gen; + ulong[10] st_spare; } +// TODO: Investigate if this needs to be fixed struct Stat @if(!env::X86_64) { Dev_t st_dev;