go/ssa/interp: add internal/syscall/unix.syscall_fcntl to fix tests

CL 100077 added the syscall_fcntl function in the internal/syscall/unix
package to refer to syscall.fcntl outside of the syscall package in a
unified way.

Add a replacement that simulates a successful fcntl call to fix the
interp tests.

Change-Id: I05847d222f18a19cb30f1395497e708a027a002e
Reviewed-on: https://go-review.googlesource.com/106415
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/go/ssa/interp/external.go b/go/ssa/interp/external.go
index 34442ca..2c4dcc7 100644
--- a/go/ssa/interp/external.go
+++ b/go/ssa/interp/external.go
@@ -32,118 +32,119 @@
 func init() {
 	// That little dot ۰ is an Arabic zero numeral (U+06F0), categories [Nd].
 	for k, v := range map[string]externalFn{
-		"(*sync.Pool).Get":                 ext۰sync۰Pool۰Get,
-		"(*sync.Pool).Put":                 ext۰nop,
-		"(reflect.Value).Bool":             ext۰reflect۰Value۰Bool,
-		"(reflect.Value).CanAddr":          ext۰reflect۰Value۰CanAddr,
-		"(reflect.Value).CanInterface":     ext۰reflect۰Value۰CanInterface,
-		"(reflect.Value).Elem":             ext۰reflect۰Value۰Elem,
-		"(reflect.Value).Field":            ext۰reflect۰Value۰Field,
-		"(reflect.Value).Float":            ext۰reflect۰Value۰Float,
-		"(reflect.Value).Index":            ext۰reflect۰Value۰Index,
-		"(reflect.Value).Int":              ext۰reflect۰Value۰Int,
-		"(reflect.Value).Interface":        ext۰reflect۰Value۰Interface,
-		"(reflect.Value).IsNil":            ext۰reflect۰Value۰IsNil,
-		"(reflect.Value).IsValid":          ext۰reflect۰Value۰IsValid,
-		"(reflect.Value).Kind":             ext۰reflect۰Value۰Kind,
-		"(reflect.Value).Len":              ext۰reflect۰Value۰Len,
-		"(reflect.Value).MapIndex":         ext۰reflect۰Value۰MapIndex,
-		"(reflect.Value).MapKeys":          ext۰reflect۰Value۰MapKeys,
-		"(reflect.Value).NumField":         ext۰reflect۰Value۰NumField,
-		"(reflect.Value).NumMethod":        ext۰reflect۰Value۰NumMethod,
-		"(reflect.Value).Pointer":          ext۰reflect۰Value۰Pointer,
-		"(reflect.Value).Set":              ext۰reflect۰Value۰Set,
-		"(reflect.Value).String":           ext۰reflect۰Value۰String,
-		"(reflect.Value).Type":             ext۰reflect۰Value۰Type,
-		"(reflect.Value).Uint":             ext۰reflect۰Value۰Uint,
-		"(reflect.error).Error":            ext۰reflect۰error۰Error,
-		"(reflect.rtype).Bits":             ext۰reflect۰rtype۰Bits,
-		"(reflect.rtype).Elem":             ext۰reflect۰rtype۰Elem,
-		"(reflect.rtype).Field":            ext۰reflect۰rtype۰Field,
-		"(reflect.rtype).In":               ext۰reflect۰rtype۰In,
-		"(reflect.rtype).Kind":             ext۰reflect۰rtype۰Kind,
-		"(reflect.rtype).NumField":         ext۰reflect۰rtype۰NumField,
-		"(reflect.rtype).NumIn":            ext۰reflect۰rtype۰NumIn,
-		"(reflect.rtype).NumMethod":        ext۰reflect۰rtype۰NumMethod,
-		"(reflect.rtype).NumOut":           ext۰reflect۰rtype۰NumOut,
-		"(reflect.rtype).Out":              ext۰reflect۰rtype۰Out,
-		"(reflect.rtype).Size":             ext۰reflect۰rtype۰Size,
-		"(reflect.rtype).String":           ext۰reflect۰rtype۰String,
-		"bytes.init":                       ext۰nop, // avoid asm dependency
-		"bytes.Equal":                      ext۰bytes۰Equal,
-		"bytes.IndexByte":                  ext۰bytes۰IndexByte,
-		"hash/crc32.haveSSE42":             ext۰crc32۰haveSSE42,
-		"internal/cpu.cpuid":               ext۰cpu۰cpuid,
-		"math.Abs":                         ext۰math۰Abs,
-		"math.Exp":                         ext۰math۰Exp,
-		"math.Float32bits":                 ext۰math۰Float32bits,
-		"math.Float32frombits":             ext۰math۰Float32frombits,
-		"math.Float64bits":                 ext۰math۰Float64bits,
-		"math.Float64frombits":             ext۰math۰Float64frombits,
-		"math.Ldexp":                       ext۰math۰Ldexp,
-		"math.Log":                         ext۰math۰Log,
-		"math.Min":                         ext۰math۰Min,
-		"math.hasSSE4":                     ext۰math۰hasSSE4,
-		"math.hasVectorFacility":           ext۰math۰hasVectorFacility,
-		"os.runtime_args":                  ext۰os۰runtime_args,
-		"os.runtime_beforeExit":            ext۰nop,
-		"os/signal.init":                   ext۰nop,
-		"reflect.New":                      ext۰reflect۰New,
-		"reflect.SliceOf":                  ext۰reflect۰SliceOf,
-		"reflect.TypeOf":                   ext۰reflect۰TypeOf,
-		"reflect.ValueOf":                  ext۰reflect۰ValueOf,
-		"reflect.Zero":                     ext۰reflect۰Zero,
-		"reflect.init":                     ext۰reflect۰Init,
-		"reflect.valueInterface":           ext۰reflect۰valueInterface,
-		"runtime.Breakpoint":               ext۰runtime۰Breakpoint,
-		"runtime.Caller":                   ext۰runtime۰Caller,
-		"runtime.Callers":                  ext۰runtime۰Callers,
-		"runtime.FuncForPC":                ext۰runtime۰FuncForPC,
-		"runtime.GC":                       ext۰runtime۰GC,
-		"runtime.GOMAXPROCS":               ext۰runtime۰GOMAXPROCS,
-		"runtime.Goexit":                   ext۰runtime۰Goexit,
-		"runtime.Gosched":                  ext۰runtime۰Gosched,
-		"runtime.init":                     ext۰nop,
-		"runtime.KeepAlive":                ext۰nop,
-		"runtime.NumCPU":                   ext۰runtime۰NumCPU,
-		"runtime.NumGoroutine":             ext۰runtime۰NumGoroutine,
-		"runtime.ReadMemStats":             ext۰runtime۰ReadMemStats,
-		"runtime.SetFinalizer":             ext۰nop, // ignore
-		"(*runtime.Func).Entry":            ext۰runtime۰Func۰Entry,
-		"(*runtime.Func).FileLine":         ext۰runtime۰Func۰FileLine,
-		"(*runtime.Func).Name":             ext۰runtime۰Func۰Name,
-		"runtime.environ":                  ext۰runtime۰environ,
-		"runtime.getgoroot":                ext۰runtime۰getgoroot,
-		"strings.init":                     ext۰nop, // avoid asm dependency
-		"strings.Count":                    ext۰strings۰Count,
-		"strings.Index":                    ext۰strings۰Index,
-		"strings.IndexByte":                ext۰strings۰IndexByte,
-		"sync.runtime_Semacquire":          ext۰nop, // unimplementable
-		"sync.runtime_Semrelease":          ext۰nop, // unimplementable
-		"sync.runtime_Syncsemcheck":        ext۰nop, // unimplementable
-		"sync.runtime_notifyListCheck":     ext۰nop,
-		"sync.runtime_registerPoolCleanup": ext۰nop,
-		"sync/atomic.AddInt32":             ext۰atomic۰AddInt32,
-		"sync/atomic.AddUint32":            ext۰atomic۰AddUint32,
-		"sync/atomic.CompareAndSwapInt32":  ext۰atomic۰CompareAndSwapInt32,
-		"sync/atomic.CompareAndSwapUint32": ext۰atomic۰CompareAndSwapUint32,
-		"sync/atomic.LoadInt32":            ext۰atomic۰LoadInt32,
-		"sync/atomic.LoadUint32":           ext۰atomic۰LoadUint32,
-		"sync/atomic.StoreInt32":           ext۰atomic۰StoreInt32,
-		"sync/atomic.StoreUint32":          ext۰atomic۰StoreUint32,
-		"sync/atomic.AddInt64":             ext۰atomic۰AddInt64,
-		"sync/atomic.AddUint64":            ext۰atomic۰AddUint64,
-		"sync/atomic.CompareAndSwapInt64":  ext۰atomic۰CompareAndSwapInt64,
-		"sync/atomic.CompareAndSwapUint64": ext۰atomic۰CompareAndSwapUint64,
-		"sync/atomic.LoadInt64":            ext۰atomic۰LoadInt64,
-		"sync/atomic.LoadUint64":           ext۰atomic۰LoadUint64,
-		"sync/atomic.StoreInt64":           ext۰atomic۰StoreInt64,
-		"sync/atomic.StoreUint64":          ext۰atomic۰StoreUint64,
-		"(*sync/atomic.Value).Load":        ext۰atomic۰ValueLoad,
-		"(*sync/atomic.Value).Store":       ext۰atomic۰ValueStore,
-		"testing.MainStart":                ext۰testing۰MainStart,
-		"time.Sleep":                       ext۰time۰Sleep,
-		"time.now":                         ext۰time۰now,
+		"(*sync.Pool).Get":                    ext۰sync۰Pool۰Get,
+		"(*sync.Pool).Put":                    ext۰nop,
+		"(reflect.Value).Bool":                ext۰reflect۰Value۰Bool,
+		"(reflect.Value).CanAddr":             ext۰reflect۰Value۰CanAddr,
+		"(reflect.Value).CanInterface":        ext۰reflect۰Value۰CanInterface,
+		"(reflect.Value).Elem":                ext۰reflect۰Value۰Elem,
+		"(reflect.Value).Field":               ext۰reflect۰Value۰Field,
+		"(reflect.Value).Float":               ext۰reflect۰Value۰Float,
+		"(reflect.Value).Index":               ext۰reflect۰Value۰Index,
+		"(reflect.Value).Int":                 ext۰reflect۰Value۰Int,
+		"(reflect.Value).Interface":           ext۰reflect۰Value۰Interface,
+		"(reflect.Value).IsNil":               ext۰reflect۰Value۰IsNil,
+		"(reflect.Value).IsValid":             ext۰reflect۰Value۰IsValid,
+		"(reflect.Value).Kind":                ext۰reflect۰Value۰Kind,
+		"(reflect.Value).Len":                 ext۰reflect۰Value۰Len,
+		"(reflect.Value).MapIndex":            ext۰reflect۰Value۰MapIndex,
+		"(reflect.Value).MapKeys":             ext۰reflect۰Value۰MapKeys,
+		"(reflect.Value).NumField":            ext۰reflect۰Value۰NumField,
+		"(reflect.Value).NumMethod":           ext۰reflect۰Value۰NumMethod,
+		"(reflect.Value).Pointer":             ext۰reflect۰Value۰Pointer,
+		"(reflect.Value).Set":                 ext۰reflect۰Value۰Set,
+		"(reflect.Value).String":              ext۰reflect۰Value۰String,
+		"(reflect.Value).Type":                ext۰reflect۰Value۰Type,
+		"(reflect.Value).Uint":                ext۰reflect۰Value۰Uint,
+		"(reflect.error).Error":               ext۰reflect۰error۰Error,
+		"(reflect.rtype).Bits":                ext۰reflect۰rtype۰Bits,
+		"(reflect.rtype).Elem":                ext۰reflect۰rtype۰Elem,
+		"(reflect.rtype).Field":               ext۰reflect۰rtype۰Field,
+		"(reflect.rtype).In":                  ext۰reflect۰rtype۰In,
+		"(reflect.rtype).Kind":                ext۰reflect۰rtype۰Kind,
+		"(reflect.rtype).NumField":            ext۰reflect۰rtype۰NumField,
+		"(reflect.rtype).NumIn":               ext۰reflect۰rtype۰NumIn,
+		"(reflect.rtype).NumMethod":           ext۰reflect۰rtype۰NumMethod,
+		"(reflect.rtype).NumOut":              ext۰reflect۰rtype۰NumOut,
+		"(reflect.rtype).Out":                 ext۰reflect۰rtype۰Out,
+		"(reflect.rtype).Size":                ext۰reflect۰rtype۰Size,
+		"(reflect.rtype).String":              ext۰reflect۰rtype۰String,
+		"bytes.init":                          ext۰nop, // avoid asm dependency
+		"bytes.Equal":                         ext۰bytes۰Equal,
+		"bytes.IndexByte":                     ext۰bytes۰IndexByte,
+		"hash/crc32.haveSSE42":                ext۰crc32۰haveSSE42,
+		"internal/cpu.cpuid":                  ext۰cpu۰cpuid,
+		"internal/syscall/unix.syscall_fcntl": ext۰syscall۰unix۰syscall_fcntl,
+		"math.Abs":                            ext۰math۰Abs,
+		"math.Exp":                            ext۰math۰Exp,
+		"math.Float32bits":                    ext۰math۰Float32bits,
+		"math.Float32frombits":                ext۰math۰Float32frombits,
+		"math.Float64bits":                    ext۰math۰Float64bits,
+		"math.Float64frombits":                ext۰math۰Float64frombits,
+		"math.Ldexp":                          ext۰math۰Ldexp,
+		"math.Log":                            ext۰math۰Log,
+		"math.Min":                            ext۰math۰Min,
+		"math.hasSSE4":                        ext۰math۰hasSSE4,
+		"math.hasVectorFacility":              ext۰math۰hasVectorFacility,
+		"os.runtime_args":                     ext۰os۰runtime_args,
+		"os.runtime_beforeExit":               ext۰nop,
+		"os/signal.init":                      ext۰nop,
+		"reflect.New":                         ext۰reflect۰New,
+		"reflect.SliceOf":                     ext۰reflect۰SliceOf,
+		"reflect.TypeOf":                      ext۰reflect۰TypeOf,
+		"reflect.ValueOf":                     ext۰reflect۰ValueOf,
+		"reflect.Zero":                        ext۰reflect۰Zero,
+		"reflect.init":                        ext۰reflect۰Init,
+		"reflect.valueInterface":              ext۰reflect۰valueInterface,
+		"runtime.Breakpoint":                  ext۰runtime۰Breakpoint,
+		"runtime.Caller":                      ext۰runtime۰Caller,
+		"runtime.Callers":                     ext۰runtime۰Callers,
+		"runtime.FuncForPC":                   ext۰runtime۰FuncForPC,
+		"runtime.GC":                          ext۰runtime۰GC,
+		"runtime.GOMAXPROCS":                  ext۰runtime۰GOMAXPROCS,
+		"runtime.Goexit":                      ext۰runtime۰Goexit,
+		"runtime.Gosched":                     ext۰runtime۰Gosched,
+		"runtime.init":                        ext۰nop,
+		"runtime.KeepAlive":                   ext۰nop,
+		"runtime.NumCPU":                      ext۰runtime۰NumCPU,
+		"runtime.NumGoroutine":                ext۰runtime۰NumGoroutine,
+		"runtime.ReadMemStats":                ext۰runtime۰ReadMemStats,
+		"runtime.SetFinalizer":                ext۰nop, // ignore
+		"(*runtime.Func).Entry":               ext۰runtime۰Func۰Entry,
+		"(*runtime.Func).FileLine":            ext۰runtime۰Func۰FileLine,
+		"(*runtime.Func).Name":                ext۰runtime۰Func۰Name,
+		"runtime.environ":                     ext۰runtime۰environ,
+		"runtime.getgoroot":                   ext۰runtime۰getgoroot,
+		"strings.init":                        ext۰nop, // avoid asm dependency
+		"strings.Count":                       ext۰strings۰Count,
+		"strings.Index":                       ext۰strings۰Index,
+		"strings.IndexByte":                   ext۰strings۰IndexByte,
+		"sync.runtime_Semacquire":             ext۰nop, // unimplementable
+		"sync.runtime_Semrelease":             ext۰nop, // unimplementable
+		"sync.runtime_Syncsemcheck":           ext۰nop, // unimplementable
+		"sync.runtime_notifyListCheck":        ext۰nop,
+		"sync.runtime_registerPoolCleanup":    ext۰nop,
+		"sync/atomic.AddInt32":                ext۰atomic۰AddInt32,
+		"sync/atomic.AddUint32":               ext۰atomic۰AddUint32,
+		"sync/atomic.CompareAndSwapInt32":     ext۰atomic۰CompareAndSwapInt32,
+		"sync/atomic.CompareAndSwapUint32":    ext۰atomic۰CompareAndSwapUint32,
+		"sync/atomic.LoadInt32":               ext۰atomic۰LoadInt32,
+		"sync/atomic.LoadUint32":              ext۰atomic۰LoadUint32,
+		"sync/atomic.StoreInt32":              ext۰atomic۰StoreInt32,
+		"sync/atomic.StoreUint32":             ext۰atomic۰StoreUint32,
+		"sync/atomic.AddInt64":                ext۰atomic۰AddInt64,
+		"sync/atomic.AddUint64":               ext۰atomic۰AddUint64,
+		"sync/atomic.CompareAndSwapInt64":     ext۰atomic۰CompareAndSwapInt64,
+		"sync/atomic.CompareAndSwapUint64":    ext۰atomic۰CompareAndSwapUint64,
+		"sync/atomic.LoadInt64":               ext۰atomic۰LoadInt64,
+		"sync/atomic.LoadUint64":              ext۰atomic۰LoadUint64,
+		"sync/atomic.StoreInt64":              ext۰atomic۰StoreInt64,
+		"sync/atomic.StoreUint64":             ext۰atomic۰StoreUint64,
+		"(*sync/atomic.Value).Load":           ext۰atomic۰ValueLoad,
+		"(*sync/atomic.Value).Store":          ext۰atomic۰ValueStore,
+		"testing.MainStart":                   ext۰testing۰MainStart,
+		"time.Sleep":                          ext۰time۰Sleep,
+		"time.now":                            ext۰time۰now,
 	} {
 		externals[k] = v
 	}
@@ -500,6 +501,10 @@
 	return tuple{uint32(0), uint32(0), uint32(0), uint32(0)}
 }
 
+func ext۰syscall۰unix۰syscall_fcntl(fr *frame, args []value) value {
+	return tuple{int(0), wrapError(nil)}
+}
+
 // Pretend: type runtime.Func struct { entry *ssa.Function }
 
 func ext۰runtime۰Func۰FileLine(fr *frame, args []value) value {