summaryrefslogtreecommitdiff
path: root/lang/go14/files/patch-pipe2
diff options
context:
space:
mode:
Diffstat (limited to 'lang/go14/files/patch-pipe2')
-rw-r--r--lang/go14/files/patch-pipe2108
1 files changed, 108 insertions, 0 deletions
diff --git a/lang/go14/files/patch-pipe2 b/lang/go14/files/patch-pipe2
new file mode 100644
index 000000000000..8d3d47fc40f4
--- /dev/null
+++ b/lang/go14/files/patch-pipe2
@@ -0,0 +1,108 @@
+--- src/syscall/syscall_freebsd.go.orig 2017-03-17 19:00:39.000000000 +0000
++++ src/syscall/syscall_freebsd.go 2017-03-17 19:00:39.000000000 +0000
+@@ -82,13 +82,16 @@
+ return origlen - len(buf), count, names
+ }
+
+-//sysnb pipe() (r int, w int, err error)
++//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+-func Pipe(p []int) (err error) {
++func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+- p[0], p[1], err = pipe()
++ var pp [2]_C_int
++ err = pipe2(&pp, flags)
++ p[0] = int(pp[0])
++ p[1] = int(pp[1])
+ return
+ }
+
+--- src/syscall/exec_bsd.go.orig 2017-03-17 18:21:43.000000000 +0000
++++ src/syscall/exec_bsd.go 2017-03-17 18:21:43.000000000 +0000
+@@ -233,15 +233,7 @@
+ }
+
+ // 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
++func forkExecPipe(p []int) (err error) {
++ err = Pipe2(p, O_CLOEXEC)
++ return
+ }
+--- src/syscall/zsyscall_freebsd_amd64.go.orig 2017-03-17 19:01:09.000000000 +0000
++++ src/syscall/zsyscall_freebsd_amd64.go 2017-03-17 19:01:09.000000000 +0000
+@@ -260,10 +260,8 @@
+
+ // 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)
++func pipe2(p *[2]_C_int, flags int) (err error) {
++ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = e1
+ }
+--- src/syscall/zsyscall_freebsd_arm.go.orig 2017-03-17 20:52:22.000000000 +0000
++++ src/syscall/zsyscall_freebsd_arm.go 2017-03-17 20:52:22.000000000 +0000
+@@ -260,10 +260,8 @@
+
+ // 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)
++func pipe2(p *[2]_C_int, flags int) (err error) {
++ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = e1
+ }
+--- src/syscall/zsyscall_freebsd_386.go.orig 2017-03-17 20:53:05.000000000 +0000
++++ src/syscall/zsyscall_freebsd_386.go 2017-03-17 20:53:05.000000000 +0000
+@@ -260,10 +260,8 @@
+
+ // 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)
++func pipe2(p *[2]_C_int, flags int) (err error) {
++ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = e1
+ }
+--- src/os/pipe_bsd.go.orig 2017-03-17 20:54:41.000000000 +0000
++++ src/os/pipe_bsd.go 2017-03-17 20:54:41.000000000 +0000
+@@ -13,16 +13,10 @@
+ func Pipe() (r *File, w *File, err error) {
+ var p [2]int
+
+- // See ../syscall/exec.go for description of lock.
+- syscall.ForkLock.RLock()
+- e := syscall.Pipe(p[0:])
++ e := syscall.Pipe2(p[0:], syscall.O_CLOEXEC)
+ if e != nil {
+- syscall.ForkLock.RUnlock()
+ return nil, nil, NewSyscallError("pipe", e)
+ }
+- syscall.CloseOnExec(p[0])
+- syscall.CloseOnExec(p[1])
+- syscall.ForkLock.RUnlock()
+
+ return NewFile(uintptr(p[0]), "|0"), NewFile(uintptr(p[1]), "|1"), nil
+ }