--- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go Wed Sep 18 19:17:42 2019 +0200
+++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go Sun Feb 16 18:54:01 2020 +0100
@@ -29,6 +29,57 @@
msghdr.Controllen = uint32(length)
}
+func (msghdr *Msghdr) SetIovlen(length int) {
+ msghdr.Iovlen = int32(length)
+}
+
func (cmsg *Cmsghdr) SetLen(length int) {
cmsg.Len = uint32(length)
}
+
+// In order to only have Timespec structure, type of Stat_t's fields
+// Atim, Mtim and Ctim is changed from StTimespec to Timespec during
+// ztypes generation.
+// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an
+// int32, so the fields' value must be modified.
+func fixStatTimFields(stat *Stat_t) {
+ stat.Atim.Nsec >>= 32
+ stat.Mtim.Nsec >>= 32
+ stat.Ctim.Nsec >>= 32
+}
+
+func Fstat(fd int, stat *Stat_t) error {
+ err := fstat(fd, stat)
+ if err != nil {
+ return err
+ }
+ fixStatTimFields(stat)
+ return nil
+}
+
+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {
+ err := fstatat(dirfd, path, stat, flags)
+ if err != nil {
+ return err
+ }
+ fixStatTimFields(stat)
+ return nil
+}
+
+func Lstat(path string, stat *Stat_t) error {
+ err := lstat(path, stat)
+ if err != nil {
+ return err
+ }
+ fixStatTimFields(stat)
+ return nil
+}
+
+func Stat(path string, statptr *Stat_t) error {
+ err := stat(path, statptr)
+ if err != nil {
+ return err
+ }
+ fixStatTimFields(statptr)
+ return nil
+}