This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Recent go changes broke alpha bootstrap


On Thu, Oct 30, 2014 at 8:40 AM, Uros Bizjak <ubizjak@gmail.com> wrote:

> Recent go changes broke alpha bootstrap:

> $files/space/homedirs/uros/gcc-svn/trunk/libgo/go/os/stat_atim.go:22:29:
> error: reference to undefined field or method âMtimâ
>    modTime: timespecToTime(st.Mtim),
>                              ^
> /space/homedirs/uros/gcc-svn/trunk/libgo/go/os/stat_atim.go:60:50:
> error: reference to undefined field or method âAtimâ
>   return timespecToTime(fi.Sys().(*syscall.Stat_t).Atim)
>                                                   ^
> Makefile:4579: recipe for target 'os.lo' failed
> gmake[4]: *** [os.lo] Error 1
> gmake[4]: Leaving directory
> '/space/uros/gcc-build/alphaev68-unknown-linux-gnu/libgo'
>
> The relevant part of libgo/sysinfo.log declares:
>
> libgo/sysinfo.go:type Stat_t struct { Dev uint64; Ino uint64; Rdev
> uint64; Size int64; Blocks uint64; Mode uint32; Uid uint32; Gid
> uint32; Blksize uint32; Nlink uint32; __pad0 int32; Godump_0 struct {
> Atim [16]byte; Godump_1_align [0]uint64; }; Godump_2 struct { Mtim
> [16]byte; Godump_3_align [0]uint64; }; Godump_4 struct { Ctim
> [16]byte; Godump_5_align [0]uint64; }; __glibc_reserved [2+1]int64; }

Looks like "[PATCH 7/9] Gccgo port to s390[x] -- part I" [1,2] broke it.

The definitions from bits/stat.h are:

--cut here--
/* Nanosecond resolution timestamps are stored in a format equivalent to
   'struct timespec'.  This is the type used whenever possible but the
   Unix namespace rules do not allow the identifier 'timespec' to appear
   in the <sys/stat.h> header.  Therefore we have to handle the use of
   this header in strictly standard-compliant sources special.

   Use neat tidy anonymous unions and structures when possible.  */

#if defined __USE_MISC || defined __USE_XOPEN2K8
# if __GNUC_PREREQ(3,3)
#  define __ST_TIME(X)                          \
        __extension__ union {                   \
            struct timespec st_##X##tim;        \
            struct {                            \
                __time_t st_##X##time;          \
                unsigned long st_##X##timensec; \
            };                                  \
        }
# else
#  define __ST_TIME(X) struct timespec st_##X##tim
#  define st_atime st_atim.tv_sec
#  define st_mtime st_mtim.tv_sec
#  define st_ctime st_ctim.tv_sec
# endif
#else
# define __ST_TIME(X)                           \
        __time_t st_##X##time;                  \
        unsigned long st_##X##timensec
#endif


struct stat
  {
    __dev_t st_dev;             /* Device.  */
#ifdef __USE_FILE_OFFSET64
    __ino64_t st_ino;           /* File serial number.  */
#else
    __ino_t st_ino;             /* File serial number.  */
    int __pad0;                 /* 64-bit st_ino.  */
#endif
    __dev_t st_rdev;            /* Device number, if device.  */
    __off_t st_size;            /* Size of file, in bytes.  */
#ifdef __USE_FILE_OFFSET64
    __blkcnt64_t st_blocks;     /* Nr. 512-byte blocks allocated.  */
#else
    __blkcnt_t st_blocks;       /* Nr. 512-byte blocks allocated.  */
    int __pad1;                 /* 64-bit st_blocks.  */
#endif
    __mode_t st_mode;           /* File mode.  */
    __uid_t st_uid;             /* User ID of the file's owner. */
    __gid_t st_gid;             /* Group ID of the file's group.*/
    __blksize_t st_blksize;     /* Optimal block size for I/O.  */
    __nlink_t st_nlink;         /* Link count.  */
    int __pad2;                 /* Real padding.  */
    __ST_TIME(a);               /* Time of last access.  */
    __ST_TIME(m);               /* Time of last modification.  */
    __ST_TIME(c);               /* Time of last status change.  */
    long __glibc_reserved[3];
  };
--cut here--

[1] https://gcc.gnu.org/ml/gcc-patches/2014-10/msg02977.html
[2] https://gcc.gnu.org/ml/gcc-cvs/2014-10/msg01069.html

Uros.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]