aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/os
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-09-12 23:22:53 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-09-12 23:22:53 +0000
commit656297e1fec9a127ff742df16958ee279ccacec5 (patch)
tree24347a35dacea36ce742c32c17420f3e31f17e3d /libgo/go/os
parentd6ecb707cc5a58816d27908a7aa324c4b0bc67bb (diff)
downloadgcc-656297e1fec9a127ff742df16958ee279ccacec5.zip
gcc-656297e1fec9a127ff742df16958ee279ccacec5.tar.gz
gcc-656297e1fec9a127ff742df16958ee279ccacec5.tar.bz2
libgo: update to Go1.13
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194698 From-SVN: r275691
Diffstat (limited to 'libgo/go/os')
-rw-r--r--libgo/go/os/dir.go5
-rw-r--r--libgo/go/os/error.go7
-rw-r--r--libgo/go/os/error_errno.go11
-rw-r--r--libgo/go/os/error_plan9.go9
-rw-r--r--libgo/go/os/error_test.go10
-rw-r--r--libgo/go/os/file.go4
-rw-r--r--libgo/go/os/os_test.go2
-rw-r--r--libgo/go/os/removeall_at.go2
-rw-r--r--libgo/go/os/signal/signal_cgo_test.go11
9 files changed, 43 insertions, 18 deletions
diff --git a/libgo/go/os/dir.go b/libgo/go/os/dir.go
index 6c54456..1d7ced8 100644
--- a/libgo/go/os/dir.go
+++ b/libgo/go/os/dir.go
@@ -26,7 +26,10 @@ func (f *File) Readdir(n int) ([]FileInfo, error) {
return f.readdir(n)
}
-// Readdirnames reads and returns a slice of names from the directory f.
+// Readdirnames reads the contents of the directory associated with file
+// and returns a slice of up to n names of files in the directory,
+// in directory order. Subsequent calls on the same file will yield
+// further names.
//
// If n > 0, Readdirnames returns at most n names. In this case, if
// Readdirnames returns an empty slice, it will return a non-nil error
diff --git a/libgo/go/os/error.go b/libgo/go/os/error.go
index 0c2e6a7..0e8e2d4 100644
--- a/libgo/go/os/error.go
+++ b/libgo/go/os/error.go
@@ -22,8 +22,6 @@ var (
ErrExist = errExist() // "file already exists"
ErrNotExist = errNotExist() // "file does not exist"
ErrClosed = errClosed() // "file already closed"
- ErrTimeout = errTimeout() // "deadline exceeded"
- ErrTemporary = errTemporary() // "temporary error"
ErrNoDeadline = errNoDeadline() // "file type does not support deadline"
)
@@ -32,8 +30,6 @@ func errPermission() error { return oserror.ErrPermission }
func errExist() error { return oserror.ErrExist }
func errNotExist() error { return oserror.ErrNotExist }
func errClosed() error { return oserror.ErrClosed }
-func errTimeout() error { return oserror.ErrTimeout }
-func errTemporary() error { return oserror.ErrTemporary }
func errNoDeadline() error { return poll.ErrNoDeadline }
type timeout interface {
@@ -119,7 +115,8 @@ func underlyingErrorIs(err, target error) bool {
if err == target {
return true
}
- e, ok := err.(interface{ Is(error) bool })
+ // To preserve prior behavior, only examine syscall errors.
+ e, ok := err.(syscallErrorType)
return ok && e.Is(target)
}
diff --git a/libgo/go/os/error_errno.go b/libgo/go/os/error_errno.go
new file mode 100644
index 0000000..31ae05a
--- /dev/null
+++ b/libgo/go/os/error_errno.go
@@ -0,0 +1,11 @@
+// Copyright 2019 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 !plan9
+
+package os
+
+import "syscall"
+
+type syscallErrorType = syscall.Errno
diff --git a/libgo/go/os/error_plan9.go b/libgo/go/os/error_plan9.go
new file mode 100644
index 0000000..af6065d
--- /dev/null
+++ b/libgo/go/os/error_plan9.go
@@ -0,0 +1,9 @@
+// Copyright 2019 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.
+
+package os
+
+import "syscall"
+
+type syscallErrorType = syscall.ErrorString
diff --git a/libgo/go/os/error_test.go b/libgo/go/os/error_test.go
index a03bd28..3d92157 100644
--- a/libgo/go/os/error_test.go
+++ b/libgo/go/os/error_test.go
@@ -175,3 +175,13 @@ func TestPathErrorUnwrap(t *testing.T) {
t.Error("errors.Is failed, wanted success")
}
}
+
+type myErrorIs struct{ error }
+
+func (e myErrorIs) Is(target error) bool { return target == e.error }
+
+func TestErrorIsMethods(t *testing.T) {
+ if os.IsPermission(myErrorIs{os.ErrPermission}) {
+ t.Error("os.IsPermission(err) = true when err.Is(os.ErrPermission), wanted false")
+ }
+}
diff --git a/libgo/go/os/file.go b/libgo/go/os/file.go
index 96df3fb..c13babe 100644
--- a/libgo/go/os/file.go
+++ b/libgo/go/os/file.go
@@ -34,6 +34,10 @@
// }
// fmt.Printf("read %d bytes: %q\n", count, data[:count])
//
+// Note: The maximum number of concurrent operations on a File may be limited by
+// the OS or the system. The number should be high, but exceeding it may degrade
+// performance or cause other issues.
+//
package os
import (
diff --git a/libgo/go/os/os_test.go b/libgo/go/os/os_test.go
index b6430d3..c27432f 100644
--- a/libgo/go/os/os_test.go
+++ b/libgo/go/os/os_test.go
@@ -2253,6 +2253,8 @@ func TestPipeThreads(t *testing.T) {
t.Skip("skipping on Plan 9; does not support runtime poller")
case "js":
t.Skip("skipping on js; no support for os.Pipe")
+ case "darwin":
+ t.Skip("skipping on Darwin; issue 33953")
}
threads := 100
diff --git a/libgo/go/os/removeall_at.go b/libgo/go/os/removeall_at.go
index f3ecf57..377aa49 100644
--- a/libgo/go/os/removeall_at.go
+++ b/libgo/go/os/removeall_at.go
@@ -173,7 +173,7 @@ func openFdAt(dirfd int, name string) (*File, error) {
var r int
for {
var e error
- r, e = unix.Openat(dirfd, name, O_RDONLY, 0)
+ r, e = unix.Openat(dirfd, name, O_RDONLY|syscall.O_CLOEXEC, 0)
if e == nil {
break
}
diff --git a/libgo/go/os/signal/signal_cgo_test.go b/libgo/go/os/signal/signal_cgo_test.go
index 075e8c1..3c23090 100644
--- a/libgo/go/os/signal/signal_cgo_test.go
+++ b/libgo/go/os/signal/signal_cgo_test.go
@@ -101,17 +101,6 @@ func TestTerminalSignal(t *testing.T) {
Ctty: int(slave.Fd()),
}
- // Test ctty management by sending enough child fd to overlap the
- // parent's fd intended for child's ctty.
- for 2+len(cmd.ExtraFiles) < cmd.SysProcAttr.Ctty {
- dummy, err := os.Open(os.DevNull)
- if err != nil {
- t.Fatal(err)
- }
- defer dummy.Close()
- cmd.ExtraFiles = append(cmd.ExtraFiles, dummy)
- }
-
if err := cmd.Start(); err != nil {
t.Fatal(err)
}