]> Cypherpunks.ru repositories - gostls13.git/commitdiff
all: update x/net to pull in CL 316129
authorBryan C. Mills <bcmills@google.com>
Mon, 3 May 2021 06:19:20 +0000 (02:19 -0400)
committerBryan C. Mills <bcmills@google.com>
Mon, 3 May 2021 18:23:49 +0000 (18:23 +0000)
As a side effect, this also upgrades x/sys to the version currently
required by the latest x/net.

Because x/net is now lazy, it no longer requires checksums for
older-than-selected versions of x/sys, x/term, and x/text.

For #36460
Updates #36905

Change-Id: I242815e202aa7d482fc3983a6717bece10ea8111
Reviewed-on: https://go-review.googlesource.com/c/go/+/316251
Trust: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
25 files changed:
src/cmd/go.mod
src/cmd/go.sum
src/cmd/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
src/cmd/vendor/golang.org/x/sys/unix/ioctl_linux.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go [new file with mode: 0644]
src/cmd/vendor/modules.txt
src/go.mod
src/go.sum
src/vendor/golang.org/x/net/http/httpguts/httplex.go
src/vendor/golang.org/x/net/idna/idna10.0.0.go
src/vendor/golang.org/x/net/idna/idna9.0.0.go
src/vendor/golang.org/x/net/route/route.go
src/vendor/modules.txt

index c9ae30f284ecfe582cb0eea18897222440cac2d4..ef231b1e3c0957546da7fb1be0fd16535a87de2b 100644 (file)
@@ -8,7 +8,7 @@ require (
        golang.org/x/arch v0.0.0-20210502124803-cbf565b21d1e
        golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect
        golang.org/x/mod v0.4.3-0.20210409134425-858fdbee9c24
-       golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect
+       golang.org/x/sys v0.0.0-20210423082822-04245dca01da // indirect
        golang.org/x/term v0.0.0-20210503060354-a79de5458b56
        golang.org/x/tools v0.1.1-0.20210422170518-f946a157eefe
        golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
index 84c91e5cfd31f3fd2aa2b81ff85d612967ba498c..b03cb3720345bb9143d4e11212d30b78cee40c57 100644 (file)
@@ -26,8 +26,9 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A=
 golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210503060354-a79de5458b56 h1:b8jxX3zqjpqb2LklXPzKSGJhzyxCOZSz8ncv8Nv+y7w=
index cb0dfbd09a04615e2149f3f00b17f8c86680c9b8..29d44808b1d02b122a34bd0d6e39d6a274bb3871 100644 (file)
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle)
-// +build linux,386 linux,arm linux,mips linux,mipsle
+//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc)
+// +build linux,386 linux,arm linux,mips linux,mipsle linux,ppc
 
 package unix
 
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/ioctl_linux.go b/src/cmd/vendor/golang.org/x/sys/unix/ioctl_linux.go
new file mode 100644 (file)
index 0000000..48773f7
--- /dev/null
@@ -0,0 +1,196 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package unix
+
+import (
+       "runtime"
+       "unsafe"
+)
+
+// IoctlRetInt performs an ioctl operation specified by req on a device
+// associated with opened file descriptor fd, and returns a non-negative
+// integer that is returned by the ioctl syscall.
+func IoctlRetInt(fd int, req uint) (int, error) {
+       ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)
+       if err != 0 {
+               return 0, err
+       }
+       return int(ret), nil
+}
+
+func IoctlGetUint32(fd int, req uint) (uint32, error) {
+       var value uint32
+       err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+       return value, err
+}
+
+func IoctlGetRTCTime(fd int) (*RTCTime, error) {
+       var value RTCTime
+       err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
+func IoctlSetRTCTime(fd int, value *RTCTime) error {
+       err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value)))
+       runtime.KeepAlive(value)
+       return err
+}
+
+func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {
+       var value RTCWkAlrm
+       err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
+func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {
+       err := ioctl(fd, RTC_WKALM_SET, uintptr(unsafe.Pointer(value)))
+       runtime.KeepAlive(value)
+       return err
+}
+
+type ifreqEthtool struct {
+       name [IFNAMSIZ]byte
+       data unsafe.Pointer
+}
+
+// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network
+// device specified by ifname.
+func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {
+       // Leave room for terminating NULL byte.
+       if len(ifname) >= IFNAMSIZ {
+               return nil, EINVAL
+       }
+
+       value := EthtoolDrvinfo{
+               Cmd: ETHTOOL_GDRVINFO,
+       }
+       ifreq := ifreqEthtool{
+               data: unsafe.Pointer(&value),
+       }
+       copy(ifreq.name[:], ifname)
+       err := ioctl(fd, SIOCETHTOOL, uintptr(unsafe.Pointer(&ifreq)))
+       runtime.KeepAlive(ifreq)
+       return &value, err
+}
+
+// IoctlGetWatchdogInfo fetches information about a watchdog device from the
+// Linux watchdog API. For more information, see:
+// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
+func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {
+       var value WatchdogInfo
+       err := ioctl(fd, WDIOC_GETSUPPORT, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
+// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For
+// more information, see:
+// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
+func IoctlWatchdogKeepalive(fd int) error {
+       return ioctl(fd, WDIOC_KEEPALIVE, 0)
+}
+
+// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the
+// range of data conveyed in value to the file associated with the file
+// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.
+func IoctlFileCloneRange(destFd int, value *FileCloneRange) error {
+       err := ioctl(destFd, FICLONERANGE, uintptr(unsafe.Pointer(value)))
+       runtime.KeepAlive(value)
+       return err
+}
+
+// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file
+// associated with the file description srcFd to the file associated with the
+// file descriptor destFd. See the ioctl_ficlone(2) man page for details.
+func IoctlFileClone(destFd, srcFd int) error {
+       return ioctl(destFd, FICLONE, uintptr(srcFd))
+}
+
+type FileDedupeRange struct {
+       Src_offset uint64
+       Src_length uint64
+       Reserved1  uint16
+       Reserved2  uint32
+       Info       []FileDedupeRangeInfo
+}
+
+type FileDedupeRangeInfo struct {
+       Dest_fd       int64
+       Dest_offset   uint64
+       Bytes_deduped uint64
+       Status        int32
+       Reserved      uint32
+}
+
+// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the
+// range of data conveyed in value from the file associated with the file
+// descriptor srcFd to the value.Info destinations. See the
+// ioctl_fideduperange(2) man page for details.
+func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {
+       buf := make([]byte, SizeofRawFileDedupeRange+
+               len(value.Info)*SizeofRawFileDedupeRangeInfo)
+       rawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0]))
+       rawrange.Src_offset = value.Src_offset
+       rawrange.Src_length = value.Src_length
+       rawrange.Dest_count = uint16(len(value.Info))
+       rawrange.Reserved1 = value.Reserved1
+       rawrange.Reserved2 = value.Reserved2
+
+       for i := range value.Info {
+               rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(
+                       uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +
+                               uintptr(i*SizeofRawFileDedupeRangeInfo)))
+               rawinfo.Dest_fd = value.Info[i].Dest_fd
+               rawinfo.Dest_offset = value.Info[i].Dest_offset
+               rawinfo.Bytes_deduped = value.Info[i].Bytes_deduped
+               rawinfo.Status = value.Info[i].Status
+               rawinfo.Reserved = value.Info[i].Reserved
+       }
+
+       err := ioctl(srcFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(&buf[0])))
+
+       // Output
+       for i := range value.Info {
+               rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(
+                       uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +
+                               uintptr(i*SizeofRawFileDedupeRangeInfo)))
+               value.Info[i].Dest_fd = rawinfo.Dest_fd
+               value.Info[i].Dest_offset = rawinfo.Dest_offset
+               value.Info[i].Bytes_deduped = rawinfo.Bytes_deduped
+               value.Info[i].Status = rawinfo.Status
+               value.Info[i].Reserved = rawinfo.Reserved
+       }
+
+       return err
+}
+
+func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {
+       err := ioctl(fd, HIDIOCGRDESC, uintptr(unsafe.Pointer(value)))
+       runtime.KeepAlive(value)
+       return err
+}
+
+func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {
+       var value HIDRawDevInfo
+       err := ioctl(fd, HIDIOCGRAWINFO, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
+func IoctlHIDGetRawName(fd int) (string, error) {
+       var value [_HIDIOCGRAWNAME_LEN]byte
+       err := ioctl(fd, _HIDIOCGRAWNAME, uintptr(unsafe.Pointer(&value[0])))
+       return ByteSliceToString(value[:]), err
+}
+
+func IoctlHIDGetRawPhys(fd int) (string, error) {
+       var value [_HIDIOCGRAWPHYS_LEN]byte
+       err := ioctl(fd, _HIDIOCGRAWPHYS, uintptr(unsafe.Pointer(&value[0])))
+       return ByteSliceToString(value[:]), err
+}
+
+func IoctlHIDGetRawUniq(fd int) (string, error) {
+       var value [_HIDIOCGRAWUNIQ_LEN]byte
+       err := ioctl(fd, _HIDIOCGRAWUNIQ, uintptr(unsafe.Pointer(&value[0])))
+       return ByteSliceToString(value[:]), err
+}
index 1223d7aed1c7a5e1e68832932571cb5fd122bbe3..9945e5f9655ad0318ce8f14c80fb2a8a4e617a95 100644 (file)
@@ -378,6 +378,17 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
        return
 }
 
+func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
+       var value IPMreqn
+       vallen := _Socklen(SizeofIPMreqn)
+       errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, errno
+}
+
+func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
+}
+
 // GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.
 // The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.
 func GetsockoptXucred(fd, level, opt int) (*Xucred, error) {
index 44ea96e39c6b0df60d6c4ffac1867ab6ff3ade9b..4263953bee3cabc9744ce98a75aeac054ea7bb5e 100644 (file)
@@ -70,167 +70,7 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
 
 // ioctl itself should not be exposed directly, but additional get/set
 // functions for specific types are permissible.
-
-// IoctlRetInt performs an ioctl operation specified by req on a device
-// associated with opened file descriptor fd, and returns a non-negative
-// integer that is returned by the ioctl syscall.
-func IoctlRetInt(fd int, req uint) (int, error) {
-       ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)
-       if err != 0 {
-               return 0, err
-       }
-       return int(ret), nil
-}
-
-func IoctlSetRTCTime(fd int, value *RTCTime) error {
-       err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value)))
-       runtime.KeepAlive(value)
-       return err
-}
-
-func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {
-       err := ioctl(fd, RTC_WKALM_SET, uintptr(unsafe.Pointer(value)))
-       runtime.KeepAlive(value)
-       return err
-}
-
-func IoctlGetUint32(fd int, req uint) (uint32, error) {
-       var value uint32
-       err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-       return value, err
-}
-
-func IoctlGetRTCTime(fd int) (*RTCTime, error) {
-       var value RTCTime
-       err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value)))
-       return &value, err
-}
-
-// IoctlGetWatchdogInfo fetches information about a watchdog device from the
-// Linux watchdog API. For more information, see:
-// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
-func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {
-       var value WatchdogInfo
-       err := ioctl(fd, WDIOC_GETSUPPORT, uintptr(unsafe.Pointer(&value)))
-       return &value, err
-}
-
-func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {
-       var value RTCWkAlrm
-       err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value)))
-       return &value, err
-}
-
-// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the
-// range of data conveyed in value to the file associated with the file
-// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.
-func IoctlFileCloneRange(destFd int, value *FileCloneRange) error {
-       err := ioctl(destFd, FICLONERANGE, uintptr(unsafe.Pointer(value)))
-       runtime.KeepAlive(value)
-       return err
-}
-
-// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file
-// associated with the file description srcFd to the file associated with the
-// file descriptor destFd. See the ioctl_ficlone(2) man page for details.
-func IoctlFileClone(destFd, srcFd int) error {
-       return ioctl(destFd, FICLONE, uintptr(srcFd))
-}
-
-type FileDedupeRange struct {
-       Src_offset uint64
-       Src_length uint64
-       Reserved1  uint16
-       Reserved2  uint32
-       Info       []FileDedupeRangeInfo
-}
-
-type FileDedupeRangeInfo struct {
-       Dest_fd       int64
-       Dest_offset   uint64
-       Bytes_deduped uint64
-       Status        int32
-       Reserved      uint32
-}
-
-// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the
-// range of data conveyed in value from the file associated with the file
-// descriptor srcFd to the value.Info destinations. See the
-// ioctl_fideduperange(2) man page for details.
-func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {
-       buf := make([]byte, SizeofRawFileDedupeRange+
-               len(value.Info)*SizeofRawFileDedupeRangeInfo)
-       rawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0]))
-       rawrange.Src_offset = value.Src_offset
-       rawrange.Src_length = value.Src_length
-       rawrange.Dest_count = uint16(len(value.Info))
-       rawrange.Reserved1 = value.Reserved1
-       rawrange.Reserved2 = value.Reserved2
-
-       for i := range value.Info {
-               rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(
-                       uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +
-                               uintptr(i*SizeofRawFileDedupeRangeInfo)))
-               rawinfo.Dest_fd = value.Info[i].Dest_fd
-               rawinfo.Dest_offset = value.Info[i].Dest_offset
-               rawinfo.Bytes_deduped = value.Info[i].Bytes_deduped
-               rawinfo.Status = value.Info[i].Status
-               rawinfo.Reserved = value.Info[i].Reserved
-       }
-
-       err := ioctl(srcFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(&buf[0])))
-
-       // Output
-       for i := range value.Info {
-               rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(
-                       uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +
-                               uintptr(i*SizeofRawFileDedupeRangeInfo)))
-               value.Info[i].Dest_fd = rawinfo.Dest_fd
-               value.Info[i].Dest_offset = rawinfo.Dest_offset
-               value.Info[i].Bytes_deduped = rawinfo.Bytes_deduped
-               value.Info[i].Status = rawinfo.Status
-               value.Info[i].Reserved = rawinfo.Reserved
-       }
-
-       return err
-}
-
-// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For
-// more information, see:
-// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
-func IoctlWatchdogKeepalive(fd int) error {
-       return ioctl(fd, WDIOC_KEEPALIVE, 0)
-}
-
-func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {
-       err := ioctl(fd, HIDIOCGRDESC, uintptr(unsafe.Pointer(value)))
-       runtime.KeepAlive(value)
-       return err
-}
-
-func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {
-       var value HIDRawDevInfo
-       err := ioctl(fd, HIDIOCGRAWINFO, uintptr(unsafe.Pointer(&value)))
-       return &value, err
-}
-
-func IoctlHIDGetRawName(fd int) (string, error) {
-       var value [_HIDIOCGRAWNAME_LEN]byte
-       err := ioctl(fd, _HIDIOCGRAWNAME, uintptr(unsafe.Pointer(&value[0])))
-       return ByteSliceToString(value[:]), err
-}
-
-func IoctlHIDGetRawPhys(fd int) (string, error) {
-       var value [_HIDIOCGRAWPHYS_LEN]byte
-       err := ioctl(fd, _HIDIOCGRAWPHYS, uintptr(unsafe.Pointer(&value[0])))
-       return ByteSliceToString(value[:]), err
-}
-
-func IoctlHIDGetRawUniq(fd int) (string, error) {
-       var value [_HIDIOCGRAWUNIQ_LEN]byte
-       err := ioctl(fd, _HIDIOCGRAWUNIQ, uintptr(unsafe.Pointer(&value[0])))
-       return ByteSliceToString(value[:]), err
-}
+// These are defined in ioctl.go and ioctl_linux.go.
 
 //sys  Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
 
