diff --git a/src/syscall/exec_solaris.go b/src/syscall/exec_solaris.go
index 8052ff186214373e201c93988b1a24749b381bc8..9735ae570671cb42d22bfaf84e0b861e2f1d9399 100644
--- a/src/syscall/exec_solaris.go
+++ b/src/syscall/exec_solaris.go
@@ -261,17 +261,3 @@ childerror:
 		exit(253)
 	}
 }
-
-// Try to open a pipe with O_CLOEXEC set on both file descriptors.
-func forkExecPipe(p []int) error {
-	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
-}
diff --git a/src/syscall/forkpipe_bsd.go b/src/syscall/forkpipe.go
similarity index 77%
rename from src/syscall/forkpipe_bsd.go
rename to src/syscall/forkpipe.go
index d41807220aa31bf984c0bf81fad53f87065e9d2a..fa799eb5b9321e764edd0fd78404e9a19b673e59 100644
--- a/src/syscall/forkpipe_bsd.go
+++ b/src/syscall/forkpipe.go
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build darwin dragonfly netbsd openbsd
+// +build darwin dragonfly netbsd openbsd solaris
 
 package syscall
 
+// Try to open a pipe with O_CLOEXEC set on both file descriptors.
 func forkExecPipe(p []int) error {
 	err := Pipe(p)
 	if err != nil {