]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: use pipe2 syscall for Pipe in tests
authorTobias Klauser <tklauser@distanz.ch>
Wed, 18 Nov 2020 07:53:00 +0000 (08:53 +0100)
committerTobias Klauser <tobias.klauser@gmail.com>
Wed, 18 Nov 2020 19:08:11 +0000 (19:08 +0000)
On FreeBSD >= 11 with a kernel built with COMPAT_FREEBSD11 but not
COMPAT_FREEBSD10, the pipe syscall is not available. Thus, tests using
runtime.pipe fail with ENOSYS. As suggested by Ian, fix this by calling
pipe2(0) in these tests and fall back to pipe() in case of ENOSYS.

Fixes #42659

Change-Id: Ifbb8008884b7901fe87830d162ad326122c5fab9
Reviewed-on: https://go-review.googlesource.com/c/go/+/270917
Trust: Tobias Klauser <tobias.klauser@gmail.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/export_pipe2_test.go [new file with mode: 0644]
src/runtime/export_pipe_test.go [new file with mode: 0644]
src/runtime/export_unix_test.go

diff --git a/src/runtime/export_pipe2_test.go b/src/runtime/export_pipe2_test.go
new file mode 100644 (file)
index 0000000..9d580d3
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright 2020 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.
+
+// +build freebsd linux netbsd openbsd solaris
+
+package runtime
+
+func Pipe() (r, w int32, errno int32) {
+       r, w, errno = pipe2(0)
+       if errno == _ENOSYS {
+               return pipe()
+       }
+       return r, w, errno
+}
diff --git a/src/runtime/export_pipe_test.go b/src/runtime/export_pipe_test.go
new file mode 100644 (file)
index 0000000..8f66770
--- /dev/null
@@ -0,0 +1,9 @@
+// Copyright 2020 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.
+
+// +build aix darwin dragonfly
+
+package runtime
+
+var Pipe = pipe
index 621488eaba1d7a5da933eb59649898419d9fcd36..307c63fd68506b21ae40d444dee93c306f591429 100644 (file)
@@ -9,7 +9,6 @@ package runtime
 import "unsafe"
 
 var NonblockingPipe = nonblockingPipe
-var Pipe = pipe
 var SetNonblock = setNonblock
 var Closeonexec = closeonexec