Solaris 12 changes the stat_[amc]tim members of struct stat from timestruc_t to timespec_t for XPG7 compatiblity, thus breaking the libgo build. The following patch checks for this change and uses the common stat_atim.go if appropriate.
Btw., I noticed that go/os/stat_atim.go and stat_dragonfly.go are identical; no idea why that would be useful. Bootstrapped without regressions on i386-pc-solaris2.1[12] and sparc-sun-solaris2.1[12]. I had to regenerate aclocal.m4 since for some reason it had been built with automake 1.11.1 instead of the common 1.11.6, thus inhibiting Makefile.in regeneration. Ok for mainline now and the gcc 5 branch after some soak time? Rainer 2015-02-10 Rainer Orth <r...@cebitec.uni-bielefeld.de> * configure.ac (have_stat_timespec): Check for timespec_t st_atim in <sys/stat.h>. (HAVE_STAT_TIMESPEC): New conditional. * configure: Regenerate. * Makefile.am [LIBGO_IS_SOLARIS && HAVE_STAT_TIMESPEC] (go_os_stat_file): Use go/os/stat_atim.go. * aclocal.m4: Regenerate. * Makefile.in: Regenerate.
# HG changeset patch # Parent b83d7b91430fc3d2c2f34df34aaf648b178d2cad Use stat_atim.go on Solaris 12+ diff --git a/libgo/Makefile.am b/libgo/Makefile.am --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -880,7 +880,11 @@ endif endif if LIBGO_IS_SOLARIS +if HAVE_STAT_TIMESPEC +go_os_stat_file = go/os/stat_atim.go +else go_os_stat_file = go/os/stat_solaris.go +endif else if LIBGO_IS_LINUX go_os_stat_file = go/os/stat_atim.go diff --git a/libgo/configure.ac b/libgo/configure.ac --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -654,6 +654,12 @@ AC_CACHE_CHECK([epoll_event data.fd offs STRUCT_EPOLL_EVENT_FD_OFFSET=${libgo_cv_c_epoll_event_fd_offset} AC_SUBST(STRUCT_EPOLL_EVENT_FD_OFFSET) +dnl Check if <sys/stat.h> uses timespec_t for st_?tim members. Introduced +dnl in Solaris 12 for XPG7 compatibility. +AC_EGREP_HEADER([timespec_t.*st_atim], [sys/stat.h], + [have_stat_timespec=yes], [have_stat_timespec=no]) +AM_CONDITIONAL(HAVE_STAT_TIMESPEC, test $have_stat_timespec = yes) + dnl See if struct exception is defined in <math.h>. AC_CHECK_TYPE([struct exception], [libgo_has_struct_exception=yes],
-- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University