[release-branch.go1.6] all: merge master into release-branch.go1.6

Change-Id: I392f9307c9f9012fd5cebc0013debcee6526b762
diff --git a/cmd/godoc/godoc_test.go b/cmd/godoc/godoc_test.go
index d54a6d9..e4ab12f 100644
--- a/cmd/godoc/godoc_test.go
+++ b/cmd/godoc/godoc_test.go
@@ -44,7 +44,9 @@
 	{
 		args: []string{"nonexistingpkg"},
 		matches: []string{
-			`no such file or directory|does not exist|cannot find the file`,
+			// The last pattern (does not e) is for plan9:
+			// http://build.golang.org/log/2d8e5e14ed365bfa434b37ec0338cd9e6f8dd9bf
+			`no such file or directory|does not exist|cannot find the file|(?:' does not e)`,
 		},
 	},
 	{
diff --git a/cmd/stress/stress.go b/cmd/stress/stress.go
index f02fa2a..470d261 100644
--- a/cmd/stress/stress.go
+++ b/cmd/stress/stress.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !plan9
+
 // The stress utility is intended for catching of episodic failures.
 // It runs a given process in parallel in a loop and collects any failures.
 // Usage:
diff --git a/go/ssa/interp/external_plan9.go b/go/ssa/interp/external_plan9.go
index 05d02d5..81bedcf 100644
--- a/go/ssa/interp/external_plan9.go
+++ b/go/ssa/interp/external_plan9.go
@@ -6,6 +6,9 @@
 
 import "syscall"
 
+func ext۰os۰Pipe(fr *frame, args []value) value {
+	panic("os.Pipe not yet implemented")
+}
 func ext۰syscall۰Close(fr *frame, args []value) value {
 	panic("syscall.Close not yet implemented")
 }
diff --git a/oracle/describe.go b/oracle/describe.go
index 2743f67..70ddacf 100644
--- a/oracle/describe.go
+++ b/oracle/describe.go
@@ -680,6 +680,12 @@
 		return "const"
 	case *types.PkgName:
 		return "package"
+	case *types.Builtin:
+		return "builtin" // e.g. when describing package "unsafe"
+	case *types.Nil:
+		return "nil"
+	case *types.Label:
+		return "label"
 	}
 	panic(o)
 }
diff --git a/oracle/testdata/src/describe/main.go b/oracle/testdata/src/describe/main.go
index 1cdcd3c..f48d6d0 100644
--- a/oracle/testdata/src/describe/main.go
+++ b/oracle/testdata/src/describe/main.go
@@ -9,6 +9,7 @@
 import (
 	"nosuchpkg"            // @describe badimport1 "nosuchpkg"
 	nosuchpkg2 "nosuchpkg" // @describe badimport2 "nosuchpkg2"
+	_ "unsafe"             // @describe unsafe "unsafe"
 )
 
 var _ nosuchpkg.T
diff --git a/oracle/testdata/src/describe/main.golden b/oracle/testdata/src/describe/main.golden
index 74b0f80..bc6d9f7 100644
--- a/oracle/testdata/src/describe/main.golden
+++ b/oracle/testdata/src/describe/main.golden
@@ -19,6 +19,13 @@
 -------- @describe badimport2 --------
 
 Error: can't import package "nosuchpkg"
+-------- @describe unsafe --------
+import of package "unsafe"
+	builtin Alignof 
+	builtin Offsetof
+	type  Pointer  unsafe.Pointer
+	builtin Sizeof  
+
 -------- @describe type-ref-builtin --------
 reference to built-in type float64