diff --git a/doc/install.html b/doc/install.html index 7f32f68cd32447..abf7fa6daed2ad 100644 --- a/doc/install.html +++ b/doc/install.html @@ -16,7 +16,7 @@

Download the Go distribution

Official binary -distributions are available for the FreeBSD (release 8-STABLE and above), +distributions are available for the FreeBSD (release 10-STABLE and above), Linux, Mac OS X (10.8 and above), and Windows operating systems and the 32-bit (386) and 64-bit (amd64) x86 processor architectures. @@ -47,7 +47,7 @@

System requirements

Notes
-FreeBSD 9.3 or later amd64, 386 Debian GNU/kFreeBSD not supported +FreeBSD 10.3 or later amd64, 386 Debian GNU/kFreeBSD not supported Linux 2.6.23 or later with glibc amd64, 386, arm, arm64,
s390x, ppc64le CentOS/RHEL 5.x not supported.
Install from source for other libc. macOS 10.8 or later amd64 use the clang or gcc that comes with Xcode for cgo support Windows XP SP2 or later amd64, 386 use MinGW gcc. No need for cygwin or msys. diff --git a/src/net/platform_test.go b/src/net/platform_test.go index 2b87bf4d0ae2b3..eca1202beb200d 100644 --- a/src/net/platform_test.go +++ b/src/net/platform_test.go @@ -43,8 +43,6 @@ func testableNetwork(network string) bool { case "unixpacket": switch runtime.GOOS { case "android", "darwin", "nacl", "plan9", "windows": - fallthrough - case "freebsd": // FreeBSD 8 and below don't support unixpacket return false } } diff --git a/src/net/sock_bsd.go b/src/net/sock_bsd.go index 4e0e9e01f2c61b..dfb092055021f3 100644 --- a/src/net/sock_bsd.go +++ b/src/net/sock_bsd.go @@ -17,8 +17,10 @@ func maxListenerBacklog() int { err error ) switch runtime.GOOS { - case "darwin", "freebsd": + case "darwin": n, err = syscall.SysctlUint32("kern.ipc.somaxconn") + case "freebsd": + n, err = syscall.SysctlUint32("kern.ipc.acceptqueue") case "netbsd": // NOTE: NetBSD has no somaxconn-like kernel state so far case "openbsd": diff --git a/src/os/pipe_freebsd.go b/src/os/pipe_freebsd.go index 47983065d92219..93bd869afd4f3f 100644 --- a/src/os/pipe_freebsd.go +++ b/src/os/pipe_freebsd.go @@ -13,21 +13,7 @@ func Pipe() (r *File, w *File, err error) { e := syscall.Pipe2(p[0:], syscall.O_CLOEXEC) if e != nil { - // Fallback support for FreeBSD 9, which lacks Pipe2. - // - // TODO: remove this for Go 1.10 when FreeBSD 9 - // is removed (Issue 19072). - - // See ../syscall/exec.go for description of lock. - syscall.ForkLock.RLock() - e := syscall.Pipe(p[0:]) - if e != nil { - syscall.ForkLock.RUnlock() - return nil, nil, NewSyscallError("pipe", e) - } - syscall.CloseOnExec(p[0]) - syscall.CloseOnExec(p[1]) - syscall.ForkLock.RUnlock() + return nil, nil, NewSyscallError("pipe", e) } return newFile(uintptr(p[0]), "|0", kindPipe), newFile(uintptr(p[1]), "|1", kindPipe), nil diff --git a/src/os/sys_freebsd.go b/src/os/sys_freebsd.go index 273c2df1c12400..3ec49faedf10e9 100644 --- a/src/os/sys_freebsd.go +++ b/src/os/sys_freebsd.go @@ -4,20 +4,7 @@ package os -import "syscall" - // supportsCloseOnExec reports whether the platform supports the // O_CLOEXEC flag. -var supportsCloseOnExec bool - -func init() { - osrel, err := syscall.SysctlUint32("kern.osreldate") - if err != nil { - return - } - // The O_CLOEXEC flag was introduced in FreeBSD 8.3. - // See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html. - if osrel >= 803000 { - supportsCloseOnExec = true - } -} +// The O_CLOEXEC flag was introduced in FreeBSD 8.3. +const supportsCloseOnExec bool = true diff --git a/src/os/wait_wait6.go b/src/os/wait_wait6.go index b30981199e19f3..891f242dacd140 100644 --- a/src/os/wait_wait6.go +++ b/src/os/wait_wait6.go @@ -30,11 +30,6 @@ func (p *Process) blockUntilWaitable() (bool, error) { } runtime.KeepAlive(p) if errno != 0 { - // The wait6 system call is supported only on FreeBSD - // 9.3 and above, so it may return an ENOSYS error. - if errno == syscall.ENOSYS { - return false, nil - } return false, NewSyscallError("wait6", errno) } return true, nil diff --git a/src/syscall/exec_freebsd.go b/src/syscall/exec_freebsd.go index 4ed32c0614fb7d..1654b4ba2a64b7 100644 --- a/src/syscall/exec_freebsd.go +++ b/src/syscall/exec_freebsd.go @@ -5,21 +5,5 @@ package syscall func forkExecPipe(p []int) error { - err := Pipe2(p, O_CLOEXEC) - if err == nil { - return nil - } - - // FreeBSD 9 fallback. - // TODO: remove this for Go 1.10 per Issue 19072 - err = Pipe(p) - if err != nil { - return err - } - _, err = fcntl(p[0], F_SETFD, FD_CLOEXEC) - if err != nil { - return err - } - _, err = fcntl(p[1], F_SETFD, FD_CLOEXEC) - return err + return Pipe2(p, O_CLOEXEC) } diff --git a/src/syscall/syscall_freebsd.go b/src/syscall/syscall_freebsd.go index 2c7533c157c9d8..5fb9655e5a6ac5 100644 --- a/src/syscall/syscall_freebsd.go +++ b/src/syscall/syscall_freebsd.go @@ -66,15 +66,8 @@ func direntNamlen(buf []byte) (uint64, bool) { return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } -//sysnb pipe() (r int, w int, err error) - func Pipe(p []int) error { - if len(p) != 2 { - return EINVAL - } - var err error - p[0], p[1], err = pipe() - return err + return Pipe2(p, 0) } //sysnb pipe2(p *[2]_C_int, flags int) (err error) diff --git a/src/syscall/zsyscall_freebsd_386.go b/src/syscall/zsyscall_freebsd_386.go index e1d371423cfb45..4ada995e540f25 100644 --- a/src/syscall/zsyscall_freebsd_386.go +++ b/src/syscall/zsyscall_freebsd_386.go @@ -261,18 +261,6 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { diff --git a/src/syscall/zsyscall_freebsd_amd64.go b/src/syscall/zsyscall_freebsd_amd64.go index 561870ccce5042..5bbc5c4f34ce93 100644 --- a/src/syscall/zsyscall_freebsd_amd64.go +++ b/src/syscall/zsyscall_freebsd_amd64.go @@ -261,18 +261,6 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { diff --git a/src/syscall/zsyscall_freebsd_arm.go b/src/syscall/zsyscall_freebsd_arm.go index cefebb941769b7..011ac0e25a20ff 100644 --- a/src/syscall/zsyscall_freebsd_arm.go +++ b/src/syscall/zsyscall_freebsd_arm.go @@ -261,18 +261,6 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 {