mirror of
https://github.com/golang/go
synced 2024-09-23 17:20:13 -06:00
all: remove the nacl port (part 1)
You were a useful port and you've served your purpose. Thanks for all the play. A subsequent CL will remove amd64p32 (including assembly files and toolchain bits) and remaining bits. The amd64p32 removal will be separated into its own CL in case we want to support the Linux x32 ABI in the future and want our old amd64p32 support as a starting point. Updates #30439 Change-Id: Ia3a0c7d49804adc87bf52a4dea7e3d3007f2b1cd Reviewed-on: https://go-review.googlesource.com/c/go/+/199499 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
2197321db1
commit
a38a917aee
121
misc/nacl/README
121
misc/nacl/README
@ -1,121 +0,0 @@
|
||||
Native Client
|
||||
=============
|
||||
|
||||
This document outlines the basics of building and developing the Go runtime and
|
||||
programs in the Native Client (NaCl) environment.
|
||||
|
||||
Go 1.3 supports three architectures
|
||||
|
||||
* nacl/386 which is standard 386.
|
||||
* nacl/amd64p32 which is a 64 bit architecture, where the address space is
|
||||
limited to a 4gb window.
|
||||
* nacl/arm which is 32-bit ARMv7A architecture with 1GB address space.
|
||||
|
||||
For background it is recommended that you read https://golang.org/s/go13nacl.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Native Client programs are executed inside a sandbox, the NaCl runtime. This
|
||||
runtime must be installed before you can use NaCl programs.
|
||||
|
||||
The NaCl distribution comes with an installer which ensures you have access to
|
||||
the latest version of the runtime. The version tracks the Chrome numbering
|
||||
scheme.
|
||||
|
||||
# Download NaCl
|
||||
|
||||
Download nacl_sdk.zip file from
|
||||
https://developer.chrome.com/native-client/sdk/download
|
||||
and unpack it. I chose /opt/nacl_sdk.
|
||||
|
||||
# Update
|
||||
|
||||
The zip file contains a small skeleton that can be used to download the correct
|
||||
sdk. These are released every 6-8 weeks, in line with Chrome releases.
|
||||
|
||||
% cd /opt/nacl_sdk
|
||||
% ./naclsdk update
|
||||
|
||||
At this time pepper_49 is the stable version. The NaCl port needs at least pepper_39
|
||||
to work. If naclsdk downloads a later version, please adjust accordingly.
|
||||
|
||||
The cmd/go helper scripts expect that the loaders sel_ldr_{x86_{32,64},arm} and
|
||||
nacl_helper_bootstrap_arm are in your path. I find it easiest to make a symlink
|
||||
from the NaCl distribution to my $GOPATH/bin directory.
|
||||
|
||||
% ln -nfs /opt/nacl_sdk/pepper_39/tools/sel_ldr_x86_32 $GOPATH/bin/sel_ldr_x86_32
|
||||
% ln -nfs /opt/nacl_sdk/pepper_39/tools/sel_ldr_x86_64 $GOPATH/bin/sel_ldr_x86_64
|
||||
% ln -nfs /opt/nacl_sdk/pepper_39/tools/sel_ldr_arm $GOPATH/bin/sel_ldr_arm
|
||||
|
||||
Additionally, for NaCl/ARM only:
|
||||
|
||||
% ln -nfs /opt/nacl_sdk/pepper_39/tools/nacl_helper_bootstrap_arm $GOPATH/bin/nacl_helper_bootstrap_arm
|
||||
|
||||
Support scripts
|
||||
---------------
|
||||
|
||||
Symlink the two scripts in this directory into your $PATH, just as you did with
|
||||
NaCl sdk above.
|
||||
|
||||
% ln -nfs $GOROOT/misc/nacl/go_nacl_amd64p32_exec $GOPATH/bin/go_nacl_amd64p32_exec
|
||||
% ln -nfs $GOROOT/misc/nacl/go_nacl_386_exec $GOPATH/bin/go_nacl_386_exec
|
||||
% ln -nfs $GOROOT/misc/nacl/go_nacl_arm_exec $GOPATH/bin/go_nacl_arm_exec
|
||||
|
||||
Building and testing
|
||||
--------------------
|
||||
|
||||
Building for NaCl is similar to cross compiling for other platforms. However,
|
||||
as it is not possible to ever build in a `native` NaCl environment, the cmd/go
|
||||
tool has been enhanced to allow the full build, all.bash, to be executed,
|
||||
rather than just the compile stage, make.bash.
|
||||
|
||||
The cmd/go tool knows that if GOOS is set to `nacl` it should not try to
|
||||
execute any binaries itself. Instead it passes their execution to a support
|
||||
script which sets up a Native Client environment and invokes the NaCl sandbox.
|
||||
|
||||
The script's name has a special format, go_$GOOS_$GOARCH_exec, so cmd/go can
|
||||
find it.
|
||||
|
||||
In short, if the support scripts are in place, the cmd/go tool can be used as
|
||||
per normal.
|
||||
|
||||
# Build and test Go for NaCl
|
||||
|
||||
NaCl does not permit direct file system access. Instead, package syscall
|
||||
provides a simulated file system served by in-memory data. The script
|
||||
nacltest.bash is the NaCl equivalent of all.bash. It builds NaCl with an
|
||||
in-memory file system containing files needed for tests, and then it runs the
|
||||
tests.
|
||||
|
||||
% cd go/src
|
||||
% env GOARCH=amd64p32 ./nacltest.bash
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
Assuming that you have built nacl/amd64p32 binary ./mybin and can run as:
|
||||
|
||||
% sel_ldr_x86_64 -l /dev/null -S -e ./mybin
|
||||
|
||||
Create the nacl manifest file mybin.manifest with the following contents:
|
||||
|
||||
{ "program": { "x86-64": { "url": "mybin" } } }
|
||||
|
||||
url is the path to the binary relative to the manifest file.
|
||||
Then, run the program as:
|
||||
|
||||
% sel_ldr_x86_64 -g -l /dev/null -S -e ./mybin
|
||||
|
||||
The -g flag instructs the loader to stop at startup. Then, in another console:
|
||||
|
||||
% /opt/nacl_sdk/pepper_39/toolchain/linux_x86_glibc/bin/x86_64-nacl-gdb
|
||||
% nacl-manifest mybin.manifest
|
||||
% target remote :4014
|
||||
|
||||
If you see that the program is stopped in _rt0_amd64p32_nacl, then symbols are
|
||||
loaded successfully and you can type 'c' to start the program.
|
||||
Next time you can automate it as:
|
||||
|
||||
% /opt/nacl_sdk/pepper_39/toolchain/linux_x86_glibc/bin/x86_64-nacl-gdb \
|
||||
-ex 'nacl-manifest mybin.manifest' -ex 'target remote :4014'
|
@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
eval $(go env)
|
||||
|
||||
export NACLENV_GOARCH=$GOARCH
|
||||
export NACLENV_GOOS=$GOOS
|
||||
export NACLENV_GOROOT=/go
|
||||
export NACLENV_NACLPWD=$(pwd | sed "s;$GOROOT;/go;")
|
||||
|
||||
exec sel_ldr_x86_32 -l /dev/null -S -e "$@"
|
@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
eval $(go env)
|
||||
|
||||
export NACLENV_GOARCH=$GOARCH
|
||||
export NACLENV_GOOS=$GOOS
|
||||
export NACLENV_GOROOT=/go
|
||||
export NACLENV_NACLPWD=$(pwd | sed "s;$GOROOT;/go;")
|
||||
|
||||
exec sel_ldr_x86_64 -l /dev/null -S -e "$@"
|
@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
eval $(go env)
|
||||
|
||||
export NACLENV_GOARCH=$GOARCH
|
||||
export NACLENV_GOOS=$GOOS
|
||||
export NACLENV_GOROOT=/go
|
||||
export NACLENV_NACLPWD=$(pwd | sed "s;$GOROOT;/go;")
|
||||
|
||||
exec nacl_helper_bootstrap_arm $(which sel_ldr_arm) --reserved_at_zero=0xXXXXXXXXXXXXXXXX -l /dev/null -S -e "$@"
|
@ -1,226 +0,0 @@
|
||||
// Copyright 2014 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.
|
||||
|
||||
// Mkzip creates a zip file from a 'proto' file describing the contents.
|
||||
//
|
||||
// The proto file is inspired by the Plan 9 mkfs prototype file format.
|
||||
// It describes a file tree, one directory per line, with leading tab
|
||||
// indentation marking the tree structure. Each line contains a leading
|
||||
// name field giving the name of the file to copy into the zip file,
|
||||
// and then a sequence of optional key=value attributes to control
|
||||
// the copy. The only known attribute is src=foo, meaning copy the
|
||||
// actual data for the file (or directory) from an alternate location.
|
||||
package main
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"bufio"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func usage() {
|
||||
fmt.Fprintf(os.Stderr, "usage: mkzip [-r root] src.proto out.zip\n")
|
||||
os.Exit(2)
|
||||
}
|
||||
|
||||
func sysfatal(format string, args ...interface{}) {
|
||||
fmt.Fprintf(os.Stderr, "mkzip: %s\n", fmt.Sprintf(format, args...))
|
||||
os.Exit(2)
|
||||
}
|
||||
|
||||
var (
|
||||
root = flag.String("r", ".", "interpret source paths relative to this directory")
|
||||
gopackage = flag.String("p", "", "write Go source file in this package")
|
||||
)
|
||||
|
||||
type stack struct {
|
||||
name string
|
||||
src string
|
||||
depth int
|
||||
}
|
||||
|
||||
func main() {
|
||||
log.SetFlags(0)
|
||||
flag.Usage = usage
|
||||
flag.Parse()
|
||||
|
||||
args := flag.Args()
|
||||
if len(args) != 2 {
|
||||
usage()
|
||||
}
|
||||
|
||||
rf, err := os.Open(args[0])
|
||||
if err != nil {
|
||||
sysfatal("%v", err)
|
||||
}
|
||||
r := bufio.NewScanner(rf)
|
||||
|
||||
zf, err := os.Create(args[1])
|
||||
if err != nil {
|
||||
sysfatal("%v", err)
|
||||
}
|
||||
|
||||
var w io.Writer = zf
|
||||
if *gopackage != "" {
|
||||
fmt.Fprintf(zf, `package %s
|
||||
import "sync"
|
||||
func init() {
|
||||
var once sync.Once
|
||||
fsinit = func() {
|
||||
once.Do(func() {
|
||||
unzip("`, *gopackage)
|
||||
gw := &goWriter{b: bufio.NewWriter(w)}
|
||||
defer func() {
|
||||
if err := gw.Close(); err != nil {
|
||||
sysfatal("finishing Go output: %v", err)
|
||||
}
|
||||
}()
|
||||
w = gw
|
||||
}
|
||||
z := zip.NewWriter(w)
|
||||
|
||||
lineno := 0
|
||||
|
||||
addfile := func(info os.FileInfo, dst string, src string) {
|
||||
zh, err := zip.FileInfoHeader(info)
|
||||
if err != nil {
|
||||
sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
|
||||
}
|
||||
zh.Name = dst
|
||||
zh.Method = zip.Deflate
|
||||
if info.IsDir() && !strings.HasSuffix(dst, "/") {
|
||||
zh.Name += "/"
|
||||
}
|
||||
w, err := z.CreateHeader(zh)
|
||||
if err != nil {
|
||||
sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
|
||||
}
|
||||
if info.IsDir() {
|
||||
return
|
||||
}
|
||||
r, err := os.Open(src)
|
||||
if err != nil {
|
||||
sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
|
||||
}
|
||||
defer r.Close()
|
||||
if _, err := io.Copy(w, r); err != nil {
|
||||
sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
|
||||
}
|
||||
}
|
||||
|
||||
var stk []stack
|
||||
|
||||
for r.Scan() {
|
||||
line := r.Text()
|
||||
lineno++
|
||||
s := strings.TrimLeft(line, "\t")
|
||||
prefix, line := line[:len(line)-len(s)], s
|
||||
if i := strings.Index(line, "#"); i >= 0 {
|
||||
line = line[:i]
|
||||
}
|
||||
f := strings.Fields(line)
|
||||
if len(f) == 0 {
|
||||
continue
|
||||
}
|
||||
if strings.HasPrefix(line, " ") {
|
||||
sysfatal("%s:%d: must use tabs for indentation", args[0], lineno)
|
||||
}
|
||||
depth := len(prefix)
|
||||
for len(stk) > 0 && depth <= stk[len(stk)-1].depth {
|
||||
stk = stk[:len(stk)-1]
|
||||
}
|
||||
parent := ""
|
||||
psrc := *root
|
||||
if len(stk) > 0 {
|
||||
parent = stk[len(stk)-1].name
|
||||
psrc = stk[len(stk)-1].src
|
||||
}
|
||||
if strings.Contains(f[0], "/") {
|
||||
sysfatal("%s:%d: destination name cannot contain slash", args[0], lineno)
|
||||
}
|
||||
name := path.Join(parent, f[0])
|
||||
src := filepath.Join(psrc, f[0])
|
||||
for _, attr := range f[1:] {
|
||||
i := strings.Index(attr, "=")
|
||||
if i < 0 {
|
||||
sysfatal("%s:%d: malformed attribute %q", args[0], lineno, attr)
|
||||
}
|
||||
key, val := attr[:i], attr[i+1:]
|
||||
switch key {
|
||||
case "src":
|
||||
src = val
|
||||
default:
|
||||
sysfatal("%s:%d: unknown attribute %q", args[0], lineno, attr)
|
||||
}
|
||||
}
|
||||
|
||||
stk = append(stk, stack{name: name, src: src, depth: depth})
|
||||
|
||||
if f[0] == "*" || f[0] == "+" {
|
||||
if f[0] == "*" {
|
||||
dir, err := ioutil.ReadDir(psrc)
|
||||
if err != nil {
|
||||
sysfatal("%s:%d: %v", args[0], lineno, err)
|
||||
}
|
||||
for _, d := range dir {
|
||||
addfile(d, path.Join(parent, d.Name()), filepath.Join(psrc, d.Name()))
|
||||
}
|
||||
} else {
|
||||
err := filepath.Walk(psrc, func(src string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if src == psrc {
|
||||
return nil
|
||||
}
|
||||
if psrc == "." {
|
||||
psrc = ""
|
||||
}
|
||||
name := path.Join(parent, filepath.ToSlash(src[len(psrc):]))
|
||||
addfile(info, name, src)
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
sysfatal("%s:%d: %v", args[0], lineno, err)
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
fi, err := os.Stat(src)
|
||||
if err != nil {
|
||||
sysfatal("%s:%d: %v", args[0], lineno, err)
|
||||
}
|
||||
addfile(fi, name, src)
|
||||
}
|
||||
|
||||
if err := z.Close(); err != nil {
|
||||
sysfatal("finishing zip file: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
type goWriter struct {
|
||||
b *bufio.Writer
|
||||
}
|
||||
|
||||
func (w *goWriter) Write(b []byte) (int, error) {
|
||||
for _, c := range b {
|
||||
fmt.Fprintf(w.b, "\\x%02x", c)
|
||||
}
|
||||
return len(b), nil
|
||||
}
|
||||
|
||||
func (w *goWriter) Close() error {
|
||||
fmt.Fprintf(w.b, "\")\n\t\t})\n\t}\n}")
|
||||
w.b.Flush()
|
||||
return nil
|
||||
}
|
0
misc/nacl/testdata/bin/placeholder
vendored
0
misc/nacl/testdata/bin/placeholder
vendored
0
misc/nacl/testdata/empty
vendored
0
misc/nacl/testdata/empty
vendored
8
misc/nacl/testdata/group
vendored
8
misc/nacl/testdata/group
vendored
@ -1,8 +0,0 @@
|
||||
nobody:*:-2:
|
||||
nogroup:*:-1:
|
||||
wheel:*:0:root
|
||||
daemon:*:1:root
|
||||
kmem:*:2:root
|
||||
sys:*:3:root
|
||||
tty:*:4:root
|
||||
operator:*:5:root
|
1
misc/nacl/testdata/hosts
vendored
1
misc/nacl/testdata/hosts
vendored
@ -1 +0,0 @@
|
||||
127.0.0.1 localhost
|
1596
misc/nacl/testdata/mime.types
vendored
1596
misc/nacl/testdata/mime.types
vendored
File diff suppressed because it is too large
Load Diff
@ -1,190 +0,0 @@
|
||||
etc src=/etc
|
||||
mime.types src=../misc/nacl/testdata/mime.types
|
||||
resolv.conf src=../misc/nacl/testdata/empty
|
||||
group src=../misc/nacl/testdata/group
|
||||
passwd src=../misc/nacl/testdata/empty
|
||||
hosts src=../misc/nacl/testdata/hosts
|
||||
services
|
||||
usr src=../misc/nacl/testdata
|
||||
bin
|
||||
go src=..
|
||||
src
|
||||
cmd
|
||||
api
|
||||
testdata
|
||||
+
|
||||
asm
|
||||
internal
|
||||
asm
|
||||
testdata
|
||||
+
|
||||
compile
|
||||
internal
|
||||
syntax
|
||||
parser.go
|
||||
cover
|
||||
testdata
|
||||
+
|
||||
doc
|
||||
main.go
|
||||
pkg.go
|
||||
doc_test.go
|
||||
testdata
|
||||
+
|
||||
internal
|
||||
objfile
|
||||
objfile.go
|
||||
buildid
|
||||
testdata
|
||||
+
|
||||
gofmt
|
||||
gofmt.go
|
||||
gofmt_test.go
|
||||
testdata
|
||||
+
|
||||
vendor
|
||||
github.com
|
||||
google
|
||||
pprof
|
||||
internal
|
||||
binutils
|
||||
+
|
||||
driver
|
||||
+
|
||||
graph
|
||||
+
|
||||
report
|
||||
+
|
||||
profile
|
||||
+
|
||||
ianlancetaylor
|
||||
demangle
|
||||
+
|
||||
golang.org
|
||||
x
|
||||
arch
|
||||
arm
|
||||
armasm
|
||||
+
|
||||
arm64
|
||||
arm64asm
|
||||
+
|
||||
x86
|
||||
x86asm
|
||||
+
|
||||
ppc64
|
||||
ppc64asm
|
||||
+
|
||||
archive
|
||||
tar
|
||||
testdata
|
||||
+
|
||||
zip
|
||||
testdata
|
||||
+
|
||||
compress
|
||||
bzip2
|
||||
testdata
|
||||
+
|
||||
flate
|
||||
testdata
|
||||
+
|
||||
gzip
|
||||
testdata
|
||||
+
|
||||
lzw
|
||||
testdata
|
||||
+
|
||||
zlib
|
||||
crypto
|
||||
ed25519
|
||||
testdata
|
||||
+
|
||||
rsa
|
||||
testdata
|
||||
+
|
||||
tls
|
||||
testdata
|
||||
+
|
||||
debug
|
||||
dwarf
|
||||
testdata
|
||||
+
|
||||
elf
|
||||
testdata
|
||||
+
|
||||
macho
|
||||
testdata
|
||||
+
|
||||
pe
|
||||
testdata
|
||||
+
|
||||
plan9obj
|
||||
testdata
|
||||
+
|
||||
go
|
||||
build
|
||||
+
|
||||
doc
|
||||
testdata
|
||||
+
|
||||
format
|
||||
+
|
||||
parser
|
||||
+
|
||||
printer
|
||||
+
|
||||
image
|
||||
testdata
|
||||
+
|
||||
draw
|
||||
gif
|
||||
jpeg
|
||||
png
|
||||
testdata
|
||||
+
|
||||
internal
|
||||
trace
|
||||
testdata
|
||||
+
|
||||
xcoff
|
||||
testdata
|
||||
+
|
||||
io
|
||||
+
|
||||
mime
|
||||
testdata
|
||||
+
|
||||
multipart
|
||||
testdata
|
||||
+
|
||||
net
|
||||
http
|
||||
+
|
||||
testdata
|
||||
+
|
||||
os
|
||||
+
|
||||
path
|
||||
filepath
|
||||
+
|
||||
regexp
|
||||
testdata
|
||||
+
|
||||
runtime
|
||||
textflag.h
|
||||
strconv
|
||||
testdata
|
||||
+
|
||||
testdata
|
||||
+
|
||||
text
|
||||
template
|
||||
testdata
|
||||
+
|
||||
lib
|
||||
time
|
||||
zoneinfo.zip
|
||||
|
||||
test
|
||||
+
|
@ -45,17 +45,17 @@ selectedtargets() {
|
||||
gettargets | egrep -v 'android-arm|darwin-arm' | egrep "$pattern"
|
||||
}
|
||||
|
||||
# put linux, nacl first in the target list to get all the architectures up front.
|
||||
linux_nacl_targets() {
|
||||
selectedtargets | egrep 'linux|nacl' | sort
|
||||
# put linux first in the target list to get all the architectures up front.
|
||||
linux_targets() {
|
||||
selectedtargets | grep 'linux' | sort
|
||||
}
|
||||
|
||||
non_linux_nacl_targets() {
|
||||
selectedtargets | egrep -v 'linux|nacl' | sort
|
||||
non_linux_targets() {
|
||||
selectedtargets | grep -v 'linux' | sort
|
||||
}
|
||||
|
||||
# Note words in $targets are separated by both newlines and spaces.
|
||||
targets="$(linux_nacl_targets) $(non_linux_nacl_targets)"
|
||||
targets="$(linux_targets) $(non_linux_targets)"
|
||||
|
||||
failed=false
|
||||
for target in $targets
|
||||
|
@ -174,7 +174,7 @@ func TestIntendedInlining(t *testing.T) {
|
||||
}
|
||||
|
||||
switch runtime.GOARCH {
|
||||
case "nacl", "386", "wasm", "arm":
|
||||
case "386", "wasm", "arm":
|
||||
default:
|
||||
// TODO(mvdan): As explained in /test/inline_sync.go, some
|
||||
// architectures don't have atomic intrinsics, so these go over
|
||||
|
@ -2,8 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !nacl
|
||||
|
||||
package gc
|
||||
|
||||
import (
|
||||
|
@ -2,8 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !nacl
|
||||
|
||||
package ssa
|
||||
|
||||
import (
|
||||
|
@ -2,8 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !nacl
|
||||
|
||||
package types
|
||||
|
||||
import (
|
||||
|
4
src/cmd/dist/build.go
vendored
4
src/cmd/dist/build.go
vendored
@ -86,7 +86,6 @@ var okgoos = []string{
|
||||
"android",
|
||||
"solaris",
|
||||
"freebsd",
|
||||
"nacl",
|
||||
"netbsd",
|
||||
"openbsd",
|
||||
"plan9",
|
||||
@ -1505,9 +1504,6 @@ var cgoEnabled = map[string]bool{
|
||||
"android/arm": true,
|
||||
"android/arm64": true,
|
||||
"js/wasm": false,
|
||||
"nacl/386": false,
|
||||
"nacl/amd64p32": false,
|
||||
"nacl/arm": false,
|
||||
"netbsd/386": true,
|
||||
"netbsd/amd64": true,
|
||||
"netbsd/arm": true,
|
||||
|
4
src/cmd/dist/test.go
vendored
4
src/cmd/dist/test.go
vendored
@ -703,7 +703,7 @@ func (t *tester) registerTests() {
|
||||
|
||||
// Doc tests only run on builders.
|
||||
// They find problems approximately never.
|
||||
if t.hasBash() && goos != "nacl" && goos != "js" && goos != "android" && !t.iOS() && os.Getenv("GO_BUILDER_NAME") != "" {
|
||||
if t.hasBash() && goos != "js" && goos != "android" && !t.iOS() && os.Getenv("GO_BUILDER_NAME") != "" {
|
||||
t.registerTest("doc_progs", "../doc/progs", "time", "go", "run", "run.go")
|
||||
t.registerTest("wiki", "../doc/articles/wiki", "./test.bash")
|
||||
t.registerTest("codewalk", "../doc/codewalk", "time", "./run")
|
||||
@ -735,7 +735,7 @@ func (t *tester) registerTests() {
|
||||
})
|
||||
}
|
||||
}
|
||||
if goos != "nacl" && goos != "android" && !t.iOS() && goos != "js" {
|
||||
if goos != "android" && !t.iOS() && goos != "js" {
|
||||
t.tests = append(t.tests, distTest{
|
||||
name: "api",
|
||||
heading: "API check",
|
||||
|
4
src/cmd/dist/util.go
vendored
4
src/cmd/dist/util.go
vendored
@ -383,10 +383,6 @@ func xsamefile(f1, f2 string) bool {
|
||||
}
|
||||
|
||||
func xgetgoarm() string {
|
||||
if goos == "nacl" {
|
||||
// NaCl guarantees VFPv3 and is always cross-compiled.
|
||||
return "7"
|
||||
}
|
||||
if goos == "darwin" || goos == "android" {
|
||||
// Assume all darwin/arm and android devices have VFPv3.
|
||||
// These ports are also mostly cross-compiled, so it makes little
|
||||
|
@ -33,9 +33,6 @@ func TestMain(m *testing.M) {
|
||||
}
|
||||
|
||||
func maybeSkip(t *testing.T) {
|
||||
if strings.HasPrefix(runtime.GOOS, "nacl") {
|
||||
t.Skip("nacl does not have a full file tree")
|
||||
}
|
||||
if runtime.GOOS == "darwin" && strings.HasPrefix(runtime.GOARCH, "arm") {
|
||||
t.Skip("darwin/arm does not have a full file tree")
|
||||
}
|
||||
|
@ -1238,7 +1238,7 @@
|
||||
// If the -exec flag is not given, GOOS or GOARCH is different from the system
|
||||
// default, and a program named go_$GOOS_$GOARCH_exec can be found
|
||||
// on the current search path, 'go run' invokes the binary using that program,
|
||||
// for example 'go_nacl_386_exec a.out arguments...'. This allows execution of
|
||||
// for example 'go_js_wasm_exec a.out arguments...'. This allows execution of
|
||||
// cross-compiled programs when a simulator or other execution method is
|
||||
// available.
|
||||
//
|
||||
|
@ -56,7 +56,7 @@ func tooSlow(t *testing.T) {
|
||||
|
||||
func init() {
|
||||
switch runtime.GOOS {
|
||||
case "android", "js", "nacl":
|
||||
case "android", "js":
|
||||
canRun = false
|
||||
case "darwin":
|
||||
switch runtime.GOARCH {
|
||||
@ -5604,7 +5604,7 @@ func TestTestCacheInputs(t *testing.T) {
|
||||
tg.grepStdout(`\(cached\)`, "did not cache")
|
||||
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9", "windows":
|
||||
case "plan9", "windows":
|
||||
// no shell scripts
|
||||
default:
|
||||
tg.run("test", "testcache", "-run=Exec")
|
||||
|
@ -2,8 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !nacl
|
||||
|
||||
package main_test
|
||||
|
||||
import (
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd js linux netbsd openbsd solaris
|
||||
|
||||
package base
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !js,!nacl,!plan9
|
||||
// +build !js,!plan9
|
||||
|
||||
package filelock_test
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// js and nacl do not support inter-process file locking.
|
||||
// +build !js,!nacl
|
||||
// +build !js
|
||||
|
||||
package lockedfile_test
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !nacl,!plan9,!windows,!js
|
||||
// +build !plan9,!windows,!js
|
||||
|
||||
package renameio
|
||||
|
||||
|
@ -33,7 +33,7 @@ If the -exec flag is given, 'go run' invokes the binary using xprog:
|
||||
If the -exec flag is not given, GOOS or GOARCH is different from the system
|
||||
default, and a program named go_$GOOS_$GOARCH_exec can be found
|
||||
on the current search path, 'go run' invokes the binary using that program,
|
||||
for example 'go_nacl_386_exec a.out arguments...'. This allows execution of
|
||||
for example 'go_js_wasm_exec a.out arguments...'. This allows execution of
|
||||
cross-compiled programs when a simulator or other execution method is
|
||||
available.
|
||||
|
||||
|
@ -221,8 +221,6 @@ func pkgImportPath(pkgpath string) *load.Package {
|
||||
// See https://golang.org/issue/18878.
|
||||
func TestRespectSetgidDir(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl":
|
||||
t.Skip("can't set SetGID bit with chmod on nacl")
|
||||
case "darwin":
|
||||
if runtime.GOARCH == "arm" || runtime.GOARCH == "arm64" {
|
||||
t.Skip("can't set SetGID bit with chmod on iOS")
|
||||
|
@ -72,7 +72,7 @@ func TestDirList(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestExec(t *testing.T) {
|
||||
if runtime.GOOS == "plan9" || runtime.GOOS == "windows" || runtime.GOOS == "nacl" {
|
||||
if runtime.GOOS == "plan9" || runtime.GOOS == "windows" {
|
||||
t.Skip("non-unix")
|
||||
}
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !nacl
|
||||
|
||||
package obj
|
||||
|
||||
import (
|
||||
|
@ -2,8 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !nacl
|
||||
|
||||
package sym
|
||||
|
||||
import (
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
|
||||
|
||||
package rand
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris
|
||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd plan9 solaris
|
||||
|
||||
// Unix cryptographically secure pseudorandom number
|
||||
// generator.
|
||||
|
@ -1,8 +0,0 @@
|
||||
// Copyright 2015 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 x509
|
||||
|
||||
// Possible certificate files; stop after finding one.
|
||||
var certFiles = []string{}
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package x509
|
||||
|
||||
|
@ -784,7 +784,7 @@ func TestCompressedSection(t *testing.T) {
|
||||
func TestNoSectionOverlaps(t *testing.T) {
|
||||
// Ensure cmd/link outputs sections without overlaps.
|
||||
switch runtime.GOOS {
|
||||
case "aix", "android", "darwin", "js", "nacl", "plan9", "windows":
|
||||
case "aix", "android", "darwin", "js", "plan9", "windows":
|
||||
t.Skipf("cmd/link doesn't produce ELF binaries on %s", runtime.GOOS)
|
||||
}
|
||||
_ = net.ResolveIPAddr // force dynamic linkage
|
||||
|
@ -514,7 +514,7 @@ func listStdPkgs(goroot string) ([]string, error) {
|
||||
|
||||
func TestDependencies(t *testing.T) {
|
||||
iOS := runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64")
|
||||
if runtime.GOOS == "nacl" || iOS {
|
||||
if iOS {
|
||||
// Tests run in a limited file system and we do not
|
||||
// provide access to every source file.
|
||||
t.Skipf("skipping on %s/%s, missing full GOROOT", runtime.GOOS, runtime.GOARCH)
|
||||
|
@ -100,7 +100,7 @@ var importerTests = [...]importerTest{
|
||||
}
|
||||
|
||||
func TestGoxImporter(t *testing.T) {
|
||||
testenv.MustHaveExec(t) // this is to skip nacl, js
|
||||
testenv.MustHaveExec(t)
|
||||
initmap := make(map[*types.Package]InitData)
|
||||
imp := GetImporter([]string{"testdata"}, initmap)
|
||||
|
||||
|
@ -26,10 +26,7 @@ import (
|
||||
// import.
|
||||
func skipSpecialPlatforms(t *testing.T) {
|
||||
switch platform := runtime.GOOS + "-" + runtime.GOARCH; platform {
|
||||
case "nacl-amd64p32",
|
||||
"nacl-386",
|
||||
"nacl-arm",
|
||||
"darwin-arm",
|
||||
case "darwin-arm",
|
||||
"darwin-arm64":
|
||||
t.Skipf("no compiled packages available for import on %s", platform)
|
||||
}
|
||||
@ -140,7 +137,7 @@ func TestImportTestdata(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestVersionHandling(t *testing.T) {
|
||||
skipSpecialPlatforms(t) // we really only need to exclude nacl platforms, but this is fine
|
||||
skipSpecialPlatforms(t)
|
||||
|
||||
// This package only handles gc export data.
|
||||
if runtime.Compiler != "gc" {
|
||||
|
@ -5,7 +5,7 @@
|
||||
// Only run where builders (build.golang.org) have
|
||||
// access to compiled packages for import.
|
||||
//
|
||||
// +build !arm,!arm64,!nacl
|
||||
// +build !arm,!arm64
|
||||
|
||||
package types_test
|
||||
|
||||
|
@ -19,14 +19,8 @@ TEXT ·cpuid(SB), NOSPLIT, $0-24
|
||||
|
||||
// func xgetbv() (eax, edx uint32)
|
||||
TEXT ·xgetbv(SB),NOSPLIT,$0-8
|
||||
#ifdef GOOS_nacl
|
||||
// nacl does not support XGETBV.
|
||||
MOVL $0, eax+0(FP)
|
||||
MOVL $0, edx+4(FP)
|
||||
#else
|
||||
MOVL $0, CX
|
||||
XGETBV
|
||||
MOVL AX, eax+0(FP)
|
||||
MOVL DX, edx+4(FP)
|
||||
#endif
|
||||
RET
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
|
||||
|
||||
// Export guts for testing on posix.
|
||||
// Since testing imports os and os imports internal/poll,
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package poll
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build nacl js,wasm
|
||||
// +build js,wasm
|
||||
|
||||
package poll
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
|
||||
|
||||
package poll
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
|
||||
|
||||
package poll_test
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package poll
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package poll
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
// This file implements sysSocket and accept for platforms that do not
|
||||
// provide a fast path for setting SetNonblock and CloseOnExec.
|
||||
|
||||
// +build aix darwin js,wasm nacl solaris
|
||||
// +build aix darwin js,wasm solaris
|
||||
|
||||
package poll
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
// Copyright 2018 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 unix
|
||||
|
||||
func IsNonblock(fd int) (nonblocking bool, err error) {
|
||||
return false, nil
|
||||
}
|
@ -43,7 +43,7 @@ func HasGoBuild() bool {
|
||||
return false
|
||||
}
|
||||
switch runtime.GOOS {
|
||||
case "android", "nacl", "js":
|
||||
case "android", "js":
|
||||
return false
|
||||
case "darwin":
|
||||
if strings.HasPrefix(runtime.GOARCH, "arm") {
|
||||
@ -122,7 +122,7 @@ func GoTool() (string, error) {
|
||||
// using os.StartProcess or (more commonly) exec.Command.
|
||||
func HasExec() bool {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "js":
|
||||
case "js":
|
||||
return false
|
||||
case "darwin":
|
||||
if strings.HasPrefix(runtime.GOARCH, "arm") {
|
||||
@ -135,8 +135,6 @@ func HasExec() bool {
|
||||
// HasSrc reports whether the entire source tree is available under GOROOT.
|
||||
func HasSrc() bool {
|
||||
switch runtime.GOOS {
|
||||
case "nacl":
|
||||
return false
|
||||
case "darwin":
|
||||
if strings.HasPrefix(runtime.GOARCH, "arm") {
|
||||
return false
|
||||
@ -175,14 +173,14 @@ func MustHaveExecPath(t testing.TB, path string) {
|
||||
// HasExternalNetwork reports whether the current system can use
|
||||
// external (non-localhost) networks.
|
||||
func HasExternalNetwork() bool {
|
||||
return !testing.Short() && runtime.GOOS != "nacl" && runtime.GOOS != "js"
|
||||
return !testing.Short() && runtime.GOOS != "js"
|
||||
}
|
||||
|
||||
// MustHaveExternalNetwork checks that the current system can use
|
||||
// external (non-localhost) networks.
|
||||
// If not, MustHaveExternalNetwork calls t.Skip with an explanation.
|
||||
func MustHaveExternalNetwork(t testing.TB) {
|
||||
if runtime.GOOS == "nacl" || runtime.GOOS == "js" {
|
||||
if runtime.GOOS == "js" {
|
||||
t.Skipf("skipping test: no external network on %s", runtime.GOOS)
|
||||
}
|
||||
if testing.Short() {
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
|
||||
func hasSymlink() (ok bool, reason string) {
|
||||
switch runtime.GOOS {
|
||||
case "android", "nacl", "plan9":
|
||||
case "android", "plan9":
|
||||
return false, ""
|
||||
}
|
||||
|
||||
|
@ -22,5 +22,3 @@ package syslog
|
||||
// see https://golang.org/issue/1108.
|
||||
|
||||
// BUG(akumar): This package is not implemented on Plan 9.
|
||||
|
||||
// BUG(minux): This package is not implemented on NaCl (Native Client).
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !windows,!nacl,!plan9
|
||||
// +build !windows,!plan9
|
||||
|
||||
package syslog_test
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !windows,!nacl,!plan9
|
||||
// +build !windows,!plan9
|
||||
|
||||
package syslog
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !windows,!nacl,!plan9,!js
|
||||
// +build !windows,!plan9,!js
|
||||
|
||||
package syslog
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !windows,!nacl,!plan9
|
||||
// +build !windows,!plan9
|
||||
|
||||
package syslog
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package mime
|
||||
|
||||
|
@ -1,48 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2016 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.
|
||||
|
||||
# naclmake.bash builds runs make.bash for nacl, but not does run any
|
||||
# tests. This is used by the continuous build.
|
||||
|
||||
# Assumes that sel_ldr binaries and go_nacl_$GOARCH_exec scripts are in $PATH;
|
||||
# see ../misc/nacl/README.
|
||||
|
||||
set -e
|
||||
ulimit -c 0
|
||||
|
||||
# guess GOARCH if not set
|
||||
naclGOARCH=$GOARCH
|
||||
if [ -z "$naclGOARCH" ]; then
|
||||
case "$(uname -m)" in
|
||||
x86_64)
|
||||
naclGOARCH=amd64p32
|
||||
;;
|
||||
armv7l) # NativeClient on ARM only supports ARMv7A.
|
||||
naclGOARCH=arm
|
||||
;;
|
||||
i?86)
|
||||
naclGOARCH=386
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
unset GOOS GOARCH
|
||||
if [ ! -f make.bash ]; then
|
||||
echo 'nacltest.bash must be run from $GOROOT/src' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# the builder might have set GOROOT_FINAL.
|
||||
export GOROOT=$(pwd)/..
|
||||
|
||||
# Build zip file embedded in package syscall.
|
||||
echo "##### Building fake file system zip for nacl"
|
||||
rm -f syscall/fstest_nacl.go
|
||||
GOROOT_BOOTSTRAP=${GOROOT_BOOTSTRAP:-$HOME/go1.4}
|
||||
gobin=$GOROOT_BOOTSTRAP/bin
|
||||
GOROOT=$GOROOT_BOOTSTRAP $gobin/go run ../misc/nacl/mkzip.go -p syscall -r .. ../misc/nacl/testzip.proto syscall/fstest_nacl.go
|
||||
|
||||
# Run standard build and tests.
|
||||
GOOS=nacl GOARCH=$naclGOARCH ./make.bash "$@"
|
@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2014 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.
|
||||
|
||||
# For testing Native Client on builders or locally.
|
||||
# Builds a test file system and embeds it into package syscall
|
||||
# in every generated binary.
|
||||
#
|
||||
# Assumes that sel_ldr binaries and go_nacl_$GOARCH_exec scripts are in $PATH;
|
||||
# see ../misc/nacl/README.
|
||||
|
||||
set -e
|
||||
ulimit -c 0
|
||||
|
||||
. ./naclmake.bash "$@"
|
||||
|
||||
# Check GOARCH.
|
||||
case "$naclGOARCH" in
|
||||
amd64p32)
|
||||
if ! which sel_ldr_x86_64 >/dev/null; then
|
||||
echo 'cannot find sel_ldr_x86_64' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
386)
|
||||
if ! which sel_ldr_x86_32 >/dev/null; then
|
||||
echo 'cannot find sel_ldr_x86_32' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
arm)
|
||||
if ! which sel_ldr_arm >/dev/null; then
|
||||
echo 'cannot find sel_ldr_arm' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo 'unsupported $GOARCH for nacl: '"$naclGOARCH" 1>&2
|
||||
exit 1
|
||||
esac
|
||||
|
||||
if ! which go_nacl_${naclGOARCH}_exec >/dev/null; then
|
||||
echo "cannot find go_nacl_${naclGOARCH}_exec, see ../misc/nacl/README." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export PATH=$(pwd)/../bin:$(pwd)/../misc/nacl:$PATH
|
||||
GOROOT=$(../bin/go env GOROOT)
|
||||
GOOS=nacl GOARCH=$naclGOARCH go tool dist test --no-rebuild
|
||||
|
||||
rm -f syscall/fstest_nacl.go
|
@ -763,11 +763,6 @@ func TestDialCancel(t *testing.T) {
|
||||
}
|
||||
mustHaveExternalNetwork(t)
|
||||
|
||||
if runtime.GOOS == "nacl" {
|
||||
// nacl doesn't have external network access.
|
||||
t.Skipf("skipping on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
blackholeIPPort := JoinHostPort(slowDst4, "1234")
|
||||
if !supportsIPv4() {
|
||||
blackholeIPPort = JoinHostPort(slowDst6, "1234")
|
||||
@ -923,7 +918,7 @@ func TestDialListenerAddr(t *testing.T) {
|
||||
|
||||
func TestDialerControl(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
// Copyright 2018 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 net
|
||||
|
||||
func isConnError(err error) bool {
|
||||
return false
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
|
||||
|
||||
package net
|
||||
|
||||
|
@ -185,7 +185,7 @@ func TestDialError(t *testing.T) {
|
||||
|
||||
func TestProtocolDialError(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "solaris", "illumos":
|
||||
case "solaris", "illumos":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
@ -214,7 +214,7 @@ func TestProtocolDialError(t *testing.T) {
|
||||
|
||||
func TestDialAddrError(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
if !supportsIPv4() || !supportsIPv6() {
|
||||
@ -376,7 +376,7 @@ func TestListenPacketError(t *testing.T) {
|
||||
|
||||
func TestProtocolListenError(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
|
||||
|
||||
package net
|
||||
|
||||
|
@ -6,7 +6,7 @@ package net
|
||||
|
||||
import "os"
|
||||
|
||||
// BUG(mikio): On JS, NaCl and Windows, the FileConn, FileListener and
|
||||
// BUG(mikio): On JS and Windows, the FileConn, FileListener and
|
||||
// FilePacketConn functions are not implemented.
|
||||
|
||||
type fileAddr string
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build nacl js,wasm
|
||||
// +build js,wasm
|
||||
|
||||
package net
|
||||
|
||||
|
@ -31,7 +31,7 @@ var fileConnTests = []struct {
|
||||
|
||||
func TestFileConn(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9", "windows":
|
||||
case "plan9", "windows":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ var fileListenerTests = []struct {
|
||||
|
||||
func TestFileListener(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9", "windows":
|
||||
case "plan9", "windows":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
@ -230,7 +230,7 @@ var filePacketConnTests = []struct {
|
||||
|
||||
func TestFilePacketConn(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9", "windows":
|
||||
case "plan9", "windows":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
@ -297,7 +297,7 @@ func TestFilePacketConn(t *testing.T) {
|
||||
// Issue 24483.
|
||||
func TestFileCloseRace(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9", "windows":
|
||||
case "plan9", "windows":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
if !testableNetwork("tcp") {
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package net
|
||||
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// BUG(mikio): On JS and NaCl, methods and functions related to
|
||||
// BUG(mikio): On JS, methods and functions related to
|
||||
// Interface are not implemented.
|
||||
|
||||
// BUG(mikio): On AIX, DragonFly BSD, NetBSD, OpenBSD, Plan 9 and
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build nacl js,wasm
|
||||
// +build js,wasm
|
||||
|
||||
package net
|
||||
|
||||
|
@ -290,7 +290,7 @@ func checkUnicastStats(ifStats *ifStats, uniStats *routeStats) error {
|
||||
|
||||
func checkMulticastStats(ifStats *ifStats, uniStats, multiStats *routeStats) error {
|
||||
switch runtime.GOOS {
|
||||
case "aix", "dragonfly", "nacl", "netbsd", "openbsd", "plan9", "solaris", "illumos":
|
||||
case "aix", "dragonfly", "netbsd", "openbsd", "plan9", "solaris", "illumos":
|
||||
default:
|
||||
// Test the existence of connected multicast route
|
||||
// clones for IPv4. Unlike IPv6, IPv4 multicast
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package socktest
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
package socktest
|
||||
|
||||
|
@ -21,7 +21,7 @@ import (
|
||||
// change the behavior of these methods; use Read or ReadMsgIP
|
||||
// instead.
|
||||
|
||||
// BUG(mikio): On JS, NaCl and Plan 9, methods and functions related
|
||||
// BUG(mikio): On JS and Plan 9, methods and functions related
|
||||
// to IPConn are not implemented.
|
||||
|
||||
// BUG(mikio): On Windows, the File method of IPConn is not
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
|
||||
|
||||
package net
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
|
||||
|
||||
package net
|
||||
|
||||
@ -134,7 +134,7 @@ func favoriteAddrFamily(network string, laddr, raddr sockaddr, mode string) (fam
|
||||
}
|
||||
|
||||
func internetSocket(ctx context.Context, net string, laddr, raddr sockaddr, sotype, proto int, mode string, ctrlFn func(string, string, syscall.RawConn) error) (fd *netFD, err error) {
|
||||
if (runtime.GOOS == "aix" || runtime.GOOS == "windows" || runtime.GOOS == "openbsd" || runtime.GOOS == "nacl") && mode == "dial" && raddr.isWildcard() {
|
||||
if (runtime.GOOS == "aix" || runtime.GOOS == "windows" || runtime.GOOS == "openbsd") && mode == "dial" && raddr.isWildcard() {
|
||||
raddr = raddr.toLocal(net)
|
||||
}
|
||||
family, ipv6only := favoriteAddrFamily(net, laddr, raddr, mode)
|
||||
|
@ -224,7 +224,7 @@ var dualStackTCPListenerTests = []struct {
|
||||
// to be greater than or equal to 4.4.
|
||||
func TestDualStackTCPListener(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
if !supportsIPv4() || !supportsIPv6() {
|
||||
@ -314,7 +314,7 @@ var dualStackUDPListenerTests = []struct {
|
||||
// to be greater than or equal to 4.4.
|
||||
func TestDualStackUDPListener(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
if !supportsIPv4() || !supportsIPv6() {
|
||||
@ -532,7 +532,7 @@ func TestIPv4MulticastListener(t *testing.T) {
|
||||
testenv.MustHaveExternalNetwork(t)
|
||||
|
||||
switch runtime.GOOS {
|
||||
case "android", "nacl", "plan9":
|
||||
case "android", "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
case "solaris", "illumos":
|
||||
t.Skipf("not supported on solaris or illumos, see golang.org/issue/7399")
|
||||
@ -733,7 +733,7 @@ func TestClosingListener(t *testing.T) {
|
||||
|
||||
func TestListenConfigControl(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
|
@ -27,8 +27,7 @@ var protocols = map[string]int{
|
||||
}
|
||||
|
||||
// services contains minimal mappings between services names and port
|
||||
// numbers for platforms that don't have a complete list of port numbers
|
||||
// (some Solaris distros, nacl, etc).
|
||||
// numbers for platforms that don't have a complete list of port numbers.
|
||||
//
|
||||
// See https://www.iana.org/assignments/service-names-port-numbers
|
||||
//
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build nacl js,wasm
|
||||
// +build js,wasm
|
||||
|
||||
package net
|
||||
|
||||
|
@ -858,10 +858,6 @@ func TestLookupProtocol_Minimal(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestLookupNonLDH(t *testing.T) {
|
||||
if runtime.GOOS == "nacl" {
|
||||
t.Skip("skip on nacl")
|
||||
}
|
||||
|
||||
defer dnsWaitGroup.Wait()
|
||||
|
||||
if fixup := forceGoDNS(); fixup != nil {
|
||||
@ -886,10 +882,6 @@ func TestLookupNonLDH(t *testing.T) {
|
||||
|
||||
func TestLookupContextCancel(t *testing.T) {
|
||||
mustHaveExternalNetwork(t)
|
||||
if runtime.GOOS == "nacl" {
|
||||
t.Skip("skip on nacl")
|
||||
}
|
||||
|
||||
defer dnsWaitGroup.Wait()
|
||||
|
||||
ctx, ctxCancel := context.WithCancel(context.Background())
|
||||
@ -911,9 +903,6 @@ func TestLookupContextCancel(t *testing.T) {
|
||||
// crashes if nil is used.
|
||||
func TestNilResolverLookup(t *testing.T) {
|
||||
mustHaveExternalNetwork(t)
|
||||
if runtime.GOOS == "nacl" {
|
||||
t.Skip("skip on nacl")
|
||||
}
|
||||
var r *Resolver = nil
|
||||
ctx := context.Background()
|
||||
|
||||
@ -933,10 +922,6 @@ func TestNilResolverLookup(t *testing.T) {
|
||||
// canceled lookups (see golang.org/issue/24178 for details).
|
||||
func TestLookupHostCancel(t *testing.T) {
|
||||
mustHaveExternalNetwork(t)
|
||||
if runtime.GOOS == "nacl" {
|
||||
t.Skip("skip on nacl")
|
||||
}
|
||||
|
||||
const (
|
||||
google = "www.google.com"
|
||||
invalidDomain = "invalid.invalid" // RFC 2606 reserves .invalid
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build !js,!nacl,!plan9,!windows
|
||||
// +build !js,!plan9,!windows
|
||||
|
||||
package net
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build js,wasm nacl plan9 windows
|
||||
// +build js,wasm plan9 windows
|
||||
|
||||
package net
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
|
||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
|
||||
|
||||
package net
|
||||
|
||||
|
@ -72,7 +72,7 @@ func TestCloseRead(t *testing.T) {
|
||||
|
||||
func TestCloseWrite(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
@ -285,7 +285,6 @@ func TestPacketConnClose(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// nacl was previous failing to reuse an address.
|
||||
func TestListenCloseListen(t *testing.T) {
|
||||
const maxTries = 10
|
||||
for tries := 0; tries < maxTries; tries++ {
|
||||
@ -302,7 +301,7 @@ func TestListenCloseListen(t *testing.T) {
|
||||
}
|
||||
ln, err = Listen("tcp", addr)
|
||||
if err == nil {
|
||||
// Success. nacl couldn't do this before.
|
||||
// Success. (This test didn't always make it here earlier.)
|
||||
ln.Close()
|
||||
return
|
||||
}
|
||||
@ -541,7 +540,7 @@ func TestNotTemporaryRead(t *testing.T) {
|
||||
if err == nil {
|
||||
return errors.New("Read succeeded unexpectedly")
|
||||
} else if err == io.EOF {
|
||||
// This happens on NaCl and Plan 9.
|
||||
// This happens on Plan 9.
|
||||
return nil
|
||||
} else if ne, ok := err.(Error); !ok {
|
||||
return fmt.Errorf("unexpected error %v", err)
|
||||
|
@ -37,13 +37,9 @@ func testableNetwork(network string) bool {
|
||||
ss := strings.Split(network, ":")
|
||||
switch ss[0] {
|
||||
case "ip+nopriv":
|
||||
switch runtime.GOOS {
|
||||
case "nacl":
|
||||
return false
|
||||
}
|
||||
case "ip", "ip4", "ip6":
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
return false
|
||||
default:
|
||||
if os.Getuid() != 0 {
|
||||
@ -52,7 +48,7 @@ func testableNetwork(network string) bool {
|
||||
}
|
||||
case "unix", "unixgram":
|
||||
switch runtime.GOOS {
|
||||
case "android", "nacl", "plan9", "windows":
|
||||
case "android", "plan9", "windows":
|
||||
return false
|
||||
case "aix":
|
||||
return unixEnabledOnAIX
|
||||
@ -63,7 +59,7 @@ func testableNetwork(network string) bool {
|
||||
}
|
||||
case "unixpacket":
|
||||
switch runtime.GOOS {
|
||||
case "aix", "android", "darwin", "nacl", "plan9", "windows":
|
||||
case "aix", "android", "darwin", "plan9", "windows":
|
||||
return false
|
||||
case "netbsd":
|
||||
// It passes on amd64 at least. 386 fails (Issue 22927). arm is unknown.
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris nacl
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
|
||||
|
||||
// Read system port mappings from /etc/services
|
||||
|
||||
|
@ -15,7 +15,7 @@ import (
|
||||
// deadlines. If the user-provided callback returns false, the Write
|
||||
// method will fail immediately.
|
||||
|
||||
// BUG(mikio): On JS, NaCl and Plan 9, the Control, Read and Write
|
||||
// BUG(mikio): On JS and Plan 9, the Control, Read and Write
|
||||
// methods of syscall.RawConn are not implemented.
|
||||
|
||||
type rawConn struct {
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build js,wasm nacl plan9
|
||||
// +build js,wasm plan9
|
||||
|
||||
package net
|
||||
|
||||
|
@ -15,7 +15,7 @@ import (
|
||||
|
||||
func TestRawConnReadWrite(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ func TestRawConnReadWrite(t *testing.T) {
|
||||
|
||||
func TestRawConnControl(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9":
|
||||
case "plan9":
|
||||
t.Skipf("not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin js,wasm nacl netbsd openbsd
|
||||
// +build aix darwin js,wasm netbsd openbsd
|
||||
|
||||
package net
|
||||
|
||||
|
@ -218,7 +218,7 @@ func TestSendfileSeeked(t *testing.T) {
|
||||
// Test that sendfile doesn't put a pipe into blocking mode.
|
||||
func TestSendfilePipe(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "nacl", "plan9", "windows":
|
||||
case "plan9", "windows":
|
||||
// These systems don't support deadlines on pipes.
|
||||
t.Skipf("skipping on %s", runtime.GOOS)
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
|
||||
|
||||
package net
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix nacl js,wasm solaris
|
||||
// +build aix js,wasm solaris
|
||||
|
||||
package net
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris windows
|
||||
// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
|
||||
|
||||
package net
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build nacl js,wasm
|
||||
// +build js,wasm
|
||||
|
||||
package net
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build nacl js,wasm
|
||||
// +build js,wasm
|
||||
|
||||
package net
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
// This file implements sysSocket and accept for platforms that do not
|
||||
// provide a fast path for setting SetNonblock and CloseOnExec.
|
||||
|
||||
// +build aix darwin nacl solaris
|
||||
// +build aix darwin solaris
|
||||
|
||||
package net
|
||||
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// BUG(mikio): On JS, NaCl and Windows, the File method of TCPConn and
|
||||
// BUG(mikio): On JS and Windows, the File method of TCPConn and
|
||||
// TCPListener is not implemented.
|
||||
|
||||
// TCPAddr represents the address of a TCP end point.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user