[Bug d/103604] [12 Regression] trunk 20210506 fails to build in libphobos on mips64el-linux-gnu

syq at debian dot org gcc-bugzilla@gcc.gnu.org
Mon Dec 13 10:40:32 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103604

--- Comment #6 from YunQiang Su <syq at debian dot org> ---
Index: gcc-12-12-20211211/src/libphobos/libdruntime/core/sys/posix/sys/stat.d
===================================================================
--- gcc-12-12-20211211.orig/src/libphobos/libdruntime/core/sys/posix/sys/stat.d
+++ gcc-12-12-20211211/src/libphobos/libdruntime/core/sys/posix/sys/stat.d
@@ -347,7 +347,7 @@ version (CRuntime_Glibc)
         {
             c_ulong     st_dev;
             int[3]      st_pad1;
-            static if (!__USE_FILE_OFFSET64)
+            static if (__WORDSIZE == 64 || !__USE_FILE_OFFSET64)
             {
                 ino_t       st_ino;
             }
@@ -360,7 +360,7 @@ version (CRuntime_Glibc)
             uid_t       st_uid;
             gid_t       st_gid;
             c_ulong     st_rdev;
-            static if (!__USE_FILE_OFFSET64)
+            static if (__WORDSIZE == 64 || !__USE_FILE_OFFSET64)
             {
                 uint[2]     st_pad2;
                 off_t       st_size;
@@ -394,7 +394,7 @@ version (CRuntime_Glibc)
             }
             blksize_t   st_blksize;
             uint        st_pad4;
-            static if (!__USE_FILE_OFFSET64)
+            static if (__WORDSIZE == 64 || !__USE_FILE_OFFSET64)
             {
                 blkcnt_t    st_blocks;
             }


This patch can solve this problem: of course, we need to back port it to
gcc-10/gcc-11 also.

The problem is due to that: 
    N32 and N64 uses different "struct stat"
    In the older version, __USE_FILE_OFFSET64 may be not defined for N64
         while now, it is defined.


More information about the Gcc-bugs mailing list