aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/export_pipe2_test.go
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2020-11-18 08:53:00 +0100
committerTobias Klauser <tobias.klauser@gmail.com>2020-11-18 19:08:11 +0000
commitee1b51294ab50179b60d6c548ddded5b91cd0cbb (patch)
tree2dd7583aa852e0b4c209dbad150e42d0842c2430 /src/runtime/export_pipe2_test.go
parentd3072b838366e7cc6b9af9767d3648f6e62bae8b (diff)
downloadgo-ee1b51294ab50179b60d6c548ddded5b91cd0cbb.tar.gz
go-ee1b51294ab50179b60d6c548ddded5b91cd0cbb.zip
runtime: use pipe2 syscall for Pipe in tests
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>
Diffstat (limited to 'src/runtime/export_pipe2_test.go')
-rw-r--r--src/runtime/export_pipe2_test.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/runtime/export_pipe2_test.go b/src/runtime/export_pipe2_test.go
new file mode 100644
index 0000000000..9d580d3313
--- /dev/null
+++ b/src/runtime/export_pipe2_test.go
@@ -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
+}