diff options
Diffstat (limited to 'toolchain/uClibc/patches-0.9.33.2/616-mips_fix_stat_time.patch')
-rw-r--r-- | toolchain/uClibc/patches-0.9.33.2/616-mips_fix_stat_time.patch | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches-0.9.33.2/616-mips_fix_stat_time.patch b/toolchain/uClibc/patches-0.9.33.2/616-mips_fix_stat_time.patch new file mode 100644 index 0000000..c07208e --- /dev/null +++ b/toolchain/uClibc/patches-0.9.33.2/616-mips_fix_stat_time.patch @@ -0,0 +1,123 @@ +--- a/libc/sysdeps/linux/common/xstatconv.c ++++ b/libc/sysdeps/linux/common/xstatconv.c +@@ -39,9 +39,12 @@ void __xstat_conv(struct kernel_stat *kb + buf->st_size = kbuf->st_size; + buf->st_blksize = kbuf->st_blksize; + buf->st_blocks = kbuf->st_blocks; +- buf->st_atim = kbuf->st_atim; +- buf->st_mtim = kbuf->st_mtim; +- buf->st_ctim = kbuf->st_ctim; ++ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec; ++ buf->st_atim.tv_nsec = kbuf->st_atim.tv_sec; ++ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec; ++ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_sec; ++ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec; ++ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_sec; + } + + void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf) +@@ -58,9 +61,12 @@ void __xstat32_conv(struct kernel_stat64 + buf->st_size = kbuf->st_size; + buf->st_blksize = kbuf->st_blksize; + buf->st_blocks = kbuf->st_blocks; +- buf->st_atim = kbuf->st_atim; +- buf->st_mtim = kbuf->st_mtim; +- buf->st_ctim = kbuf->st_ctim; ++ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec; ++ buf->st_atim.tv_nsec = kbuf->st_atim.tv_sec; ++ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec; ++ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_sec; ++ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec; ++ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_sec; + } + + #ifdef __UCLIBC_HAS_LFS__ +@@ -82,9 +88,12 @@ void __xstat64_conv(struct kernel_stat64 + buf->st_size = kbuf->st_size; + buf->st_blksize = kbuf->st_blksize; + buf->st_blocks = kbuf->st_blocks; +- buf->st_atim = kbuf->st_atim; +- buf->st_mtim = kbuf->st_mtim; +- buf->st_ctim = kbuf->st_ctim; ++ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec; ++ buf->st_atim.tv_nsec = kbuf->st_atim.tv_sec; ++ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec; ++ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_sec; ++ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec; ++ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_sec; + } + + #endif /* __UCLIBC_HAS_LFS__ */ +--- a/libc/sysdeps/linux/mips/bits/kernel_stat.h ++++ b/libc/sysdeps/linux/mips/bits/kernel_stat.h +@@ -8,6 +8,18 @@ + #include <sgidefs.h> + + #if _MIPS_SIM == _MIPS_SIM_ABI64 ++typedef struct { ++ unsigned int tv_sec; ++ unsigned int tv_nsec; ++} __ktimespec_t; ++#else ++typedef struct { ++ time_t tv_sec; ++ unsigned long tv_nsec; ++} __ktimespec_t; ++#endif ++ ++#if _MIPS_SIM == _MIPS_SIM_ABI64 + /* The memory layout is the same as of struct stat64 of the 32-bit kernel. */ + struct kernel_stat { + __kernel_dev_t st_dev; +@@ -20,9 +32,9 @@ struct kernel_stat { + __kernel_dev_t st_rdev; + unsigned int st_pad2[3]; + __kernel_off_t st_size; +- struct timespec st_atim; +- struct timespec st_mtim; +- struct timespec st_ctim; ++ __ktimespec_t st_atim; ++ __ktimespec_t st_mtim; ++ __ktimespec_t st_ctim; + unsigned int st_blksize; + unsigned int reserved3; + unsigned long st_blocks; +@@ -41,9 +53,9 @@ struct kernel_stat { + unsigned int st_rdev; + unsigned int st_pad2[3]; + unsigned long long st_size; +- struct timespec st_atim; +- struct timespec st_mtim; +- struct timespec st_ctim; ++ __ktimespec_t st_atim; ++ __ktimespec_t st_mtim; ++ __ktimespec_t st_ctim; + unsigned int st_blksize; + unsigned int reserved3; + unsigned long long st_blocks; +@@ -62,9 +74,9 @@ struct kernel_stat { + long st_pad2[2]; + __kernel_off_t st_size; + long st_pad3; +- struct timespec st_atim; +- struct timespec st_mtim; +- struct timespec st_ctim; ++ __ktimespec_t st_atim; ++ __ktimespec_t st_mtim; ++ __ktimespec_t st_ctim; + long st_blksize; + long st_blocks; + long st_pad4[14]; +@@ -81,9 +93,9 @@ struct kernel_stat64 { + unsigned long st_rdev; + unsigned long st_pad1[3]; /* Reserved for st_rdev expansion */ + long long st_size; +- struct timespec st_atim; +- struct timespec st_mtim; +- struct timespec st_ctim; ++ __ktimespec_t st_atim; ++ __ktimespec_t st_mtim; ++ __ktimespec_t st_ctim; + unsigned long st_blksize; + unsigned long st_pad2; + long long st_blocks; |