libgo: update to Go 1.8 release candidate 1

Compiler changes:
      * Change map assignment to use mapassign and assign value directly.
      * Change string iteration to use decoderune, faster for ASCII strings.
      * Change makeslice to take int, and use makeslice64 for larger values.
      * Add new noverflow field to hmap struct used for maps.
    
    Unresolved problems, to be fixed later:
      * Commented out test in go/types/sizes_test.go that doesn't compile.
      * Commented out reflect.TestStructOf test for padding after zero-sized field.
    
    Reviewed-on: https://go-review.googlesource.com/35231

gotools/:
	Updates for Go 1.8rc1.
	* Makefile.am (go_cmd_go_files): Add bug.go.
	(s-zdefaultcc): Write defaultPkgConfig.
	* Makefile.in: Rebuild.

From-SVN: r244456
This commit is contained in:
Ian Lance Taylor 2017-01-14 00:05:42 +00:00 committed by Ian Lance Taylor
parent 829afb8f05
commit c2047754c3
983 changed files with 69318 additions and 17662 deletions

View file

@ -63,7 +63,7 @@ func parsePlan9Addr(s string) (ip IP, iport int, err error) {
return nil, 0, &ParseError{Type: "IP address", Text: s}
}
}
p, _, ok := dtoi(s[i+1:], 0)
p, _, ok := dtoi(s[i+1:])
if !ok {
return nil, 0, &ParseError{Type: "port", Text: s}
}
@ -119,6 +119,11 @@ func startPlan9(ctx context.Context, net string, addr Addr) (ctl *os.File, dest,
return
}
if port > 65535 {
err = InvalidAddrError("port should be < 65536")
return
}
clone, dest, err := queryCS1(ctx, proto, ip, port)
if err != nil {
return
@ -193,6 +198,9 @@ func dialPlan9(ctx context.Context, net string, laddr, raddr Addr) (fd *netFD, e
}
func dialPlan9Blocking(ctx context.Context, net string, laddr, raddr Addr) (fd *netFD, err error) {
if isWildcard(raddr) {
raddr = toLocal(raddr, net)
}
f, dest, proto, name, err := startPlan9(ctx, net, raddr)
if err != nil {
return nil, err
@ -213,7 +221,7 @@ func dialPlan9Blocking(ctx context.Context, net string, laddr, raddr Addr) (fd *
f.Close()
return nil, err
}
return newFD(proto, name, f, data, laddr, raddr)
return newFD(proto, name, nil, f, data, laddr, raddr)
}
func listenPlan9(ctx context.Context, net string, laddr Addr) (fd *netFD, err error) {
@ -232,11 +240,11 @@ func listenPlan9(ctx context.Context, net string, laddr Addr) (fd *netFD, err er
f.Close()
return nil, err
}
return newFD(proto, name, f, nil, laddr, nil)
return newFD(proto, name, nil, f, nil, laddr, nil)
}
func (fd *netFD) netFD() (*netFD, error) {
return newFD(fd.net, fd.n, fd.ctl, fd.data, fd.laddr, fd.raddr)
return newFD(fd.net, fd.n, fd.listen, fd.ctl, fd.data, fd.laddr, fd.raddr)
}
func (fd *netFD) acceptPlan9() (nfd *netFD, err error) {
@ -245,27 +253,59 @@ func (fd *netFD) acceptPlan9() (nfd *netFD, err error) {
return nil, err
}
defer fd.readUnlock()
f, err := os.Open(fd.dir + "/listen")
listen, err := os.Open(fd.dir + "/listen")
if err != nil {
return nil, err
}
var buf [16]byte
n, err := f.Read(buf[:])
n, err := listen.Read(buf[:])
if err != nil {
f.Close()
listen.Close()
return nil, err
}
name := string(buf[:n])
ctl, err := os.OpenFile(netdir+"/"+fd.net+"/"+name+"/ctl", os.O_RDWR, 0)
if err != nil {
listen.Close()
return nil, err
}
data, err := os.OpenFile(netdir+"/"+fd.net+"/"+name+"/data", os.O_RDWR, 0)
if err != nil {
f.Close()
listen.Close()
ctl.Close()
return nil, err
}
raddr, err := readPlan9Addr(fd.net, netdir+"/"+fd.net+"/"+name+"/remote")
if err != nil {
listen.Close()
ctl.Close()
data.Close()
f.Close()
return nil, err
}
return newFD(fd.net, name, f, data, fd.laddr, raddr)
return newFD(fd.net, name, listen, ctl, data, fd.laddr, raddr)
}
func isWildcard(a Addr) bool {
var wildcard bool
switch a := a.(type) {
case *TCPAddr:
wildcard = a.isWildcard()
case *UDPAddr:
wildcard = a.isWildcard()
case *IPAddr:
wildcard = a.isWildcard()
}
return wildcard
}
func toLocal(a Addr, net string) Addr {
switch a := a.(type) {
case *TCPAddr:
a.IP = loopbackIP(net)
case *UDPAddr:
a.IP = loopbackIP(net)
case *IPAddr:
a.IP = loopbackIP(net)
}
return a
}