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 {