diff --git a/etc/libc-util.py b/etc/libc-util.py index fc5f81f832b5d..a117b57579027 100755 --- a/etc/libc-util.py +++ b/etc/libc-util.py @@ -344,8 +344,6 @@ class CheckAllTargets: # libc problems ("aarch64-unknown-nto-qnx800", "libc error, unsupported arch"), ("aarch64.*-gnu_ilp32.*time_bits=64", "libc error, time64 mismatches"), - ("armv6k-nintendo-3ds", "libc error, stat missing"), - ("armv7-sony-vita-newlibeabihf", "libc error, stat missing"), ("csky.*gnu.*time_bits=64", "libc error, time64 mismatches"), ("i686-pc-nto-qnx700", "libc error, unsupported arch"), ("managarm-mlibc", "libc error, unresolved import"), diff --git a/src/unix/newlib/generic.rs b/src/unix/newlib/generic.rs index c020e8e7702d4..a1a84da3babac 100644 --- a/src/unix/newlib/generic.rs +++ b/src/unix/newlib/generic.rs @@ -1,5 +1,4 @@ //! Common types used by most newlib platforms -use crate::off_t; #[allow(unused_imports)] // needed for platforms that don't use the prelude here use crate::prelude::*; @@ -9,6 +8,7 @@ s! { __val: u32, } + #[cfg(not(target_os = "vita"))] pub struct stat { pub st_dev: crate::dev_t, pub st_ino: crate::ino_t, @@ -17,7 +17,7 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - pub st_size: off_t, + pub st_size: crate::off_t, pub st_atim: crate::timespec, pub st_mtim: crate::timespec, pub st_ctim: crate::timespec, diff --git a/src/unix/newlib/horizon/mod.rs b/src/unix/newlib/horizon/mod.rs index a57eb0179d6be..d73dc176c5c3f 100644 --- a/src/unix/newlib/horizon/mod.rs +++ b/src/unix/newlib/horizon/mod.rs @@ -265,4 +265,7 @@ extern "C" { pub fn gethostid() -> c_long; } -pub use crate::unix::newlib::generic::dirent; +pub use crate::unix::newlib::generic::{ + dirent, + stat, +}; diff --git a/src/unix/newlib/vita/mod.rs b/src/unix/newlib/vita/mod.rs index f67982af7e27c..14cf95a15f9f8 100644 --- a/src/unix/newlib/vita/mod.rs +++ b/src/unix/newlib/vita/mod.rs @@ -60,6 +60,23 @@ s! { pub sched_priority: c_int, } + pub struct stat { + pub st_dev: crate::dev_t, + pub st_ino: crate::ino_t, + pub st_mode: crate::mode_t, + pub st_nlink: crate::nlink_t, + pub st_uid: crate::uid_t, + pub st_gid: crate::gid_t, + pub st_rdev: crate::dev_t, + pub st_size: crate::off_t, + pub st_atime: crate::time_t, + pub st_mtime: crate::time_t, + pub st_ctime: crate::time_t, + pub st_blksize: crate::blksize_t, + pub st_blocks: crate::blkcnt_t, + pub st_spare4: [c_long; 2usize], + } + #[repr(align(8))] pub struct dirent { __offset: [u8; 88],