This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Recent go changes broke alpha bootstrap
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: GCC Development <gcc at gcc dot gnu dot org>
- Cc: Ian Taylor <iant at golang dot org>, Dominik Vogt <vogt at linux dot vnet dot ibm dot com>
- Date: Thu, 30 Oct 2014 11:11:09 +0100
- Subject: Re: Recent go changes broke alpha bootstrap
- Authentication-results: sourceware.org; auth=none
- References: <CAFULd4byXqjbnt-yy_pDSf0BvgNjchj-pyypMgmOXaw_vZmTng at mail dot gmail dot com>
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.