@@ -857,16 +697,19 @@ type SockaddrVM struct {
        // CID and Port specify a context ID and port address for a VM socket.
        // Guests have a unique CID, and hosts may have a well-known CID of:
        //  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.
+       //  - VMADDR_CID_LOCAL: refers to local communication (loopback).
        //  - VMADDR_CID_HOST: refers to other processes on the host.
-       CID  uint32
-       Port uint32
-       raw  RawSockaddrVM
+       CID   uint32
+       Port  uint32
+       Flags uint8
+       raw   RawSockaddrVM
 }
 
 func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {
        sa.raw.Family = AF_VSOCK
        sa.raw.Port = sa.Port
        sa.raw.Cid = sa.CID
+       sa.raw.Flags = sa.Flags
 
        return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil
 }
@@ -1171,8 +1014,9 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
        case AF_VSOCK:
                pp := (*RawSockaddrVM)(unsafe.Pointer(rsa))
                sa := &SockaddrVM{
-                       CID:  pp.Cid,
-                       Port: pp.Port,
+                       CID:   pp.Cid,
+                       Port:  pp.Port,
+                       Flags: pp.Flags,
                }
                return sa, nil
        case AF_BLUETOOTH:
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go
new file mode 100644 (file)
index 0000000..7e65e08
--- /dev/null
@@ -0,0 +1,272 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build linux && ppc
+// +build linux
+// +build ppc
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+//sys  dup2(oldfd int, newfd int) (err error)
+//sysnb        EpollCreate(size int) (fd int, err error)
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sys  Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
+//sys  Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (euid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getuid() (uid int)
+//sysnb        InotifyInit() (fd int, err error)
+//sys  Ioperm(from int, num int, on int) (err error)
+//sys  Iopl(level int) (err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Listen(s int, n int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys  Pause() (err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys  Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
+//sys  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
+//sys  setfsgid(gid int) (prev int, err error)
+//sys  setfsuid(uid int) (prev int, err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sys  Shutdown(fd int, how int) (err error)
+//sys  Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
+//sys  Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+//sys  Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
+//sys  Ustat(dev int, ubuf *Ustat_t) (err error)
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys  accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb        setgroups(n int, list *_Gid_t) (err error)
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb        socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb        socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb        getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys  sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+
+//sys  futimesat(dirfd int, path string, times *[2]Timeval) (err error)
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Time(t *Time_t) (tt Time_t, err error)
+//sys  Utime(path string, buf *Utimbuf) (err error)
+//sys  utimes(path string, times *[2]Timeval) (err error)
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+       _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
+       var newoffset int64
+       offsetLow := uint32(offset & 0xffffffff)
+       offsetHigh := uint32((offset >> 32) & 0xffffffff)
+       _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
+       return newoffset, err
+}
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+       newoffset, errno := seek(fd, offset, whence)
+       if errno != 0 {
+               return 0, errno
+       }
+       return newoffset, nil
+}
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       pathp, err := BytePtrFromString(path)
+       if err != nil {
+               return err
+       }
+       _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+//sys  mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       page := uintptr(offset / 4096)
+       if offset != int64(page)*4096 {
+               return 0, EINVAL
+       }
+       return mmap2(addr, length, prot, flags, fd, page)
+}
+
+func setTimespec(sec, nsec int64) Timespec {
+       return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
+}
+
+func setTimeval(sec, usec int64) Timeval {
+       return Timeval{Sec: int32(sec), Usec: int32(usec)}
+}
+
+type rlimit32 struct {
+       Cur uint32
+       Max uint32
+}
+
+//sysnb        getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT
+
+const rlimInf32 = ^uint32(0)
+const rlimInf64 = ^uint64(0)
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+       err = prlimit(0, resource, nil, rlim)
+       if err != ENOSYS {
+               return err
+       }
+
+       rl := rlimit32{}
+       err = getrlimit(resource, &rl)
+       if err != nil {
+               return
+       }
+
+       if rl.Cur == rlimInf32 {
+               rlim.Cur = rlimInf64
+       } else {
+               rlim.Cur = uint64(rl.Cur)
+       }
+
+       if rl.Max == rlimInf32 {
+               rlim.Max = rlimInf64
+       } else {
+               rlim.Max = uint64(rl.Max)
+       }
+       return
+}
+
+//sysnb        setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       err = prlimit(0, resource, rlim, nil)
+       if err != ENOSYS {
+               return err
+       }
+
+       rl := rlimit32{}
+       if rlim.Cur == rlimInf64 {
+               rl.Cur = rlimInf32
+       } else if rlim.Cur < uint64(rlimInf32) {
+               rl.Cur = uint32(rlim.Cur)
+       } else {
+               return EINVAL
+       }
+       if rlim.Max == rlimInf64 {
+               rl.Max = rlimInf32
+       } else if rlim.Max < uint64(rlimInf32) {
+               rl.Max = uint32(rlim.Max)
+       } else {
+               return EINVAL
+       }
+
+       return setrlimit(resource, &rl)
+}
+
+func (r *PtraceRegs) PC() uint32 { return r.Nip }
+
+func (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc }
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (msghdr *Msghdr) SetIovlen(length int) {
+       msghdr.Iovlen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
+
+//sysnb        pipe(p *[2]_C_int) (err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe(&pp)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sysnb        pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, flags)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
+
+//sys  syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2
+
+func SyncFileRange(fd int, off int64, n int64, flags int) error {
+       // The sync_file_range and sync_file_range2 syscalls differ only in the
+       // order of their arguments.
+       return syncFileRange2(fd, flags, off, n)
+}
+
+//sys  kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
+
+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
+       cmdlineLen := len(cmdline)
+       if cmdlineLen > 0 {
+               // Account for the additional NULL byte added by
+               // BytePtrFromString in kexecFileLoad. The kexec_file_load
+               // syscall expects a NULL-terminated string.
+               cmdlineLen++
+       }
+       return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
+}
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
new file mode 100644 (file)
index 0000000..d9530e5
--- /dev/null
@@ -0,0 +1,860 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+//go:build ppc && linux
+// +build ppc,linux
+
+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go
+
+package unix
+
+import "syscall"
+
+const (
+       B1000000                         = 0x17
+       B115200                          = 0x11
+       B1152000                         = 0x18
+       B1500000                         = 0x19
+       B2000000                         = 0x1a
+       B230400                          = 0x12
+       B2500000                         = 0x1b
+       B3000000                         = 0x1c
+       B3500000                         = 0x1d
+       B4000000                         = 0x1e
+       B460800                          = 0x13
+       B500000                          = 0x14
+       B57600                           = 0x10
+       B576000                          = 0x15
+       B921600                          = 0x16
+       BLKBSZGET                        = 0x40041270
+       BLKBSZSET                        = 0x80041271
+       BLKFLSBUF                        = 0x20001261
+       BLKFRAGET                        = 0x20001265
+       BLKFRASET                        = 0x20001264
+       BLKGETSIZE                       = 0x20001260
+       BLKGETSIZE64                     = 0x40041272
+       BLKPBSZGET                       = 0x2000127b
+       BLKRAGET                         = 0x20001263
+       BLKRASET                         = 0x20001262
+       BLKROGET                         = 0x2000125e
+       BLKROSET                         = 0x2000125d
+       BLKRRPART                        = 0x2000125f
+       BLKSECTGET                       = 0x20001267
+       BLKSECTSET                       = 0x20001266
+       BLKSSZGET                        = 0x20001268
+       BOTHER                           = 0x1f
+       BS1                              = 0x8000
+       BSDLY                            = 0x8000
+       CBAUD                            = 0xff
+       CBAUDEX                          = 0x0
+       CIBAUD                           = 0xff0000
+       CLOCAL                           = 0x8000
+       CR1                              = 0x1000
+       CR2                              = 0x2000
+       CR3                              = 0x3000
+       CRDLY                            = 0x3000
+       CREAD                            = 0x800
+       CS6                              = 0x100
+       CS7                              = 0x200
+       CS8                              = 0x300
+       CSIZE                            = 0x300
+       CSTOPB                           = 0x400
+       ECHOCTL                          = 0x40
+       ECHOE                            = 0x2
+       ECHOK                            = 0x4
+       ECHOKE                           = 0x1
+       ECHONL                           = 0x10
+       ECHOPRT                          = 0x20
+       EFD_CLOEXEC                      = 0x80000
+       EFD_NONBLOCK                     = 0x800
+       EPOLL_CLOEXEC                    = 0x80000
+       EXTPROC                          = 0x10000000
+       FF1                              = 0x4000
+       FFDLY                            = 0x4000
+       FICLONE                          = 0x80049409
+       FICLONERANGE                     = 0x8020940d
+       FLUSHO                           = 0x800000
+       FS_IOC_ENABLE_VERITY             = 0x80806685
+       FS_IOC_GETFLAGS                  = 0x40046601
+       FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
+       FS_IOC_SETFLAGS                  = 0x80046602
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
+       F_GETLK                          = 0xc
+       F_GETLK64                        = 0xc
+       F_GETOWN                         = 0x9
+       F_RDLCK                          = 0x0
+       F_SETLK                          = 0xd
+       F_SETLK64                        = 0xd
+       F_SETLKW                         = 0xe
+       F_SETLKW64                       = 0xe
+       F_SETOWN                         = 0x8
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HIDIOCGRAWINFO                   = 0x40084803
+       HIDIOCGRDESC                     = 0x50044802
+       HIDIOCGRDESCSIZE                 = 0x40044801
+       HUPCL                            = 0x4000
+       ICANON                           = 0x100
+       IEXTEN                           = 0x400
+       IN_CLOEXEC                       = 0x80000
+       IN_NONBLOCK                      = 0x800
+       IOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9
+       ISIG                             = 0x80
+       IUCLC                            = 0x1000
+       IXOFF                            = 0x400
+       IXON                             = 0x200
+       MAP_ANON                         = 0x20
+       MAP_ANONYMOUS                    = 0x20
+       MAP_DENYWRITE                    = 0x800
+       MAP_EXECUTABLE                   = 0x1000
+       MAP_GROWSDOWN                    = 0x100
+       MAP_HUGETLB                      = 0x40000
+       MAP_LOCKED                       = 0x80
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x40
+       MAP_POPULATE                     = 0x8000
+       MAP_STACK                        = 0x20000
+       MAP_SYNC                         = 0x80000
+       MCL_CURRENT                      = 0x2000
+       MCL_FUTURE                       = 0x4000
+       MCL_ONFAULT                      = 0x8000
+       NFDBITS                          = 0x20
+       NL2                              = 0x200
+       NL3                              = 0x300
+       NLDLY                            = 0x300
+       NOFLSH                           = 0x80000000
+       NS_GET_NSTYPE                    = 0x2000b703
+       NS_GET_OWNER_UID                 = 0x2000b704
+       NS_GET_PARENT                    = 0x2000b702
+       NS_GET_USERNS                    = 0x2000b701
+       OLCUC                            = 0x4
+       ONLCR                            = 0x2
+       O_APPEND                         = 0x400
+       O_ASYNC                          = 0x2000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x40
+       O_DIRECT                         = 0x20000
+       O_DIRECTORY                      = 0x4000
+       O_DSYNC                          = 0x1000
+       O_EXCL                           = 0x80
+       O_FSYNC                          = 0x101000
+       O_LARGEFILE                      = 0x10000
+       O_NDELAY                         = 0x800
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x100
+       O_NOFOLLOW                       = 0x8000
+       O_NONBLOCK                       = 0x800
+       O_PATH                           = 0x200000
+       O_RSYNC                          = 0x101000
+       O_SYNC                           = 0x101000
+       O_TMPFILE                        = 0x404000
+       O_TRUNC                          = 0x200
+       PARENB                           = 0x1000
+       PARODD                           = 0x2000
+       PENDIN                           = 0x20000000
+       PERF_EVENT_IOC_DISABLE           = 0x20002401
+       PERF_EVENT_IOC_ENABLE            = 0x20002400
+       PERF_EVENT_IOC_ID                = 0x40042407
+       PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b
+       PERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409
+       PERF_EVENT_IOC_PERIOD            = 0x80082404
+       PERF_EVENT_IOC_QUERY_BPF         = 0xc004240a
+       PERF_EVENT_IOC_REFRESH           = 0x20002402
+       PERF_EVENT_IOC_RESET             = 0x20002403
+       PERF_EVENT_IOC_SET_BPF           = 0x80042408
+       PERF_EVENT_IOC_SET_FILTER        = 0x80042406
+       PERF_EVENT_IOC_SET_OUTPUT        = 0x20002405
+       PPPIOCATTACH                     = 0x8004743d
+       PPPIOCATTCHAN                    = 0x80047438
+       PPPIOCBRIDGECHAN                 = 0x80047435
+       PPPIOCCONNECT                    = 0x8004743a
+       PPPIOCDETACH                     = 0x8004743c
+       PPPIOCDISCONN                    = 0x20007439
+       PPPIOCGASYNCMAP                  = 0x40047458
+       PPPIOCGCHAN                      = 0x40047437
+       PPPIOCGDEBUG                     = 0x40047441
+       PPPIOCGFLAGS                     = 0x4004745a
+       PPPIOCGIDLE                      = 0x4008743f
+       PPPIOCGIDLE32                    = 0x4008743f
+       PPPIOCGIDLE64                    = 0x4010743f
+       PPPIOCGL2TPSTATS                 = 0x40487436
+       PPPIOCGMRU                       = 0x40047453
+       PPPIOCGRASYNCMAP                 = 0x40047455
+       PPPIOCGUNIT                      = 0x40047456
+       PPPIOCGXASYNCMAP                 = 0x40207450
+       PPPIOCSACTIVE                    = 0x80087446
+       PPPIOCSASYNCMAP                  = 0x80047457
+       PPPIOCSCOMPRESS                  = 0x800c744d
+       PPPIOCSDEBUG                     = 0x80047440
+       PPPIOCSFLAGS                     = 0x80047459
+       PPPIOCSMAXCID                    = 0x80047451
+       PPPIOCSMRRU                      = 0x8004743b
+       PPPIOCSMRU                       = 0x80047452
+       PPPIOCSNPMODE                    = 0x8008744b
+       PPPIOCSPASS                      = 0x80087447
+       PPPIOCSRASYNCMAP                 = 0x80047454
+       PPPIOCSXASYNCMAP                 = 0x8020744f
+       PPPIOCUNBRIDGECHAN               = 0x20007434
+       PPPIOCXFERUNIT                   = 0x2000744e
+       PROT_SAO                         = 0x10
+       PR_SET_PTRACER_ANY               = 0xffffffff
+       PTRACE_GETEVRREGS                = 0x14
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETREGS64                 = 0x16
+       PTRACE_GETVRREGS                 = 0x12
+       PTRACE_GETVSRREGS                = 0x1b
+       PTRACE_GET_DEBUGREG              = 0x19
+       PTRACE_SETEVRREGS                = 0x15
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETREGS64                 = 0x17
+       PTRACE_SETVRREGS                 = 0x13
+       PTRACE_SETVSRREGS                = 0x1c
+       PTRACE_SET_DEBUGREG              = 0x1a
+       PTRACE_SINGLEBLOCK               = 0x100
+       PTRACE_SYSEMU                    = 0x1d
+       PTRACE_SYSEMU_SINGLESTEP         = 0x1e
+       PT_CCR                           = 0x26
+       PT_CTR                           = 0x23
+       PT_DAR                           = 0x29
+       PT_DSCR                          = 0x2c
+       PT_DSISR                         = 0x2a
+       PT_FPR0                          = 0x30
+       PT_FPR31                         = 0x6e
+       PT_FPSCR                         = 0x71
+       PT_LNK                           = 0x24
+       PT_MQ                            = 0x27
+       PT_MSR                           = 0x21
+       PT_NIP                           = 0x20
+       PT_ORIG_R3                       = 0x22
+       PT_R0                            = 0x0
+       PT_R1                            = 0x1
+       PT_R10                           = 0xa
+       PT_R11                           = 0xb
+       PT_R12                           = 0xc
+       PT_R13                           = 0xd
+       PT_R14                           = 0xe
+       PT_R15                           = 0xf
+       PT_R16                           = 0x10
+       PT_R17                           = 0x11
+       PT_R18                           = 0x12
+       PT_R19                           = 0x13
+       PT_R2                            = 0x2
+       PT_R20                           = 0x14
+       PT_R21                           = 0x15
+       PT_R22                           = 0x16
+       PT_R23                           = 0x17
+       PT_R24                           = 0x18
+       PT_R25                           = 0x19
+       PT_R26                           = 0x1a
+       PT_R27                           = 0x1b
+       PT_R28                           = 0x1c
+       PT_R29                           = 0x1d
+       PT_R3                            = 0x3
+       PT_R30                           = 0x1e
+       PT_R31                           = 0x1f
+       PT_R4                            = 0x4
+       PT_R5                            = 0x5
+       PT_R6                            = 0x6
+       PT_R7                            = 0x7
+       PT_R8                            = 0x8
+       PT_R9                            = 0x9
+       PT_REGS_COUNT                    = 0x2c
+       PT_RESULT                        = 0x2b
+       PT_TRAP                          = 0x28
+       PT_XER                           = 0x25
+       RLIMIT_AS                        = 0x9
+       RLIMIT_MEMLOCK                   = 0x8
+       RLIMIT_NOFILE                    = 0x7
+       RLIMIT_NPROC                     = 0x6
+       RLIMIT_RSS                       = 0x5
+       RNDADDENTROPY                    = 0x80085203
+       RNDADDTOENTCNT                   = 0x80045201
+       RNDCLEARPOOL                     = 0x20005206
+       RNDGETENTCNT                     = 0x40045200
+       RNDGETPOOL                       = 0x40085202
+       RNDRESEEDCRNG                    = 0x20005207
+       RNDZAPENTCNT                     = 0x20005204
+       RTC_AIE_OFF                      = 0x20007002
+       RTC_AIE_ON                       = 0x20007001
+       RTC_ALM_READ                     = 0x40247008
+       RTC_ALM_SET                      = 0x80247007
+       RTC_EPOCH_READ                   = 0x4004700d
+       RTC_EPOCH_SET                    = 0x8004700e
+       RTC_IRQP_READ                    = 0x4004700b
+       RTC_IRQP_SET                     = 0x8004700c
+       RTC_PIE_OFF                      = 0x20007006
+       RTC_PIE_ON                       = 0x20007005
+       RTC_PLL_GET                      = 0x401c7011
+       RTC_PLL_SET                      = 0x801c7012
+       RTC_RD_TIME                      = 0x40247009
+       RTC_SET_TIME                     = 0x8024700a
+       RTC_UIE_OFF                      = 0x20007004
+       RTC_UIE_ON                       = 0x20007003
+       RTC_VL_CLR                       = 0x20007014
+       RTC_VL_READ                      = 0x40047013
+       RTC_WIE_OFF                      = 0x20007010
+       RTC_WIE_ON                       = 0x2000700f
+       RTC_WKALM_RD                     = 0x40287010
+       RTC_WKALM_SET                    = 0x8028700f
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPING_OPT_STATS       = 0x36
+       SCM_TIMESTAMPING_PKTINFO         = 0x3a
+       SCM_TIMESTAMPNS                  = 0x23
+       SCM_TXTIME                       = 0x3d
+       SCM_WIFI_STATUS                  = 0x29
+       SFD_CLOEXEC                      = 0x80000
+       SFD_NONBLOCK                     = 0x800
+       SIOCATMARK                       = 0x8905
+       SIOCGPGRP                        = 0x8904
+       SIOCGSTAMPNS_NEW                 = 0x40108907
+       SIOCGSTAMP_NEW                   = 0x40108906
+       SIOCINQ                          = 0x4004667f
+       SIOCOUTQ                         = 0x40047473
+       SIOCSPGRP                        = 0x8902
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x800
+       SOCK_STREAM                      = 0x1
+       SOL_SOCKET                       = 0x1
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BINDTOIFINDEX                 = 0x3e
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_BUSY_POLL_BUDGET              = 0x46
+       SO_CNX_ADVICE                    = 0x35
+       SO_COOKIE                        = 0x39
+       SO_DETACH_REUSEPORT_BPF          = 0x44
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_INCOMING_CPU                  = 0x31
+       SO_INCOMING_NAPI_ID              = 0x38
+       SO_KEEPALIVE                     = 0x9
+       SO_LINGER                        = 0xd
+       SO_LOCK_FILTER                   = 0x2c
+       SO_MARK                          = 0x24
+       SO_MAX_PACING_RATE               = 0x2f
+       SO_MEMINFO                       = 0x37
+       SO_NOFCS                         = 0x2b
+       SO_OOBINLINE                     = 0xa
+       SO_PASSCRED                      = 0x14
+       SO_PASSSEC                       = 0x22
+       SO_PEEK_OFF                      = 0x2a
+       SO_PEERCRED                      = 0x15
+       SO_PEERGROUPS                    = 0x3b
+       SO_PEERSEC                       = 0x1f
+       SO_PREFER_BUSY_POLL              = 0x45
+       SO_PROTOCOL                      = 0x26
+       SO_RCVBUF                        = 0x8
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x10
+       SO_RCVTIMEO                      = 0x12
+       SO_RCVTIMEO_NEW                  = 0x42
+       SO_RCVTIMEO_OLD                  = 0x12
+       SO_REUSEADDR                     = 0x2
+       SO_REUSEPORT                     = 0xf
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SELECT_ERR_QUEUE              = 0x2d
+       SO_SNDBUF                        = 0x7
+       SO_SNDBUFFORCE                   = 0x20
+       SO_SNDLOWAT                      = 0x11
+       SO_SNDTIMEO                      = 0x13
+       SO_SNDTIMEO_NEW                  = 0x43
+       SO_SNDTIMEO_OLD                  = 0x13
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPING_NEW              = 0x41
+       SO_TIMESTAMPING_OLD              = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TIMESTAMPNS_NEW               = 0x40
+       SO_TIMESTAMPNS_OLD               = 0x23
+       SO_TIMESTAMP_NEW                 = 0x3f
+       SO_TXTIME                        = 0x3d
+       SO_TYPE                          = 0x3
+       SO_WIFI_STATUS                   = 0x29
+       SO_ZEROCOPY                      = 0x3c
+       TAB1                             = 0x400
+       TAB2                             = 0x800
+       TAB3                             = 0xc00
+       TABDLY                           = 0xc00
+       TCFLSH                           = 0x2000741f
+       TCGETA                           = 0x40147417
+       TCGETS                           = 0x402c7413
+       TCSAFLUSH                        = 0x2
+       TCSBRK                           = 0x2000741d
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x80147418
+       TCSETAF                          = 0x8014741c
+       TCSETAW                          = 0x80147419
+       TCSETS                           = 0x802c7414
+       TCSETSF                          = 0x802c7416
+       TCSETSW                          = 0x802c7415
+       TCXONC                           = 0x2000741e
+       TFD_CLOEXEC                      = 0x80000
+       TFD_NONBLOCK                     = 0x800
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x541d
+       TIOCEXCL                         = 0x540c
+       TIOCGDEV                         = 0x40045432
+       TIOCGETC                         = 0x40067412
+       TIOCGETD                         = 0x5424
+       TIOCGETP                         = 0x40067408
+       TIOCGEXCL                        = 0x40045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGISO7816                     = 0x40285442
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGLTC                         = 0x40067474
+       TIOCGPGRP                        = 0x40047477
+       TIOCGPKT                         = 0x40045438
+       TIOCGPTLCK                       = 0x40045439
+       TIOCGPTN                         = 0x40045430
+       TIOCGPTPEER                      = 0x20005441
+       TIOCGRS485                       = 0x542e
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x5429
+       TIOCGSOFTCAR                     = 0x5419
+       TIOCGWINSZ                       = 0x40087468
+       TIOCINQ                          = 0x4004667f
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x5417
+       TIOCMBIS                         = 0x5416
+       TIOCMGET                         = 0x5415
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x5418
+       TIOCM_CAR                        = 0x40
+       TIOCM_CD                         = 0x40
+       TIOCM_CTS                        = 0x20
+       TIOCM_DSR                        = 0x100
+       TIOCM_LOOP                       = 0x8000
+       TIOCM_OUT1                       = 0x2000
+       TIOCM_OUT2                       = 0x4000
+       TIOCM_RI                         = 0x80
+       TIOCM_RNG                        = 0x80
+       TIOCM_SR                         = 0x10
+       TIOCM_ST                         = 0x8
+       TIOCNOTTY                        = 0x5422
+       TIOCNXCL                         = 0x540d
+       TIOCOUTQ                         = 0x40047473
+       TIOCPKT                          = 0x5420
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x540e
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETC                         = 0x80067411
+       TIOCSETD                         = 0x5423
+       TIOCSETN                         = 0x8006740a
+       TIOCSETP                         = 0x80067409
+       TIOCSIG                          = 0x80045436
+       TIOCSISO7816                     = 0xc0285443
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSLTC                         = 0x80067475
+       TIOCSPGRP                        = 0x80047476
+       TIOCSPTLCK                       = 0x80045431
+       TIOCSRS485                       = 0x542f
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x541a
+       TIOCSTART                        = 0x2000746e
+       TIOCSTI                          = 0x5412
+       TIOCSTOP                         = 0x2000746f
+       TIOCSWINSZ                       = 0x80087467
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x400000
+       TUNATTACHFILTER                  = 0x800854d5
+       TUNDETACHFILTER                  = 0x800854d6
+       TUNGETDEVNETNS                   = 0x200054e3
+       TUNGETFEATURES                   = 0x400454cf
+       TUNGETFILTER                     = 0x400854db
+       TUNGETIFF                        = 0x400454d2
+       TUNGETSNDBUF                     = 0x400454d3
+       TUNGETVNETBE                     = 0x400454df
+       TUNGETVNETHDRSZ                  = 0x400454d7
+       TUNGETVNETLE                     = 0x400454dd
+       TUNSETCARRIER                    = 0x800454e2
+       TUNSETDEBUG                      = 0x800454c9
+       TUNSETFILTEREBPF                 = 0x400454e1
+       TUNSETGROUP                      = 0x800454ce
+       TUNSETIFF                        = 0x800454ca
+       TUNSETIFINDEX                    = 0x800454da
+       TUNSETLINK                       = 0x800454cd
+       TUNSETNOCSUM                     = 0x800454c8
+       TUNSETOFFLOAD                    = 0x800454d0
+       TUNSETOWNER                      = 0x800454cc
+       TUNSETPERSIST                    = 0x800454cb
+       TUNSETQUEUE                      = 0x800454d9
+       TUNSETSNDBUF                     = 0x800454d4
+       TUNSETSTEERINGEBPF               = 0x400454e0
+       TUNSETTXFILTER                   = 0x800454d1
+       TUNSETVNETBE                     = 0x800454de
+       TUNSETVNETHDRSZ                  = 0x800454d8
+       TUNSETVNETLE                     = 0x800454dc
+       UBI_IOCATT                       = 0x80186f40
+       UBI_IOCDET                       = 0x80046f41
+       UBI_IOCEBCH                      = 0x80044f02
+       UBI_IOCEBER                      = 0x80044f01
+       UBI_IOCEBISMAP                   = 0x40044f05
+       UBI_IOCEBMAP                     = 0x80084f03
+       UBI_IOCEBUNMAP                   = 0x80044f04
+       UBI_IOCMKVOL                     = 0x80986f00
+       UBI_IOCRMVOL                     = 0x80046f01
+       UBI_IOCRNVOL                     = 0x91106f03
+       UBI_IOCRPEB                      = 0x80046f04
+       UBI_IOCRSVOL                     = 0x800c6f02
+       UBI_IOCSETVOLPROP                = 0x80104f06
+       UBI_IOCSPEB                      = 0x80046f05
+       UBI_IOCVOLCRBLK                  = 0x80804f07
+       UBI_IOCVOLRMBLK                  = 0x20004f08
+       UBI_IOCVOLUP                     = 0x80084f00
+       VDISCARD                         = 0x10
+       VEOF                             = 0x4
+       VEOL                             = 0x6
+       VEOL2                            = 0x8
+       VMIN                             = 0x5
+       VREPRINT                         = 0xb
+       VSTART                           = 0xd
+       VSTOP                            = 0xe
+       VSUSP                            = 0xc
+       VSWTC                            = 0x9
+       VT1                              = 0x10000
+       VTDLY                            = 0x10000
+       VTIME                            = 0x7
+       VWERASE                          = 0xa
+       WDIOC_GETBOOTSTATUS              = 0x40045702
+       WDIOC_GETPRETIMEOUT              = 0x40045709
+       WDIOC_GETSTATUS                  = 0x40045701
+       WDIOC_GETSUPPORT                 = 0x40285700
+       WDIOC_GETTEMP                    = 0x40045703
+       WDIOC_GETTIMELEFT                = 0x4004570a
+       WDIOC_GETTIMEOUT                 = 0x40045707
+       WDIOC_KEEPALIVE                  = 0x40045705
+       WDIOC_SETOPTIONS                 = 0x40045704
+       WORDSIZE                         = 0x20
+       XCASE                            = 0x4000
+       XTABS                            = 0xc00
+       _HIDIOCGRAWNAME                  = 0x40804804
+       _HIDIOCGRAWPHYS                  = 0x40404805
+       _HIDIOCGRAWUNIQ                  = 0x40404808
+)
+
+// Errors
+const (
+       EADDRINUSE      = syscall.Errno(0x62)
+       EADDRNOTAVAIL   = syscall.Errno(0x63)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x61)
+       EALREADY        = syscall.Errno(0x72)
+       EBADE           = syscall.Errno(0x34)
+       EBADFD          = syscall.Errno(0x4d)
+       EBADMSG         = syscall.Errno(0x4a)
+       EBADR           = syscall.Errno(0x35)
+       EBADRQC         = syscall.Errno(0x38)
+       EBADSLT         = syscall.Errno(0x39)
+       EBFONT          = syscall.Errno(0x3b)
+       ECANCELED       = syscall.Errno(0x7d)
+       ECHRNG          = syscall.Errno(0x2c)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x67)
+       ECONNREFUSED    = syscall.Errno(0x6f)
+       ECONNRESET      = syscall.Errno(0x68)
+       EDEADLK         = syscall.Errno(0x23)
+       EDEADLOCK       = syscall.Errno(0x3a)
+       EDESTADDRREQ    = syscall.Errno(0x59)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x7a)
+       EHOSTDOWN       = syscall.Errno(0x70)
+       EHOSTUNREACH    = syscall.Errno(0x71)
+       EHWPOISON       = syscall.Errno(0x85)
+       EIDRM           = syscall.Errno(0x2b)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x73)
+       EISCONN         = syscall.Errno(0x6a)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x7f)
+       EKEYREJECTED    = syscall.Errno(0x81)
+       EKEYREVOKED     = syscall.Errno(0x80)
+       EL2HLT          = syscall.Errno(0x33)
+       EL2NSYNC        = syscall.Errno(0x2d)
+       EL3HLT          = syscall.Errno(0x2e)
+       EL3RST          = syscall.Errno(0x2f)
+       ELIBACC         = syscall.Errno(0x4f)
+       ELIBBAD         = syscall.Errno(0x50)
+       ELIBEXEC        = syscall.Errno(0x53)
+       ELIBMAX         = syscall.Errno(0x52)
+       ELIBSCN         = syscall.Errno(0x51)
+       ELNRNG          = syscall.Errno(0x30)
+       ELOOP           = syscall.Errno(0x28)
+       EMEDIUMTYPE     = syscall.Errno(0x7c)
+       EMSGSIZE        = syscall.Errno(0x5a)
+       EMULTIHOP       = syscall.Errno(0x48)
+       ENAMETOOLONG    = syscall.Errno(0x24)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x64)
+       ENETRESET       = syscall.Errno(0x66)
+       ENETUNREACH     = syscall.Errno(0x65)
+       ENOANO          = syscall.Errno(0x37)
+       ENOBUFS         = syscall.Errno(0x69)
+       ENOCSI          = syscall.Errno(0x32)
+       ENODATA         = syscall.Errno(0x3d)
+       ENOKEY          = syscall.Errno(0x7e)
+       ENOLCK          = syscall.Errno(0x25)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x7b)
+       ENOMSG          = syscall.Errno(0x2a)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x5c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x26)
+       ENOTCONN        = syscall.Errno(0x6b)
+       ENOTEMPTY       = syscall.Errno(0x27)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x83)
+       ENOTSOCK        = syscall.Errno(0x58)
+       ENOTSUP         = syscall.Errno(0x5f)
+       ENOTUNIQ        = syscall.Errno(0x4c)
+       EOPNOTSUPP      = syscall.Errno(0x5f)
+       EOVERFLOW       = syscall.Errno(0x4b)
+       EOWNERDEAD      = syscall.Errno(0x82)
+       EPFNOSUPPORT    = syscall.Errno(0x60)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x5d)
+       EPROTOTYPE      = syscall.Errno(0x5b)
+       EREMCHG         = syscall.Errno(0x4e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x55)
+       ERFKILL         = syscall.Errno(0x84)
+       ESHUTDOWN       = syscall.Errno(0x6c)
+       ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x74)
+       ESTRPIPE        = syscall.Errno(0x56)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x6e)
+       ETOOMANYREFS    = syscall.Errno(0x6d)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x31)
+       EUSERS          = syscall.Errno(0x57)
+       EXFULL          = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+       SIGBUS    = syscall.Signal(0x7)
+       SIGCHLD   = syscall.Signal(0x11)
+       SIGCLD    = syscall.Signal(0x11)
+       SIGCONT   = syscall.Signal(0x12)
+       SIGIO     = syscall.Signal(0x1d)
+       SIGPOLL   = syscall.Signal(0x1d)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1e)
+       SIGSTKFLT = syscall.Signal(0x10)
+       SIGSTOP   = syscall.Signal(0x13)
+       SIGSYS    = syscall.Signal(0x1f)
+       SIGTSTP   = syscall.Signal(0x14)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x17)
+       SIGUSR1   = syscall.Signal(0xa)
+       SIGUSR2   = syscall.Signal(0xc)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// Error table
+var errorList = [...]struct {
+       num  syscall.Errno
+       name string
+       desc string
+}{
+       {1, "EPERM", "operation not permitted"},
+       {2, "ENOENT", "no such file or directory"},
+       {3, "ESRCH", "no such process"},
+       {4, "EINTR", "interrupted system call"},
+       {5, "EIO", "input/output error"},
+       {6, "ENXIO", "no such device or address"},
+       {7, "E2BIG", "argument list too long"},
+       {8, "ENOEXEC", "exec format error"},
+       {9, "EBADF", "bad file descriptor"},
+       {10, "ECHILD", "no child processes"},
+       {11, "EAGAIN", "resource temporarily unavailable"},
+       {12, "ENOMEM", "cannot allocate memory"},
+       {13, "EACCES", "permission denied"},
+       {14, "EFAULT", "bad address"},
+       {15, "ENOTBLK", "block device required"},
+       {16, "EBUSY", "device or resource busy"},
+       {17, "EEXIST", "file exists"},
+       {18, "EXDEV", "invalid cross-device link"},
+       {19, "ENODEV", "no such device"},
+       {20, "ENOTDIR", "not a directory"},
+       {21, "EISDIR", "is a directory"},
+       {22, "EINVAL", "invalid argument"},
+       {23, "ENFILE", "too many open files in system"},
+       {24, "EMFILE", "too many open files"},
+       {25, "ENOTTY", "inappropriate ioctl for device"},
+       {26, "ETXTBSY", "text file busy"},
+       {27, "EFBIG", "file too large"},
+       {28, "ENOSPC", "no space left on device"},
+       {29, "ESPIPE", "illegal seek"},
+       {30, "EROFS", "read-only file system"},
+       {31, "EMLINK", "too many links"},
+       {32, "EPIPE", "broken pipe"},
+       {33, "EDOM", "numerical argument out of domain"},
+       {34, "ERANGE", "numerical result out of range"},
+       {35, "EDEADLK", "resource deadlock avoided"},
+       {36, "ENAMETOOLONG", "file name too long"},
+       {37, "ENOLCK", "no locks available"},
+       {38, "ENOSYS", "function not implemented"},
+       {39, "ENOTEMPTY", "directory not empty"},
+       {40, "ELOOP", "too many levels of symbolic links"},
+       {42, "ENOMSG", "no message of desired type"},
+       {43, "EIDRM", "identifier removed"},
+       {44, "ECHRNG", "channel number out of range"},
+       {45, "EL2NSYNC", "level 2 not synchronized"},
+       {46, "EL3HLT", "level 3 halted"},
+       {47, "EL3RST", "level 3 reset"},
+       {48, "ELNRNG", "link number out of range"},
+       {49, "EUNATCH", "protocol driver not attached"},
+       {50, "ENOCSI", "no CSI structure available"},
+       {51, "EL2HLT", "level 2 halted"},
+       {52, "EBADE", "invalid exchange"},
+       {53, "EBADR", "invalid request descriptor"},
+       {54, "EXFULL", "exchange full"},
+       {55, "ENOANO", "no anode"},
+       {56, "EBADRQC", "invalid request code"},
+       {57, "EBADSLT", "invalid slot"},
+       {58, "EDEADLOCK", "file locking deadlock error"},
+       {59, "EBFONT", "bad font file format"},
+       {60, "ENOSTR", "device not a stream"},
+       {61, "ENODATA", "no data available"},
+       {62, "ETIME", "timer expired"},
+       {63, "ENOSR", "out of streams resources"},
+       {64, "ENONET", "machine is not on the network"},
+       {65, "ENOPKG", "package not installed"},
+       {66, "EREMOTE", "object is remote"},
+       {67, "ENOLINK", "link has been severed"},
+       {68, "EADV", "advertise error"},
+       {69, "ESRMNT", "srmount error"},
+       {70, "ECOMM", "communication error on send"},
+       {71, "EPROTO", "protocol error"},
+       {72, "EMULTIHOP", "multihop attempted"},
+       {73, "EDOTDOT", "RFS specific error"},
+       {74, "EBADMSG", "bad message"},
+       {75, "EOVERFLOW", "value too large for defined data type"},
+       {76, "ENOTUNIQ", "name not unique on network"},
+       {77, "EBADFD", "file descriptor in bad state"},
+       {78, "EREMCHG", "remote address changed"},
+       {79, "ELIBACC", "can not access a needed shared library"},
+       {80, "ELIBBAD", "accessing a corrupted shared library"},
+       {81, "ELIBSCN", ".lib section in a.out corrupted"},
+       {82, "ELIBMAX", "attempting to link in too many shared libraries"},
+       {83, "ELIBEXEC", "cannot exec a shared library directly"},
+       {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
+       {85, "ERESTART", "interrupted system call should be restarted"},
+       {86, "ESTRPIPE", "streams pipe error"},
+       {87, "EUSERS", "too many users"},
+       {88, "ENOTSOCK", "socket operation on non-socket"},
+       {89, "EDESTADDRREQ", "destination address required"},
+       {90, "EMSGSIZE", "message too long"},
+       {91, "EPROTOTYPE", "protocol wrong type for socket"},
+       {92, "ENOPROTOOPT", "protocol not available"},
+       {93, "EPROTONOSUPPORT", "protocol not supported"},
+       {94, "ESOCKTNOSUPPORT", "socket type not supported"},
+       {95, "ENOTSUP", "operation not supported"},
+       {96, "EPFNOSUPPORT", "protocol family not supported"},
+       {97, "EAFNOSUPPORT", "address family not supported by protocol"},
+       {98, "EADDRINUSE", "address already in use"},
+       {99, "EADDRNOTAVAIL", "cannot assign requested address"},
+       {100, "ENETDOWN", "network is down"},
+       {101, "ENETUNREACH", "network is unreachable"},
+       {102, "ENETRESET", "network dropped connection on reset"},
+       {103, "ECONNABORTED", "software caused connection abort"},
+       {104, "ECONNRESET", "connection reset by peer"},
+       {105, "ENOBUFS", "no buffer space available"},
+       {106, "EISCONN", "transport endpoint is already connected"},
+       {107, "ENOTCONN", "transport endpoint is not connected"},
+       {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
+       {109, "ETOOMANYREFS", "too many references: cannot splice"},
+       {110, "ETIMEDOUT", "connection timed out"},
+       {111, "ECONNREFUSED", "connection refused"},
+       {112, "EHOSTDOWN", "host is down"},
+       {113, "EHOSTUNREACH", "no route to host"},
+       {114, "EALREADY", "operation already in progress"},
+       {115, "EINPROGRESS", "operation now in progress"},
+       {116, "ESTALE", "stale file handle"},
+       {117, "EUCLEAN", "structure needs cleaning"},
+       {118, "ENOTNAM", "not a XENIX named type file"},
+       {119, "ENAVAIL", "no XENIX semaphores available"},
+       {120, "EISNAM", "is a named type file"},
+       {121, "EREMOTEIO", "remote I/O error"},
+       {122, "EDQUOT", "disk quota exceeded"},
+       {123, "ENOMEDIUM", "no medium found"},
+       {124, "EMEDIUMTYPE", "wrong medium type"},
+       {125, "ECANCELED", "operation canceled"},
+       {126, "ENOKEY", "required key not available"},
+       {127, "EKEYEXPIRED", "key has expired"},
+       {128, "EKEYREVOKED", "key has been revoked"},
+       {129, "EKEYREJECTED", "key was rejected by service"},
+       {130, "EOWNERDEAD", "owner died"},
+       {131, "ENOTRECOVERABLE", "state not recoverable"},
+       {132, "ERFKILL", "operation not possible due to RF-kill"},
+       {133, "EHWPOISON", "memory page has hardware error"},
+}
+
+// Signal table
+var signalList = [...]struct {
+       num  syscall.Signal
+       name string
+       desc string
+}{
+       {1, "SIGHUP", "hangup"},
+       {2, "SIGINT", "interrupt"},
+       {3, "SIGQUIT", "quit"},
+       {4, "SIGILL", "illegal instruction"},
+       {5, "SIGTRAP", "trace/breakpoint trap"},
+       {6, "SIGABRT", "aborted"},
+       {7, "SIGBUS", "bus error"},
+       {8, "SIGFPE", "floating point exception"},
+       {9, "SIGKILL", "killed"},
+       {10, "SIGUSR1", "user defined signal 1"},
+       {11, "SIGSEGV", "segmentation fault"},
+       {12, "SIGUSR2", "user defined signal 2"},
+       {13, "SIGPIPE", "broken pipe"},
+       {14, "SIGALRM", "alarm clock"},
+       {15, "SIGTERM", "terminated"},
+       {16, "SIGSTKFLT", "stack fault"},
+       {17, "SIGCHLD", "child exited"},
+       {18, "SIGCONT", "continued"},
+       {19, "SIGSTOP", "stopped (signal)"},
+       {20, "SIGTSTP", "stopped"},
+       {21, "SIGTTIN", "stopped (tty input)"},
+       {22, "SIGTTOU", "stopped (tty output)"},
+       {23, "SIGURG", "urgent I/O condition"},
+       {24, "SIGXCPU", "CPU time limit exceeded"},
+       {25, "SIGXFSZ", "file size limit exceeded"},
+       {26, "SIGVTALRM", "virtual timer expired"},
+       {27, "SIGPROF", "profiling timer expired"},
+       {28, "SIGWINCH", "window changed"},
+       {29, "SIGIO", "I/O possible"},
+       {30, "SIGPWR", "power failure"},
+       {31, "SIGSYS", "bad system call"},
+}
index c8c79090387034d548e8a1a1b1fc3f646f978f75..4e87b4bebd5f09e777fe21be666fe7ebfbd087d2 100644 (file)
@@ -164,6 +164,12 @@ const (
        MAP_PRIVATE                     = 0x1 // changes are private
        MAP_SHARED                      = 0x2 // changes are shared
        MAP_FIXED                       = 0x4 // place exactly
+       MCAST_JOIN_GROUP                = 40
+       MCAST_LEAVE_GROUP               = 41
+       MCAST_JOIN_SOURCE_GROUP         = 42
+       MCAST_LEAVE_SOURCE_GROUP        = 43
+       MCAST_BLOCK_SOURCE              = 44
+       MCAST_UNBLOCK_SOURCE            = 45
        MS_SYNC                         = 0x1 // msync - synchronous writes
        MS_ASYNC                        = 0x2 // asynchronous writes
        MS_INVALIDATE                   = 0x4 // invalidate mappings
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go
new file mode 100644 (file)
index 0000000..927cf1a
--- /dev/null
@@ -0,0 +1,762 @@
+// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+//go:build linux && ppc
+// +build linux,ppc
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
+       _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(int64(r0)<<32 | int64(r1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func dup2(oldfd int, newfd int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+       r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
+       egid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+       r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
+       euid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+       r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
+       gid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+       r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
+       uid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit() (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ioperm(from int, num int, on int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setfsgid(gid int) (prev int, err error) {
+       r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+       prev = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setfsuid(uid int) (prev int, err error) {
+       r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+       prev = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+       tt = Time_t(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getrlimit(resource int, rlim *rlimit32) (err error) {
+       _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setrlimit(resource int, rlim *rlimit32) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func syncFileRange2(fd int, flags int, off int64, n int64) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(cmdline)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go
new file mode 100644 (file)
index 0000000..7693656
--- /dev/null
@@ -0,0 +1,433 @@
+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+//go:build ppc && linux
+// +build ppc,linux
+
+package unix
+
+const (
+       SYS_RESTART_SYSCALL              = 0
+       SYS_EXIT                         = 1
+       SYS_FORK                         = 2
+       SYS_READ                         = 3
+       SYS_WRITE                        = 4
+       SYS_OPEN                         = 5
+       SYS_CLOSE                        = 6
+       SYS_WAITPID                      = 7
+       SYS_CREAT                        = 8
+       SYS_LINK                         = 9
+       SYS_UNLINK                       = 10
+       SYS_EXECVE                       = 11
+       SYS_CHDIR                        = 12
+       SYS_TIME                         = 13
+       SYS_MKNOD                        = 14
+       SYS_CHMOD                        = 15
+       SYS_LCHOWN                       = 16
+       SYS_BREAK                        = 17
+       SYS_OLDSTAT                      = 18
+       SYS_LSEEK                        = 19
+       SYS_GETPID                       = 20
+       SYS_MOUNT                        = 21
+       SYS_UMOUNT                       = 22
+       SYS_SETUID                       = 23
+       SYS_GETUID                       = 24
+       SYS_STIME                        = 25
+       SYS_PTRACE                       = 26
+       SYS_ALARM                        = 27
+       SYS_OLDFSTAT                     = 28
+       SYS_PAUSE                        = 29
+       SYS_UTIME                        = 30
+       SYS_STTY                         = 31
+       SYS_GTTY                         = 32
+       SYS_ACCESS                       = 33
+       SYS_NICE                         = 34
+       SYS_FTIME                        = 35
+       SYS_SYNC                         = 36
+       SYS_KILL                         = 37
+       SYS_RENAME                       = 38
+       SYS_MKDIR                        = 39
+       SYS_RMDIR                        = 40
+       SYS_DUP                          = 41
+       SYS_PIPE                         = 42
+       SYS_TIMES                        = 43
+       SYS_PROF                         = 44
+       SYS_BRK                          = 45
+       SYS_SETGID                       = 46
+       SYS_GETGID                       = 47
+       SYS_SIGNAL                       = 48
+       SYS_GETEUID                      = 49
+       SYS_GETEGID                      = 50
+       SYS_ACCT                         = 51
+       SYS_UMOUNT2                      = 52
+       SYS_LOCK                         = 53
+       SYS_IOCTL                        = 54
+       SYS_FCNTL                        = 55
+       SYS_MPX                          = 56
+       SYS_SETPGID                      = 57
+       SYS_ULIMIT                       = 58
+       SYS_OLDOLDUNAME                  = 59
+       SYS_UMASK                        = 60
+       SYS_CHROOT                       = 61
+       SYS_USTAT                        = 62
+       SYS_DUP2                         = 63
+       SYS_GETPPID                      = 64
+       SYS_GETPGRP                      = 65
+       SYS_SETSID                       = 66
+       SYS_SIGACTION                    = 67
+       SYS_SGETMASK                     = 68
+       SYS_SSETMASK                     = 69
+       SYS_SETREUID                     = 70
+       SYS_SETREGID                     = 71
+       SYS_SIGSUSPEND                   = 72
+       SYS_SIGPENDING                   = 73
+       SYS_SETHOSTNAME                  = 74
+       SYS_SETRLIMIT                    = 75
+       SYS_GETRLIMIT                    = 76
+       SYS_GETRUSAGE                    = 77
+       SYS_GETTIMEOFDAY                 = 78
+       SYS_SETTIMEOFDAY                 = 79
+       SYS_GETGROUPS                    = 80
+       SYS_SETGROUPS                    = 81
+       SYS_SELECT                       = 82
+       SYS_SYMLINK                      = 83
+       SYS_OLDLSTAT                     = 84
+       SYS_READLINK                     = 85
+       SYS_USELIB                       = 86
+       SYS_SWAPON                       = 87
+       SYS_REBOOT                       = 88
+       SYS_READDIR                      = 89
+       SYS_MMAP                         = 90
+       SYS_MUNMAP                       = 91
+       SYS_TRUNCATE                     = 92
+       SYS_FTRUNCATE                    = 93
+       SYS_FCHMOD                       = 94
+       SYS_FCHOWN                       = 95
+       SYS_GETPRIORITY                  = 96
+       SYS_SETPRIORITY                  = 97
+       SYS_PROFIL                       = 98
+       SYS_STATFS                       = 99
+       SYS_FSTATFS                      = 100
+       SYS_IOPERM                       = 101
+       SYS_SOCKETCALL                   = 102
+       SYS_SYSLOG                       = 103
+       SYS_SETITIMER                    = 104
+       SYS_GETITIMER                    = 105
+       SYS_STAT                         = 106
+       SYS_LSTAT                        = 107
+       SYS_FSTAT                        = 108
+       SYS_OLDUNAME                     = 109
+       SYS_IOPL                         = 110
+       SYS_VHANGUP                      = 111
+       SYS_IDLE                         = 112
+       SYS_VM86                         = 113
+       SYS_WAIT4                        = 114
+       SYS_SWAPOFF                      = 115
+       SYS_SYSINFO                      = 116
+       SYS_IPC                          = 117
+       SYS_FSYNC                        = 118
+       SYS_SIGRETURN                    = 119
+       SYS_CLONE                        = 120
+       SYS_SETDOMAINNAME                = 121
+       SYS_UNAME                        = 122
+       SYS_MODIFY_LDT                   = 123
+       SYS_ADJTIMEX                     = 124
+       SYS_MPROTECT                     = 125
+       SYS_SIGPROCMASK                  = 126
+       SYS_CREATE_MODULE                = 127
+       SYS_INIT_MODULE                  = 128
+       SYS_DELETE_MODULE                = 129
+       SYS_GET_KERNEL_SYMS              = 130
+       SYS_QUOTACTL                     = 131
+       SYS_GETPGID                      = 132
+       SYS_FCHDIR                       = 133
+       SYS_BDFLUSH                      = 134
+       SYS_SYSFS                        = 135
+       SYS_PERSONALITY                  = 136
+       SYS_AFS_SYSCALL                  = 137
+       SYS_SETFSUID                     = 138
+       SYS_SETFSGID                     = 139
+       SYS__LLSEEK                      = 140
+       SYS_GETDENTS                     = 141
+       SYS__NEWSELECT                   = 142
+       SYS_FLOCK                        = 143
+       SYS_MSYNC                        = 144
+       SYS_READV                        = 145
+       SYS_WRITEV                       = 146
+       SYS_GETSID                       = 147
+       SYS_FDATASYNC                    = 148
+       SYS__SYSCTL                      = 149
+       SYS_MLOCK                        = 150
+       SYS_MUNLOCK                      = 151
+       SYS_MLOCKALL                     = 152
+       SYS_MUNLOCKALL                   = 153
+       SYS_SCHED_SETPARAM               = 154
+       SYS_SCHED_GETPARAM               = 155
+       SYS_SCHED_SETSCHEDULER           = 156
+       SYS_SCHED_GETSCHEDULER           = 157
+       SYS_SCHED_YIELD                  = 158
+       SYS_SCHED_GET_PRIORITY_MAX       = 159
+       SYS_SCHED_GET_PRIORITY_MIN       = 160
+       SYS_SCHED_RR_GET_INTERVAL        = 161
+       SYS_NANOSLEEP                    = 162
+       SYS_MREMAP                       = 163
+       SYS_SETRESUID                    = 164
+       SYS_GETRESUID                    = 165
+       SYS_QUERY_MODULE                 = 166
+       SYS_POLL                         = 167
+       SYS_NFSSERVCTL                   = 168
+       SYS_SETRESGID                    = 169
+       SYS_GETRESGID                    = 170
+       SYS_PRCTL                        = 171
+       SYS_RT_SIGRETURN                 = 172
+       SYS_RT_SIGACTION                 = 173
+       SYS_RT_SIGPROCMASK               = 174
+       SYS_RT_SIGPENDING                = 175
+       SYS_RT_SIGTIMEDWAIT              = 176
+       SYS_RT_SIGQUEUEINFO              = 177
+       SYS_RT_SIGSUSPEND                = 178
+       SYS_PREAD64                      = 179
+       SYS_PWRITE64                     = 180
+       SYS_CHOWN                        = 181
+       SYS_GETCWD                       = 182
+       SYS_CAPGET                       = 183
+       SYS_CAPSET                       = 184
+       SYS_SIGALTSTACK                  = 185
+       SYS_SENDFILE                     = 186
+       SYS_GETPMSG                      = 187
+       SYS_PUTPMSG                      = 188
+       SYS_VFORK                        = 189
+       SYS_UGETRLIMIT                   = 190
+       SYS_READAHEAD                    = 191
+       SYS_MMAP2                        = 192
+       SYS_TRUNCATE64                   = 193
+       SYS_FTRUNCATE64                  = 194
+       SYS_STAT64                       = 195
+       SYS_LSTAT64                      = 196
+       SYS_FSTAT64                      = 197
+       SYS_PCICONFIG_READ               = 198
+       SYS_PCICONFIG_WRITE              = 199
+       SYS_PCICONFIG_IOBASE             = 200
+       SYS_MULTIPLEXER                  = 201
+       SYS_GETDENTS64                   = 202
+       SYS_PIVOT_ROOT                   = 203
+       SYS_FCNTL64                      = 204
+       SYS_MADVISE                      = 205
+       SYS_MINCORE                      = 206
+       SYS_GETTID                       = 207
+       SYS_TKILL                        = 208
+       SYS_SETXATTR                     = 209
+       SYS_LSETXATTR                    = 210
+       SYS_FSETXATTR                    = 211
+       SYS_GETXATTR                     = 212
+       SYS_LGETXATTR                    = 213
+       SYS_FGETXATTR                    = 214
+       SYS_LISTXATTR                    = 215
+       SYS_LLISTXATTR                   = 216
+       SYS_FLISTXATTR                   = 217
+       SYS_REMOVEXATTR                  = 218
+       SYS_LREMOVEXATTR                 = 219
+       SYS_FREMOVEXATTR                 = 220
+       SYS_FUTEX                        = 221
+       SYS_SCHED_SETAFFINITY            = 222
+       SYS_SCHED_GETAFFINITY            = 223
+       SYS_TUXCALL                      = 225
+       SYS_SENDFILE64                   = 226
+       SYS_IO_SETUP                     = 227
+       SYS_IO_DESTROY                   = 228
+       SYS_IO_GETEVENTS                 = 229
+       SYS_IO_SUBMIT                    = 230
+       SYS_IO_CANCEL                    = 231
+       SYS_SET_TID_ADDRESS              = 232
+       SYS_FADVISE64                    = 233
+       SYS_EXIT_GROUP                   = 234
+       SYS_LOOKUP_DCOOKIE               = 235
+       SYS_EPOLL_CREATE                 = 236
+       SYS_EPOLL_CTL                    = 237
+       SYS_EPOLL_WAIT                   = 238
+       SYS_REMAP_FILE_PAGES             = 239
+       SYS_TIMER_CREATE                 = 240
+       SYS_TIMER_SETTIME                = 241
+       SYS_TIMER_GETTIME                = 242
+       SYS_TIMER_GETOVERRUN             = 243
+       SYS_TIMER_DELETE                 = 244
+       SYS_CLOCK_SETTIME                = 245
+       SYS_CLOCK_GETTIME                = 246
+       SYS_CLOCK_GETRES                 = 247
+       SYS_CLOCK_NANOSLEEP              = 248
+       SYS_SWAPCONTEXT                  = 249
+       SYS_TGKILL                       = 250
+       SYS_UTIMES                       = 251
+       SYS_STATFS64                     = 252
+       SYS_FSTATFS64                    = 253
+       SYS_FADVISE64_64                 = 254
+       SYS_RTAS                         = 255
+       SYS_SYS_DEBUG_SETCONTEXT         = 256
+       SYS_MIGRATE_PAGES                = 258
+       SYS_MBIND                        = 259
+       SYS_GET_MEMPOLICY                = 260
+       SYS_SET_MEMPOLICY                = 261
+       SYS_MQ_OPEN                      = 262
+       SYS_MQ_UNLINK                    = 263
+       SYS_MQ_TIMEDSEND                 = 264
+       SYS_MQ_TIMEDRECEIVE              = 265
+       SYS_MQ_NOTIFY                    = 266
+       SYS_MQ_GETSETATTR                = 267
+       SYS_KEXEC_LOAD                   = 268
+       SYS_ADD_KEY                      = 269
+       SYS_REQUEST_KEY                  = 270
+       SYS_KEYCTL                       = 271
+       SYS_WAITID                       = 272
+       SYS_IOPRIO_SET                   = 273
+       SYS_IOPRIO_GET                   = 274
+       SYS_INOTIFY_INIT                 = 275
+       SYS_INOTIFY_ADD_WATCH            = 276
+       SYS_INOTIFY_RM_WATCH             = 277
+       SYS_SPU_RUN                      = 278
+       SYS_SPU_CREATE                   = 279
+       SYS_PSELECT6                     = 280
+       SYS_PPOLL                        = 281
+       SYS_UNSHARE                      = 282
+       SYS_SPLICE                       = 283
+       SYS_TEE                          = 284
+       SYS_VMSPLICE                     = 285
+       SYS_OPENAT                       = 286
+       SYS_MKDIRAT                      = 287
+       SYS_MKNODAT                      = 288
+       SYS_FCHOWNAT                     = 289
+       SYS_FUTIMESAT                    = 290
+       SYS_FSTATAT64                    = 291
+       SYS_UNLINKAT                     = 292
+       SYS_RENAMEAT                     = 293
+       SYS_LINKAT                       = 294
+       SYS_SYMLINKAT                    = 295
+       SYS_READLINKAT                   = 296
+       SYS_FCHMODAT                     = 297
+       SYS_FACCESSAT                    = 298
+       SYS_GET_ROBUST_LIST              = 299
+       SYS_SET_ROBUST_LIST              = 300
+       SYS_MOVE_PAGES                   = 301
+       SYS_GETCPU                       = 302
+       SYS_EPOLL_PWAIT                  = 303
+       SYS_UTIMENSAT                    = 304
+       SYS_SIGNALFD                     = 305
+       SYS_TIMERFD_CREATE               = 306
+       SYS_EVENTFD                      = 307
+       SYS_SYNC_FILE_RANGE2             = 308
+       SYS_FALLOCATE                    = 309
+       SYS_SUBPAGE_PROT                 = 310
+       SYS_TIMERFD_SETTIME              = 311
+       SYS_TIMERFD_GETTIME              = 312
+       SYS_SIGNALFD4                    = 313
+       SYS_EVENTFD2                     = 314
+       SYS_EPOLL_CREATE1                = 315
+       SYS_DUP3                         = 316
+       SYS_PIPE2                        = 317
+       SYS_INOTIFY_INIT1                = 318
+       SYS_PERF_EVENT_OPEN              = 319
+       SYS_PREADV                       = 320
+       SYS_PWRITEV                      = 321
+       SYS_RT_TGSIGQUEUEINFO            = 322
+       SYS_FANOTIFY_INIT                = 323
+       SYS_FANOTIFY_MARK                = 324
+       SYS_PRLIMIT64                    = 325
+       SYS_SOCKET                       = 326
+       SYS_BIND                         = 327
+       SYS_CONNECT                      = 328
+       SYS_LISTEN                       = 329
+       SYS_ACCEPT                       = 330
+       SYS_GETSOCKNAME                  = 331
+       SYS_GETPEERNAME                  = 332
+       SYS_SOCKETPAIR                   = 333
+       SYS_SEND                         = 334
+       SYS_SENDTO                       = 335
+       SYS_RECV                         = 336
+       SYS_RECVFROM                     = 337
+       SYS_SHUTDOWN                     = 338
+       SYS_SETSOCKOPT                   = 339
+       SYS_GETSOCKOPT                   = 340
+       SYS_SENDMSG                      = 341
+       SYS_RECVMSG                      = 342
+       SYS_RECVMMSG                     = 343
+       SYS_ACCEPT4                      = 344
+       SYS_NAME_TO_HANDLE_AT            = 345
+       SYS_OPEN_BY_HANDLE_AT            = 346
+       SYS_CLOCK_ADJTIME                = 347
+       SYS_SYNCFS                       = 348
+       SYS_SENDMMSG                     = 349
+       SYS_SETNS                        = 350
+       SYS_PROCESS_VM_READV             = 351
+       SYS_PROCESS_VM_WRITEV            = 352
+       SYS_FINIT_MODULE                 = 353
+       SYS_KCMP                         = 354
+       SYS_SCHED_SETATTR                = 355
+       SYS_SCHED_GETATTR                = 356
+       SYS_RENAMEAT2                    = 357
+       SYS_SECCOMP                      = 358
+       SYS_GETRANDOM                    = 359
+       SYS_MEMFD_CREATE                 = 360
+       SYS_BPF                          = 361
+       SYS_EXECVEAT                     = 362
+       SYS_SWITCH_ENDIAN                = 363
+       SYS_USERFAULTFD                  = 364
+       SYS_MEMBARRIER                   = 365
+       SYS_MLOCK2                       = 378
+       SYS_COPY_FILE_RANGE              = 379
+       SYS_PREADV2                      = 380
+       SYS_PWRITEV2                     = 381
+       SYS_KEXEC_FILE_LOAD              = 382
+       SYS_STATX                        = 383
+       SYS_PKEY_ALLOC                   = 384
+       SYS_PKEY_FREE                    = 385
+       SYS_PKEY_MPROTECT                = 386
+       SYS_RSEQ                         = 387
+       SYS_IO_PGETEVENTS                = 388
+       SYS_SEMGET                       = 393
+       SYS_SEMCTL                       = 394
+       SYS_SHMGET                       = 395
+       SYS_SHMCTL                       = 396
+       SYS_SHMAT                        = 397
+       SYS_SHMDT                        = 398
+       SYS_MSGGET                       = 399
+       SYS_MSGSND                       = 400
+       SYS_MSGRCV                       = 401
+       SYS_MSGCTL                       = 402
+       SYS_CLOCK_GETTIME64              = 403
+       SYS_CLOCK_SETTIME64              = 404
+       SYS_CLOCK_ADJTIME64              = 405
+       SYS_CLOCK_GETRES_TIME64          = 406
+       SYS_CLOCK_NANOSLEEP_TIME64       = 407
+       SYS_TIMER_GETTIME64              = 408
+       SYS_TIMER_SETTIME64              = 409
+       SYS_TIMERFD_GETTIME64            = 410
+       SYS_TIMERFD_SETTIME64            = 411
+       SYS_UTIMENSAT_TIME64             = 412
+       SYS_PSELECT6_TIME64              = 413
+       SYS_PPOLL_TIME64                 = 414
+       SYS_IO_PGETEVENTS_TIME64         = 416
+       SYS_RECVMMSG_TIME64              = 417
+       SYS_MQ_TIMEDSEND_TIME64          = 418
+       SYS_MQ_TIMEDRECEIVE_TIME64       = 419
+       SYS_SEMTIMEDOP_TIME64            = 420
+       SYS_RT_SIGTIMEDWAIT_TIME64       = 421
+       SYS_FUTEX_TIME64                 = 422
+       SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423
+       SYS_PIDFD_SEND_SIGNAL            = 424
+       SYS_IO_URING_SETUP               = 425
+       SYS_IO_URING_ENTER               = 426
+       SYS_IO_URING_REGISTER            = 427
+       SYS_OPEN_TREE                    = 428
+       SYS_MOVE_MOUNT                   = 429
+       SYS_FSOPEN                       = 430
+       SYS_FSCONFIG                     = 431
+       SYS_FSMOUNT                      = 432
+       SYS_FSPICK                       = 433
+       SYS_PIDFD_OPEN                   = 434
+       SYS_CLONE3                       = 435
+       SYS_CLOSE_RANGE                  = 436
+       SYS_OPENAT2                      = 437
+       SYS_PIDFD_GETFD                  = 438
+       SYS_FACCESSAT2                   = 439
+       SYS_PROCESS_MADVISE              = 440
+       SYS_EPOLL_PWAIT2                 = 441
+)
index 54db43335554faa82f43e840f984d7b68693b6c2..883b64a272363d57570b3412aad4f713da6f5365 100644 (file)
@@ -221,6 +221,12 @@ type IPMreq struct {
        Interface [4]byte /* in_addr */
 }
 
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
 type IPv6Mreq struct {
        Multiaddr [16]byte /* in6_addr */
        Interface uint32
@@ -272,6 +278,7 @@ const (
        SizeofLinger           = 0x8
        SizeofIovec            = 0x8
        SizeofIPMreq           = 0x8
+       SizeofIPMreqn          = 0xc
        SizeofIPv6Mreq         = 0x14
        SizeofMsghdr           = 0x1c
        SizeofCmsghdr          = 0xc
index eb73e52fb68c1037e12e3955e50d7a39eaa61599..2673e6c5909c338d0ece15d00768482257afd2d4 100644 (file)
@@ -233,6 +233,12 @@ type IPMreq struct {
        Interface [4]byte /* in_addr */
 }
 
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
 type IPv6Mreq struct {
        Multiaddr [16]byte /* in6_addr */
        Interface uint32
@@ -285,6 +291,7 @@ const (
        SizeofLinger           = 0x8
        SizeofIovec            = 0x10
        SizeofIPMreq           = 0x8
+       SizeofIPMreqn          = 0xc
        SizeofIPv6Mreq         = 0x14
        SizeofMsghdr           = 0x30
        SizeofCmsghdr          = 0xc
index 8606d654e5684e8c6a90056067096ee36caeaeb9..eef51338574488f3f86c4f078363feccb04d61e0 100644 (file)
@@ -221,6 +221,12 @@ type IPMreq struct {
        Interface [4]byte /* in_addr */
 }
 
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
 type IPv6Mreq struct {
        Multiaddr [16]byte /* in6_addr */
        Interface uint32
@@ -272,6 +278,7 @@ const (
        SizeofLinger           = 0x8
        SizeofIovec            = 0x8
        SizeofIPMreq           = 0x8
+       SizeofIPMreqn          = 0xc
        SizeofIPv6Mreq         = 0x14
        SizeofMsghdr           = 0x1c
        SizeofCmsghdr          = 0xc
index dcb51f8404d64a3b92f7b16cbe0ff28b1d797d36..1465cbcffe476d872135974ccd6f02be1d32cdcb 100644 (file)
@@ -233,6 +233,12 @@ type IPMreq struct {
        Interface [4]byte /* in_addr */
 }
 
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
 type IPv6Mreq struct {
        Multiaddr [16]byte /* in6_addr */
        Interface uint32
@@ -285,6 +291,7 @@ const (
        SizeofLinger           = 0x8
        SizeofIovec            = 0x10
        SizeofIPMreq           = 0x8
+       SizeofIPMreqn          = 0xc
        SizeofIPv6Mreq         = 0x14
        SizeofMsghdr           = 0x30
        SizeofCmsghdr          = 0xc
index c769e73cd6f2fedec020b6d8b21fe853f61d9242..3bfc6f7323b7d240073122e8c787ea44484f4890 100644 (file)
@@ -3698,6 +3698,21 @@ const (
        ETHTOOL_A_TUNNEL_INFO_MAX                 = 0x2
 )
 
+type EthtoolDrvinfo struct {
+       Cmd          uint32
+       Driver       [32]byte
+       Version      [32]byte
+       Fw_version   [32]byte
+       Bus_info     [32]byte
+       Erom_version [32]byte
+       Reserved2    [12]byte
+       N_priv_flags uint32
+       N_stats      uint32
+       Testinfo_len uint32
+       Eedump_len   uint32
+       Regdump_len  uint32
+}
+
 type (
        HIDRawReportDescriptor struct {
                Size  uint32
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go
new file mode 100644 (file)
index 0000000..af7a720
--- /dev/null
@@ -0,0 +1,627 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+//go:build ppc && linux
+// +build ppc,linux
+
+package unix
+
+const (
+       SizeofPtr  = 0x4
+       SizeofLong = 0x4
+)
+
+type (
+       _C_long int32
+)
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Timex struct {
+       Modes     uint32
+       Offset    int32
+       Freq      int32
+       Maxerror  int32
+       Esterror  int32
+       Status    int32
+       Constant  int32
+       Precision int32
+       Tolerance int32
+       Time      Timeval
+       Tick      int32
+       Ppsfreq   int32
+       Jitter    int32
+       Shift     int32
+       Stabil    int32
+       Jitcnt    int32
+       Calcnt    int32
+       Errcnt    int32
+       Stbcnt    int32
+       Tai       int32
+       _         [44]byte
+}
+
+type Time_t int32
+
+type Tms struct {
+       Utime  int32
+       Stime  int32
+       Cutime int32
+       Cstime int32
+}
+
+type Utimbuf struct {
+       Actime  int32
+       Modtime int32
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Stat_t struct {
+       Dev     uint64
+       Ino     uint64
+       Mode    uint32
+       Nlink   uint32
+       Uid     uint32
+       Gid     uint32
+       Rdev    uint64
+       _       uint16
+       _       [4]byte
+       Size    int64
+       Blksize int32
+       _       [4]byte
+       Blocks  int64
+       Atim    Timespec
+       Mtim    Timespec
+       Ctim    Timespec
+       _       uint32
+       _       uint32
+}
+
+type Dirent struct {
+       Ino    uint64
+       Off    int64
+       Reclen uint16
+       Type   uint8
+       Name   [256]uint8
+       _      [5]byte
+}
+
+type Flock_t struct {
+       Type   int16
+       Whence int16
+       _      [4]byte
+       Start  int64
+       Len    int64
+       Pid    int32
+       _      [4]byte
+}
+
+type DmNameList struct {
+       Dev  uint64
+       Next uint32
+       Name [0]byte
+       _    [4]byte
+}
+
+const (
+       FADV_DONTNEED = 0x4
+       FADV_NOREUSE  = 0x5
+)
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]uint8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]uint8
+}
+
+type Iovec struct {
+       Base *byte
+       Len  uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Iov        *Iovec
+       Iovlen     uint32
+       Control    *byte
+       Controllen uint32
+       Flags      int32
+}
+
+type Cmsghdr struct {
+       Len   uint32
+       Level int32
+       Type  int32
+}
+
+const (
+       SizeofIovec   = 0x8
+       SizeofMsghdr  = 0x1c
+       SizeofCmsghdr = 0xc
+)
+
+const (
+       SizeofSockFprog = 0x8
+)
+
+type PtraceRegs struct {
+       Gpr       [32]uint32
+       Nip       uint32
+       Msr       uint32
+       Orig_gpr3 uint32
+       Ctr       uint32
+       Link      uint32
+       Xer       uint32
+       Ccr       uint32
+       Mq        uint32
+       Trap      uint32
+       Dar       uint32
+       Dsisr     uint32
+       Result    uint32
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+type Sysinfo_t struct {
+       Uptime    int32
+       Loads     [3]uint32
+       Totalram  uint32
+       Freeram   uint32
+       Sharedram uint32
+       Bufferram uint32
+       Totalswap uint32
+       Freeswap  uint32
+       Procs     uint16
+       Pad       uint16
+       Totalhigh uint32
+       Freehigh  uint32
+       Unit      uint32
+       _         [8]uint8
+}
+
+type Ustat_t struct {
+       Tfree  int32
+       Tinode uint32
+       Fname  [6]uint8
+       Fpack  [6]uint8
+}
+
+type EpollEvent struct {
+       Events uint32
+       _      int32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       POLLRDHUP = 0x2000
+)
+
+type Sigset_t struct {
+       Val [32]uint32
+}
+
+const _C__NSIG = 0x41
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [19]uint8
+       Line   uint8
+       Ispeed uint32
+       Ospeed uint32
+}
+
+type Taskstats struct {
+       Version                   uint16
+       Ac_exitcode               uint32
+       Ac_flag                   uint8
+       Ac_nice                   uint8
+       _                         [4]byte
+       Cpu_count                 uint64
+       Cpu_delay_total           uint64
+       Blkio_count               uint64
+       Blkio_delay_total         uint64
+       Swapin_count              uint64
+       Swapin_delay_total        uint64
+       Cpu_run_real_total        uint64
+       Cpu_run_virtual_total     uint64
+       Ac_comm                   [32]uint8
+       Ac_sched                  uint8
+       Ac_pad                    [3]uint8
+       _                         [4]byte
+       Ac_uid                    uint32
+       Ac_gid                    uint32
+       Ac_pid                    uint32
+       Ac_ppid                   uint32
+       Ac_btime                  uint32
+       _                         [4]byte
+       Ac_etime                  uint64
+       Ac_utime                  uint64
+       Ac_stime                  uint64
+       Ac_minflt                 uint64
+       Ac_majflt                 uint64
+       Coremem                   uint64
+       Virtmem                   uint64
+       Hiwater_rss               uint64
+       Hiwater_vm                uint64
+       Read_char                 uint64
+       Write_char                uint64
+       Read_syscalls             uint64
+       Write_syscalls            uint64
+       Read_bytes                uint64
+       Write_bytes               uint64
+       Cancelled_write_bytes     uint64
+       Nvcsw                     uint64
+       Nivcsw                    uint64
+       Ac_utimescaled            uint64
+       Ac_stimescaled            uint64
+       Cpu_scaled_run_real_total uint64
+       Freepages_count           uint64
+       Freepages_delay_total     uint64
+       Thrashing_count           uint64
+       Thrashing_delay_total     uint64
+       Ac_btime64                uint64
+}
+
+type cpuMask uint32
+
+const (
+       _NCPUBITS = 0x20
+)
+
+const (
+       CBitFieldMaskBit0  = 0x8000000000000000
+       CBitFieldMaskBit1  = 0x4000000000000000
+       CBitFieldMaskBit2  = 0x2000000000000000
+       CBitFieldMaskBit3  = 0x1000000000000000
+       CBitFieldMaskBit4  = 0x800000000000000
+       CBitFieldMaskBit5  = 0x400000000000000
+       CBitFieldMaskBit6  = 0x200000000000000
+       CBitFieldMaskBit7  = 0x100000000000000
+       CBitFieldMaskBit8  = 0x80000000000000
+       CBitFieldMaskBit9  = 0x40000000000000
+       CBitFieldMaskBit10 = 0x20000000000000
+       CBitFieldMaskBit11 = 0x10000000000000
+       CBitFieldMaskBit12 = 0x8000000000000
+       CBitFieldMaskBit13 = 0x4000000000000
+       CBitFieldMaskBit14 = 0x2000000000000
+       CBitFieldMaskBit15 = 0x1000000000000
+       CBitFieldMaskBit16 = 0x800000000000
+       CBitFieldMaskBit17 = 0x400000000000
+       CBitFieldMaskBit18 = 0x200000000000
+       CBitFieldMaskBit19 = 0x100000000000
+       CBitFieldMaskBit20 = 0x80000000000
+       CBitFieldMaskBit21 = 0x40000000000
+       CBitFieldMaskBit22 = 0x20000000000
+       CBitFieldMaskBit23 = 0x10000000000
+       CBitFieldMaskBit24 = 0x8000000000
+       CBitFieldMaskBit25 = 0x4000000000
+       CBitFieldMaskBit26 = 0x2000000000
+       CBitFieldMaskBit27 = 0x1000000000
+       CBitFieldMaskBit28 = 0x800000000
+       CBitFieldMaskBit29 = 0x400000000
+       CBitFieldMaskBit30 = 0x200000000
+       CBitFieldMaskBit31 = 0x100000000
+       CBitFieldMaskBit32 = 0x80000000
+       CBitFieldMaskBit33 = 0x40000000
+       CBitFieldMaskBit34 = 0x20000000
+       CBitFieldMaskBit35 = 0x10000000
+       CBitFieldMaskBit36 = 0x8000000
+       CBitFieldMaskBit37 = 0x4000000
+       CBitFieldMaskBit38 = 0x2000000
+       CBitFieldMaskBit39 = 0x1000000
+       CBitFieldMaskBit40 = 0x800000
+       CBitFieldMaskBit41 = 0x400000
+       CBitFieldMaskBit42 = 0x200000
+       CBitFieldMaskBit43 = 0x100000
+       CBitFieldMaskBit44 = 0x80000
+       CBitFieldMaskBit45 = 0x40000
+       CBitFieldMaskBit46 = 0x20000
+       CBitFieldMaskBit47 = 0x10000
+       CBitFieldMaskBit48 = 0x8000
+       CBitFieldMaskBit49 = 0x4000
+       CBitFieldMaskBit50 = 0x2000
+       CBitFieldMaskBit51 = 0x1000
+       CBitFieldMaskBit52 = 0x800
+       CBitFieldMaskBit53 = 0x400
+       CBitFieldMaskBit54 = 0x200
+       CBitFieldMaskBit55 = 0x100
+       CBitFieldMaskBit56 = 0x80
+       CBitFieldMaskBit57 = 0x40
+       CBitFieldMaskBit58 = 0x20
+       CBitFieldMaskBit59 = 0x10
+       CBitFieldMaskBit60 = 0x8
+       CBitFieldMaskBit61 = 0x4
+       CBitFieldMaskBit62 = 0x2
+       CBitFieldMaskBit63 = 0x1
+)
+
+type SockaddrStorage struct {
+       Family uint16
+       _      [122]uint8
+       _      uint32
+}
+
+type HDGeometry struct {
+       Heads     uint8
+       Sectors   uint8
+       Cylinders uint16
+       Start     uint32
+}
+
+type Statfs_t struct {
+       Type    int32
+       Bsize   int32
+       Blocks  uint64
+       Bfree   uint64
+       Bavail  uint64
+       Files   uint64
+       Ffree   uint64
+       Fsid    Fsid
+       Namelen int32
+       Frsize  int32
+       Flags   int32
+       Spare   [4]int32
+       _       [4]byte
+}
+
+type TpacketHdr struct {
+       Status  uint32
+       Len     uint32
+       Snaplen uint32
+       Mac     uint16
+       Net     uint16
+       Sec     uint32
+       Usec    uint32
+}
+
+const (
+       SizeofTpacketHdr = 0x18
+)
+
+type RTCPLLInfo struct {
+       Ctrl    int32
+       Value   int32
+       Max     int32
+       Min     int32
+       Posmult int32
+       Negmult int32
+       Clock   int32
+}
+
+type BlkpgPartition struct {
+       Start   int64
+       Length  int64
+       Pno     int32
+       Devname [64]uint8
+       Volname [64]uint8
+       _       [4]byte
+}
+
+const (
+       BLKPG = 0x20001269
+)
+
+type XDPUmemReg struct {
+       Addr     uint64
+       Len      uint64
+       Size     uint32
+       Headroom uint32
+       Flags    uint32
+       _        [4]byte
+}
+
+type CryptoUserAlg struct {
+       Name        [64]uint8
+       Driver_name [64]uint8
+       Module_name [64]uint8
+       Type        uint32
+       Mask        uint32
+       Refcnt      uint32
+       Flags       uint32
+}
+
+type CryptoStatAEAD struct {
+       Type         [64]uint8
+       Encrypt_cnt  uint64
+       Encrypt_tlen uint64
+       Decrypt_cnt  uint64
+       Decrypt_tlen uint64
+       Err_cnt      uint64
+}
+
+type CryptoStatAKCipher struct {
+       Type         [64]uint8
+       Encrypt_cnt  uint64
+       Encrypt_tlen uint64
+       Decrypt_cnt  uint64
+       Decrypt_tlen uint64
+       Verify_cnt   uint64
+       Sign_cnt     uint64
+       Err_cnt      uint64
+}
+
+type CryptoStatCipher struct {
+       Type         [64]uint8
+       Encrypt_cnt  uint64
+       Encrypt_tlen uint64
+       Decrypt_cnt  uint64
+       Decrypt_tlen uint64
+       Err_cnt      uint64
+}
+
+type CryptoStatCompress struct {
+       Type            [64]uint8
+       Compress_cnt    uint64
+       Compress_tlen   uint64
+       Decompress_cnt  uint64
+       Decompress_tlen uint64
+       Err_cnt         uint64
+}
+
+type CryptoStatHash struct {
+       Type      [64]uint8
+       Hash_cnt  uint64
+       Hash_tlen uint64
+       Err_cnt   uint64
+}
+
+type CryptoStatKPP struct {
+       Type                      [64]uint8
+       Setsecret_cnt             uint64
+       Generate_public_key_cnt   uint64
+       Compute_shared_secret_cnt uint64
+       Err_cnt                   uint64
+}
+
+type CryptoStatRNG struct {
+       Type          [64]uint8
+       Generate_cnt  uint64
+       Generate_tlen uint64
+       Seed_cnt      uint64
+       Err_cnt       uint64
+}
+
+type CryptoStatLarval struct {
+       Type [64]uint8
+}
+
+type CryptoReportLarval struct {
+       Type [64]uint8
+}
+
+type CryptoReportHash struct {
+       Type       [64]uint8
+       Blocksize  uint32
+       Digestsize uint32
+}
+
+type CryptoReportCipher struct {
+       Type        [64]uint8
+       Blocksize   uint32
+       Min_keysize uint32
+       Max_keysize uint32
+}
+
+type CryptoReportBlkCipher struct {
+       Type        [64]uint8
+       Geniv       [64]uint8
+       Blocksize   uint32
+       Min_keysize uint32
+       Max_keysize uint32
+       Ivsize      uint32
+}
+
+type CryptoReportAEAD struct {
+       Type        [64]uint8
+       Geniv       [64]uint8
+       Blocksize   uint32
+       Maxauthsize uint32
+       Ivsize      uint32
+}
+
+type CryptoReportComp struct {
+       Type [64]uint8
+}
+
+type CryptoReportRNG struct {
+       Type     [64]uint8
+       Seedsize uint32
+}
+
+type CryptoReportAKCipher struct {
+       Type [64]uint8
+}
+
+type CryptoReportKPP struct {
+       Type [64]uint8
+}
+
+type CryptoReportAcomp struct {
+       Type [64]uint8
+}
+
+type LoopInfo struct {
+       Number           int32
+       Device           uint32
+       Inode            uint32
+       Rdevice          uint32
+       Offset           int32
+       Encrypt_type     int32
+       Encrypt_key_size int32
+       Flags            int32
+       Name             [64]uint8
+       Encrypt_key      [32]uint8
+       Init             [2]uint32
+       Reserved         [4]uint8
+}
+
+type TIPCSubscr struct {
+       Seq     TIPCServiceRange
+       Timeout uint32
+       Filter  uint32
+       Handle  [8]uint8
+}
+
+type TIPCSIOCLNReq struct {
+       Peer     uint32
+       Id       uint32
+       Linkname [68]uint8
+}
+
+type TIPCSIOCNodeIDReq struct {
+       Peer uint32
+       Id   [16]uint8
+}
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400470a1
+       PPS_SETPARAMS = 0x800470a2
+       PPS_GETCAP    = 0x400470a3
+       PPS_FETCH     = 0xc00470a4
+)
index 473febea685d31eeb574780ae0706968469e9c9c..0ee84f4cf88a428a09e893b47c9ec4759362054b 100644 (file)
@@ -39,7 +39,7 @@ golang.org/x/mod/sumdb/dirhash
 golang.org/x/mod/sumdb/note
 golang.org/x/mod/sumdb/tlog
 golang.org/x/mod/zip
-# golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57
+# golang.org/x/sys v0.0.0-20210423082822-04245dca01da
 ## explicit; go 1.12
 golang.org/x/sys/internal/unsafeheader
 golang.org/x/sys/plan9
index 89ad19d2880331831319c941282373a4ce840eed..59fa194babaf4b249244974c6e185f4c68446042 100644 (file)
@@ -4,7 +4,7 @@ go 1.17
 
 require (
        golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83
-       golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4
-       golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect
-       golang.org/x/text v0.3.6-0.20210227105805-e3aa4adf54f6 // indirect
+       golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420
+       golang.org/x/sys v0.0.0-20210423082822-04245dca01da // indirect
+       golang.org/x/text v0.3.6 // indirect
 )
index 034d8506f4595a548841c5e214ac03186c76419e..bfb07129bba22a29d90332204111f64e4af88395 100644 (file)
@@ -2,18 +2,14 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
 golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g=
 golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420 h1:a8jGStKg0XqKDlKqjLrXn0ioF5MH36pT7Z0BRTqLhbk=
+golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A=
-golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6-0.20210227105805-e3aa4adf54f6 h1:lmoh2ZlEN/VfIYVdeta6HbTPLqajF5r8riIp1MACt2A=
-golang.org/x/text v0.3.6-0.20210227105805-e3aa4adf54f6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
index e7de24ee64efc6b10326616b2b5b2588b2b70439..c79aa73f28bb9a522de0d653b01637083c631e85 100644 (file)
@@ -137,11 +137,13 @@ func trimOWS(x string) string {
 // contains token amongst its comma-separated tokens, ASCII
 // case-insensitively.
 func headerValueContainsToken(v string, token string) bool {
-       v = trimOWS(v)
-       if comma := strings.IndexByte(v, ','); comma != -1 {
-               return tokenEqual(trimOWS(v[:comma]), token) || headerValueContainsToken(v[comma+1:], token)
+       for comma := strings.IndexByte(v, ','); comma != -1; comma = strings.IndexByte(v, ',') {
+               if tokenEqual(trimOWS(v[:comma]), token) {
+                       return true
+               }
+               v = v[comma+1:]
        }
-       return tokenEqual(v, token)
+       return tokenEqual(trimOWS(v), token)
 }
 
 // lowerASCII returns the ASCII lowercase version of b.
index 7e69ee1b22edbb492b105fd6f6338e640ddafcf2..5208ba6cb88424d7f2e8285ae1926cd24a4cad92 100644 (file)
@@ -67,15 +67,14 @@ func Transitional(transitional bool) Option {
 
 // VerifyDNSLength sets whether a Profile should fail if any of the IDN parts
 // are longer than allowed by the RFC.
+//
+// This option corresponds to the VerifyDnsLength flag in UTS #46.
 func VerifyDNSLength(verify bool) Option {
        return func(o *options) { o.verifyDNSLength = verify }
 }
 
 // RemoveLeadingDots removes leading label separators. Leading runes that map to
 // dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well.
-//
-// This is the behavior suggested by the UTS #46 and is adopted by some
-// browsers.
 func RemoveLeadingDots(remove bool) Option {
        return func(o *options) { o.removeLeadingDots = remove }
 }
@@ -83,6 +82,8 @@ func RemoveLeadingDots(remove bool) Option {
 // ValidateLabels sets whether to check the mandatory label validation criteria
 // as defined in Section 5.4 of RFC 5891. This includes testing for correct use
 // of hyphens ('-'), normalization, validity of runes, and the context rules.
+// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags
+// in UTS #46.
 func ValidateLabels(enable bool) Option {
        return func(o *options) {
                // Don't override existing mappings, but set one that at least checks
@@ -91,25 +92,48 @@ func ValidateLabels(enable bool) Option {
                        o.mapping = normalize
                }
                o.trie = trie
-               o.validateLabels = enable
-               o.fromPuny = validateFromPunycode
+               o.checkJoiners = enable
+               o.checkHyphens = enable
+               if enable {
+                       o.fromPuny = validateFromPunycode
+               } else {
+                       o.fromPuny = nil
+               }
+       }
+}
+
+// CheckHyphens sets whether to check for correct use of hyphens ('-') in
+// labels. Most web browsers do not have this option set, since labels such as
+// "r3---sn-apo3qvuoxuxbt-j5pe" are in common use.
+//
+// This option corresponds to the CheckHyphens flag in UTS #46.
+func CheckHyphens(enable bool) Option {
+       return func(o *options) { o.checkHyphens = enable }
+}
+
+// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix
+// A of RFC 5892, concerning the use of joiner runes.
+//
+// This option corresponds to the CheckJoiners flag in UTS #46.
+func CheckJoiners(enable bool) Option {
+       return func(o *options) {
+               o.trie = trie
+               o.checkJoiners = enable
        }
 }
 
 // StrictDomainName limits the set of permissible ASCII characters to those
 // allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the
-// hyphen). This is set by default for MapForLookup and ValidateForRegistration.
+// hyphen). This is set by default for MapForLookup and ValidateForRegistration,
+// but is only useful if ValidateLabels is set.
 //
 // This option is useful, for instance, for browsers that allow characters
 // outside this range, for example a '_' (U+005F LOW LINE). See
-// http://www.rfc-editor.org/std/std3.txt for more details This option
-// corresponds to the UseSTD3ASCIIRules option in UTS #46.
+// http://www.rfc-editor.org/std/std3.txt for more details.
+//
+// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46.
 func StrictDomainName(use bool) Option {
-       return func(o *options) {
-               o.trie = trie
-               o.useSTD3Rules = use
-               o.fromPuny = validateFromPunycode
-       }
+       return func(o *options) { o.useSTD3Rules = use }
 }
 
 // NOTE: the following options pull in tables. The tables should not be linked
@@ -117,6 +141,8 @@ func StrictDomainName(use bool) Option {
 
 // BidiRule enables the Bidi rule as defined in RFC 5893. Any application
 // that relies on proper validation of labels should include this rule.
+//
+// This option corresponds to the CheckBidi flag in UTS #46.
 func BidiRule() Option {
        return func(o *options) { o.bidirule = bidirule.ValidString }
 }
@@ -152,7 +178,8 @@ func MapForLookup() Option {
 type options struct {
        transitional      bool
        useSTD3Rules      bool
-       validateLabels    bool
+       checkHyphens      bool
+       checkJoiners      bool
        verifyDNSLength   bool
        removeLeadingDots bool
 
@@ -225,8 +252,11 @@ func (p *Profile) String() string {
        if p.useSTD3Rules {
                s += ":UseSTD3Rules"
        }
-       if p.validateLabels {
-               s += ":ValidateLabels"
+       if p.checkHyphens {
+               s += ":CheckHyphens"
+       }
+       if p.checkJoiners {
+               s += ":CheckJoiners"
        }
        if p.verifyDNSLength {
                s += ":VerifyDNSLength"
@@ -254,26 +284,29 @@ var (
 
        punycode = &Profile{}
        lookup   = &Profile{options{
-               transitional:   true,
-               useSTD3Rules:   true,
-               validateLabels: true,
-               trie:           trie,
-               fromPuny:       validateFromPunycode,
-               mapping:        validateAndMap,
-               bidirule:       bidirule.ValidString,
+               transitional: true,
+               useSTD3Rules: true,
+               checkHyphens: true,
+               checkJoiners: true,
+               trie:         trie,
+               fromPuny:     validateFromPunycode,
+               mapping:      validateAndMap,
+               bidirule:     bidirule.ValidString,
        }}
        display = &Profile{options{
-               useSTD3Rules:   true,
-               validateLabels: true,
-               trie:           trie,
-               fromPuny:       validateFromPunycode,
-               mapping:        validateAndMap,
-               bidirule:       bidirule.ValidString,
+               useSTD3Rules: true,
+               checkHyphens: true,
+               checkJoiners: true,
+               trie:         trie,
+               fromPuny:     validateFromPunycode,
+               mapping:      validateAndMap,
+               bidirule:     bidirule.ValidString,
        }}
        registration = &Profile{options{
                useSTD3Rules:    true,
-               validateLabels:  true,
                verifyDNSLength: true,
+               checkHyphens:    true,
+               checkJoiners:    true,
                trie:            trie,
                fromPuny:        validateFromPunycode,
                mapping:         validateRegistration,
@@ -340,7 +373,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) {
                        }
                        isBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight
                        labels.set(u)
-                       if err == nil && p.validateLabels {
+                       if err == nil && p.fromPuny != nil {
                                err = p.fromPuny(p, u)
                        }
                        if err == nil {
@@ -681,16 +714,18 @@ func (p *Profile) validateLabel(s string) (err error) {
                }
                return nil
        }
-       if !p.validateLabels {
-               return nil
-       }
-       trie := p.trie // p.validateLabels is only set if trie is set.
-       if len(s) > 4 && s[2] == '-' && s[3] == '-' {
-               return &labelError{s, "V2"}
+       if p.checkHyphens {
+               if len(s) > 4 && s[2] == '-' && s[3] == '-' {
+                       return &labelError{s, "V2"}
+               }
+               if s[0] == '-' || s[len(s)-1] == '-' {
+                       return &labelError{s, "V3"}
+               }
        }
-       if s[0] == '-' || s[len(s)-1] == '-' {
-               return &labelError{s, "V3"}
+       if !p.checkJoiners {
+               return nil
        }
+       trie := p.trie // p.checkJoiners is only set if trie is set.
        // TODO: merge the use of this in the trie.
        v, sz := trie.lookupString(s)
        x := info(v)
index 7c7456374c132d7aba19230d96d209d283a99c7d..55f718f12744713d679c049765086d87a7262132 100644 (file)
@@ -66,15 +66,14 @@ func Transitional(transitional bool) Option {
 
 // VerifyDNSLength sets whether a Profile should fail if any of the IDN parts
 // are longer than allowed by the RFC.
+//
+// This option corresponds to the VerifyDnsLength flag in UTS #46.
 func VerifyDNSLength(verify bool) Option {
        return func(o *options) { o.verifyDNSLength = verify }
 }
 
 // RemoveLeadingDots removes leading label separators. Leading runes that map to
 // dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well.
-//
-// This is the behavior suggested by the UTS #46 and is adopted by some
-// browsers.
 func RemoveLeadingDots(remove bool) Option {
        return func(o *options) { o.removeLeadingDots = remove }
 }
@@ -82,6 +81,8 @@ func RemoveLeadingDots(remove bool) Option {
 // ValidateLabels sets whether to check the mandatory label validation criteria
 // as defined in Section 5.4 of RFC 5891. This includes testing for correct use
 // of hyphens ('-'), normalization, validity of runes, and the context rules.
+// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags
+// in UTS #46.
 func ValidateLabels(enable bool) Option {
        return func(o *options) {
                // Don't override existing mappings, but set one that at least checks
@@ -90,25 +91,48 @@ func ValidateLabels(enable bool) Option {
                        o.mapping = normalize
                }
                o.trie = trie
-               o.validateLabels = enable
-               o.fromPuny = validateFromPunycode
+               o.checkJoiners = enable
+               o.checkHyphens = enable
+               if enable {
+                       o.fromPuny = validateFromPunycode
+               } else {
+                       o.fromPuny = nil
+               }
+       }
+}
+
+// CheckHyphens sets whether to check for correct use of hyphens ('-') in
+// labels. Most web browsers do not have this option set, since labels such as
+// "r3---sn-apo3qvuoxuxbt-j5pe" are in common use.
+//
+// This option corresponds to the CheckHyphens flag in UTS #46.
+func CheckHyphens(enable bool) Option {
+       return func(o *options) { o.checkHyphens = enable }
+}
+
+// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix
+// A of RFC 5892, concerning the use of joiner runes.
+//
+// This option corresponds to the CheckJoiners flag in UTS #46.
+func CheckJoiners(enable bool) Option {
+       return func(o *options) {
+               o.trie = trie
+               o.checkJoiners = enable
        }
 }
 
 // StrictDomainName limits the set of permissable ASCII characters to those
 // allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the
-// hyphen). This is set by default for MapForLookup and ValidateForRegistration.
+// hyphen). This is set by default for MapForLookup and ValidateForRegistration,
+// but is only useful if ValidateLabels is set.
 //
 // This option is useful, for instance, for browsers that allow characters
 // outside this range, for example a '_' (U+005F LOW LINE). See
-// http://www.rfc-editor.org/std/std3.txt for more details This option
-// corresponds to the UseSTD3ASCIIRules option in UTS #46.
+// http://www.rfc-editor.org/std/std3.txt for more details.
+//
+// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46.
 func StrictDomainName(use bool) Option {
-       return func(o *options) {
-               o.trie = trie
-               o.useSTD3Rules = use
-               o.fromPuny = validateFromPunycode
-       }
+       return func(o *options) { o.useSTD3Rules = use }
 }
 
 // NOTE: the following options pull in tables. The tables should not be linked
@@ -116,6 +140,8 @@ func StrictDomainName(use bool) Option {
 
 // BidiRule enables the Bidi rule as defined in RFC 5893. Any application
 // that relies on proper validation of labels should include this rule.
+//
+// This option corresponds to the CheckBidi flag in UTS #46.
 func BidiRule() Option {
        return func(o *options) { o.bidirule = bidirule.ValidString }
 }
@@ -152,7 +178,8 @@ func MapForLookup() Option {
 type options struct {
        transitional      bool
        useSTD3Rules      bool
-       validateLabels    bool
+       checkHyphens      bool
+       checkJoiners      bool
        verifyDNSLength   bool
        removeLeadingDots bool
 
@@ -225,8 +252,11 @@ func (p *Profile) String() string {
        if p.useSTD3Rules {
                s += ":UseSTD3Rules"
        }
-       if p.validateLabels {
-               s += ":ValidateLabels"
+       if p.checkHyphens {
+               s += ":CheckHyphens"
+       }
+       if p.checkJoiners {
+               s += ":CheckJoiners"
        }
        if p.verifyDNSLength {
                s += ":VerifyDNSLength"
@@ -255,9 +285,10 @@ var (
        punycode = &Profile{}
        lookup   = &Profile{options{
                transitional:      true,
-               useSTD3Rules:      true,
-               validateLabels:    true,
                removeLeadingDots: true,
+               useSTD3Rules:      true,
+               checkHyphens:      true,
+               checkJoiners:      true,
                trie:              trie,
                fromPuny:          validateFromPunycode,
                mapping:           validateAndMap,
@@ -265,8 +296,9 @@ var (
        }}
        display = &Profile{options{
                useSTD3Rules:      true,
-               validateLabels:    true,
                removeLeadingDots: true,
+               checkHyphens:      true,
+               checkJoiners:      true,
                trie:              trie,
                fromPuny:          validateFromPunycode,
                mapping:           validateAndMap,
@@ -274,8 +306,9 @@ var (
        }}
        registration = &Profile{options{
                useSTD3Rules:    true,
-               validateLabels:  true,
                verifyDNSLength: true,
+               checkHyphens:    true,
+               checkJoiners:    true,
                trie:            trie,
                fromPuny:        validateFromPunycode,
                mapping:         validateRegistration,
@@ -339,7 +372,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) {
                                continue
                        }
                        labels.set(u)
-                       if err == nil && p.validateLabels {
+                       if err == nil && p.fromPuny != nil {
                                err = p.fromPuny(p, u)
                        }
                        if err == nil {
@@ -629,16 +662,18 @@ func (p *Profile) validateLabel(s string) error {
        if p.bidirule != nil && !p.bidirule(s) {
                return &labelError{s, "B"}
        }
-       if !p.validateLabels {
-               return nil
-       }
-       trie := p.trie // p.validateLabels is only set if trie is set.
-       if len(s) > 4 && s[2] == '-' && s[3] == '-' {
-               return &labelError{s, "V2"}
+       if p.checkHyphens {
+               if len(s) > 4 && s[2] == '-' && s[3] == '-' {
+                       return &labelError{s, "V2"}
+               }
+               if s[0] == '-' || s[len(s)-1] == '-' {
+                       return &labelError{s, "V3"}
+               }
        }
-       if s[0] == '-' || s[len(s)-1] == '-' {
-               return &labelError{s, "V3"}
+       if !p.checkJoiners {
+               return nil
        }
+       trie := p.trie // p.checkJoiners is only set if trie is set.
        // TODO: merge the use of this in the trie.
        v, sz := trie.lookupString(s)
        x := info(v)
index e3d6da0549a39e4394b55aa2a118cd5881119eb7..fd0019ecc560aaf061c4a590d9713ecd72ed2124 100644 (file)
@@ -108,17 +108,28 @@ const (
 // an interface index or a set of interface flags. In most cases, zero
 // means a wildcard.
 func FetchRIB(af int, typ RIBType, arg int) ([]byte, error) {
-       mib := [6]int32{sysCTL_NET, sysAF_ROUTE, 0, int32(af), int32(typ), int32(arg)}
-       n := uintptr(0)
-       if err := sysctl(mib[:], nil, &n, nil, 0); err != nil {
-               return nil, os.NewSyscallError("sysctl", err)
+       try := 0
+       for {
+               try++
+               mib := [6]int32{sysCTL_NET, sysAF_ROUTE, 0, int32(af), int32(typ), int32(arg)}
+               n := uintptr(0)
+               if err := sysctl(mib[:], nil, &n, nil, 0); err != nil {
+                       return nil, os.NewSyscallError("sysctl", err)
+               }
+               if n == 0 {
+                       return nil, nil
+               }
+               b := make([]byte, n)
+               if err := sysctl(mib[:], &b[0], &n, nil, 0); err != nil {
+                       // If the sysctl failed because the data got larger
+                       // between the two sysctl calls, try a few times
+                       // before failing. (golang.org/issue/45736).
+                       const maxTries = 3
+                       if err == syscall.ENOMEM && try < maxTries {
+                               continue
+                       }
+                       return nil, os.NewSyscallError("sysctl", err)
+               }
+               return b[:n], nil
        }
-       if n == 0 {
-               return nil, nil
-       }
-       b := make([]byte, n)
-       if err := sysctl(mib[:], &b[0], &n, nil, 0); err != nil {
-               return nil, os.NewSyscallError("sysctl", err)
-       }
-       return b[:n], nil
 }
index d849d6553cd578b596ae2da44c1f5962fd743051..8f411a06e3a5cdd617af29f2f2b22129d5aabde0 100644 (file)
@@ -8,8 +8,8 @@ golang.org/x/crypto/curve25519
 golang.org/x/crypto/hkdf
 golang.org/x/crypto/internal/subtle
 golang.org/x/crypto/poly1305
-# golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4
-## explicit; go 1.11
+# golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420
+## explicit; go 1.17
 golang.org/x/net/dns/dnsmessage
 golang.org/x/net/http/httpguts
 golang.org/x/net/http/httpproxy
@@ -18,10 +18,10 @@ golang.org/x/net/idna
 golang.org/x/net/lif
 golang.org/x/net/nettest
 golang.org/x/net/route
-# golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57
+# golang.org/x/sys v0.0.0-20210423082822-04245dca01da
 ## explicit; go 1.12
 golang.org/x/sys/cpu
-# golang.org/x/text v0.3.6-0.20210227105805-e3aa4adf54f6
+# golang.org/x/text v0.3.6
 ## explicit; go 1.11
 golang.org/x/text/secure/bidirule
 golang.org/x/text/transform