From 884081d9294ef78e70cd020baa1ee408d7ee19fc Mon Sep 17 00:00:00 2001 From: Andrew Hsieh Date: Thu, 20 Feb 2014 07:52:09 +0800 Subject: [PATCH] Fix MIPS' struct stat In NDK r9c MIPS' struct stat was incorrectly set to its 64-bit counterpart for API >= 12 Change-Id: I75db78ac7654fad982430e6adbe4480828776051 --- ndk/platforms/android-12/include/sys/stat.h | 34 +++++++++++++++++++ ndk/platforms/android-19/include/sys/stat.h | 34 +++++++++++++++++++ .../{arch-mips => }/include/sys/stat.h | 0 3 files changed, 68 insertions(+) rename ndk/platforms/android-9/{arch-mips => }/include/sys/stat.h (100%) diff --git a/ndk/platforms/android-12/include/sys/stat.h b/ndk/platforms/android-12/include/sys/stat.h index 497f404dc..7d20326b0 100644 --- a/ndk/platforms/android-12/include/sys/stat.h +++ b/ndk/platforms/android-12/include/sys/stat.h @@ -41,6 +41,39 @@ __BEGIN_DECLS * Note: The kernel zero's the padded region because glibc might read them * in the hope that the kernel has stretched to using larger sizes. */ +#ifdef __mips__ +struct stat { + unsigned long st_dev; + unsigned long __pad0[3]; + + unsigned long long st_ino; + + unsigned int st_mode; + unsigned int st_nlink; + + unsigned long st_uid; + unsigned long st_gid; + + unsigned long st_rdev; + unsigned long __pad1[3]; + + long long st_size; + + unsigned long st_atime; + unsigned long st_atime_nsec; + + unsigned long st_mtime; + unsigned long st_mtime_nsec; + + unsigned long st_ctime; + unsigned long st_ctime_nsec; + + unsigned long st_blksize; + unsigned long __pad2; + + unsigned long long st_blocks; +}; +#else struct stat { unsigned long long st_dev; unsigned char __pad0[4]; @@ -70,6 +103,7 @@ struct stat { unsigned long long st_ino; }; +#endif /* For compatibility with GLibc, we provide macro aliases * for the non-Posix nano-seconds accessors. diff --git a/ndk/platforms/android-19/include/sys/stat.h b/ndk/platforms/android-19/include/sys/stat.h index c156f438d..54c6b5b3b 100644 --- a/ndk/platforms/android-19/include/sys/stat.h +++ b/ndk/platforms/android-19/include/sys/stat.h @@ -41,6 +41,39 @@ __BEGIN_DECLS * Note: The kernel zero's the padded region because glibc might read them * in the hope that the kernel has stretched to using larger sizes. */ +#ifdef __mips__ +struct stat { + unsigned long st_dev; + unsigned long __pad0[3]; + + unsigned long long st_ino; + + unsigned int st_mode; + unsigned int st_nlink; + + unsigned long st_uid; + unsigned long st_gid; + + unsigned long st_rdev; + unsigned long __pad1[3]; + + long long st_size; + + unsigned long st_atime; + unsigned long st_atime_nsec; + + unsigned long st_mtime; + unsigned long st_mtime_nsec; + + unsigned long st_ctime; + unsigned long st_ctime_nsec; + + unsigned long st_blksize; + unsigned long __pad2; + + unsigned long long st_blocks; +}; +#else struct stat { unsigned long long st_dev; unsigned char __pad0[4]; @@ -70,6 +103,7 @@ struct stat { unsigned long long st_ino; }; +#endif /* For compatibility with GLibc, we provide macro aliases * for the non-Posix nano-seconds accessors. diff --git a/ndk/platforms/android-9/arch-mips/include/sys/stat.h b/ndk/platforms/android-9/include/sys/stat.h similarity index 100% rename from ndk/platforms/android-9/arch-mips/include/sys/stat.h rename to ndk/platforms/android-9/include/sys/stat.h