changeset 53207:8180809085a4

8214077: test java/io/File/SetLastModified.java fails on ARM32 Summary: replace uses of stat with stat64 in java.base Reviewed-by: alanb Contributed-by: nick.gasson@arm.com
author alanb
date Fri, 14 Dec 2018 13:30:21 +0000
parents b3830528df29
children 5274fb04cad9
files src/java.base/linux/native/libjava/ProcessHandleImpl_linux.c src/java.base/unix/native/libjava/TimeZone_md.c src/java.base/unix/native/libjava/UnixFileSystem_md.c
diffstat 3 files changed, 24 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/java.base/linux/native/libjava/ProcessHandleImpl_linux.c	Fri Dec 14 09:59:08 2018 +0100
+++ b/src/java.base/linux/native/libjava/ProcessHandleImpl_linux.c	Fri Dec 14 13:30:21 2018 +0000
@@ -138,13 +138,13 @@
     char *args = NULL;
     jstring cmdexe = NULL;
     char fn[32];
-    struct stat stat_buf;
+    struct stat64 stat_buf;
 
     /*
      * Stat /proc/<pid> to get the user id
      */
     snprintf(fn, sizeof fn, "/proc/%d", pid);
-    if (stat(fn, &stat_buf) == 0) {
+    if (stat64(fn, &stat_buf) == 0) {
         unix_getUserInfo(env, jinfo, stat_buf.st_uid);
         JNU_CHECK_EXCEPTION(env);
     }
--- a/src/java.base/unix/native/libjava/TimeZone_md.c	Fri Dec 14 09:59:08 2018 +0100
+++ b/src/java.base/unix/native/libjava/TimeZone_md.c	Fri Dec 14 13:30:21 2018 +0000
@@ -56,6 +56,12 @@
 #define fileclose       fclose
 #endif
 
+#if defined(_ALLBSD_SOURCE)
+#define stat64 stat
+#define lstat64 lstat
+#define fstat64 fstat
+#endif
+
 #if defined(__linux__) || defined(_ALLBSD_SOURCE)
 static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
 static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
@@ -115,7 +121,7 @@
 findZoneinfoFile(char *buf, size_t size, const char *dir)
 {
     DIR *dirp = NULL;
-    struct stat statbuf;
+    struct stat64 statbuf;
     struct dirent *dp = NULL;
     char *pathname = NULL;
     int fd = -1;
@@ -156,7 +162,7 @@
         if (pathname == NULL) {
             break;
         }
-        RESTARTABLE(stat(pathname, &statbuf), res);
+        RESTARTABLE(stat64(pathname, &statbuf), res);
         if (res == -1) {
             break;
         }
@@ -219,7 +225,7 @@
 static char *
 getPlatformTimeZoneID()
 {
-    struct stat statbuf;
+    struct stat64 statbuf;
     char *tz = NULL;
     FILE *fp;
     int fd;
@@ -256,7 +262,7 @@
     /*
      * Next, try /etc/localtime to find the zone ID.
      */
-    RESTARTABLE(lstat(DEFAULT_ZONEINFO_FILE, &statbuf), res);
+    RESTARTABLE(lstat64(DEFAULT_ZONEINFO_FILE, &statbuf), res);
     if (res == -1) {
         return NULL;
     }
@@ -296,7 +302,7 @@
         return NULL;
     }
 
-    RESTARTABLE(fstat(fd, &statbuf), res);
+    RESTARTABLE(fstat64(fd, &statbuf), res);
     if (res == -1) {
         (void) close(fd);
         return NULL;
@@ -557,7 +563,7 @@
 static char *
 getSolarisDefaultZoneID() {
     char *tz = NULL;
-    struct stat statbuf;
+    struct stat64 statbuf;
     size_t size;
     char *buf;
     int fd;
@@ -597,7 +603,7 @@
     }
     cleanupScf(h, snap, inst, pg, prop, val, tz);
 
-    RESTARTABLE(stat(DEFAULT_ZONEINFO_FILE, &statbuf), res);
+    RESTARTABLE(stat64(DEFAULT_ZONEINFO_FILE, &statbuf), res);
     if (res == -1) {
         return NULL;
     }
--- a/src/java.base/unix/native/libjava/UnixFileSystem_md.c	Fri Dec 14 09:59:08 2018 +0100
+++ b/src/java.base/unix/native/libjava/UnixFileSystem_md.c	Fri Dec 14 13:30:21 2018 +0000
@@ -69,6 +69,7 @@
 #if defined(_ALLBSD_SOURCE)
   #ifndef MACOSX
     #define statvfs64 statvfs
+    #define stat64 stat
   #endif
 #endif
 
@@ -121,8 +122,8 @@
 static jboolean
 statMode(const char *path, int *mode)
 {
-    struct stat sb;
-    if (stat(path, &sb) == 0) {
+    struct stat64 sb;
+    if (stat64(path, &sb) == 0) {
         *mode = sb.st_mode;
         return JNI_TRUE;
     }
@@ -229,8 +230,8 @@
     jlong rv = 0;
 
     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
-        struct stat sb;
-        if (stat(path, &sb) == 0) {
+        struct stat64 sb;
+        if (stat64(path, &sb) == 0) {
 #if defined(_AIX)
             rv =  (jlong)sb.st_mtime * 1000;
             rv += (jlong)sb.st_mtime_n / 1000000;
@@ -254,8 +255,8 @@
     jlong rv = 0;
 
     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
-        struct stat sb;
-        if (stat(path, &sb) == 0) {
+        struct stat64 sb;
+        if (stat64(path, &sb) == 0) {
             rv = sb.st_size;
         }
     } END_PLATFORM_STRING(env, path);
@@ -408,9 +409,9 @@
     jboolean rv = JNI_FALSE;
 
     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
-        struct stat sb;
+        struct stat64 sb;
 
-        if (stat(path, &sb) == 0) {
+        if (stat64(path, &sb) == 0) {
             struct timeval tv[2];
 
             /* Preserve access time */