go.tools/ssa/interp: fix windows build.
- Add missing import. - platform-specific files syswrite() wrapper presents standard API to syscall.Write, even on Windows where first arg is a Handle. Fixes golang/go#7100 R=gri, minux.ma, alex.brainman CC=golang-codereviews https://golang.org/cl/52250043
This commit is contained in:
parent
a0cc29953e
commit
39fe7e6f8e
|
|
@ -5,6 +5,8 @@
|
||||||
package interp
|
package interp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"syscall"
|
||||||
|
|
||||||
"code.google.com/p/go.tools/ssa"
|
"code.google.com/p/go.tools/ssa"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -43,3 +45,7 @@ func ext۰syscall۰Write(fn *ssa.Function, args []value) value {
|
||||||
func ext۰syscall۰RawSyscall(fn *ssa.Function, args []value) value {
|
func ext۰syscall۰RawSyscall(fn *ssa.Function, args []value) value {
|
||||||
return tuple{^uintptr(0), uintptr(0), uintptr(0)}
|
return tuple{^uintptr(0), uintptr(0), uintptr(0)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func syswrite(fd int, b []byte) (int, error) {
|
||||||
|
return syscall.Write(fd, b)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,3 +130,7 @@ func ext۰syscall۰Write(fn *ssa.Function, args []value) value {
|
||||||
func ext۰syscall۰RawSyscall(fn *ssa.Function, args []value) value {
|
func ext۰syscall۰RawSyscall(fn *ssa.Function, args []value) value {
|
||||||
return tuple{uintptr(0), uintptr(0), uintptr(syscall.ENOSYS)}
|
return tuple{uintptr(0), uintptr(0), uintptr(syscall.ENOSYS)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func syswrite(fd int, b []byte) (int, error) {
|
||||||
|
return syscall.Write(fd, b)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@
|
||||||
package interp
|
package interp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"syscall"
|
||||||
|
|
||||||
"code.google.com/p/go.tools/ssa"
|
"code.google.com/p/go.tools/ssa"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -41,3 +43,6 @@ func ext۰syscall۰Write(fn *ssa.Function, args []value) value {
|
||||||
func ext۰syscall۰RawSyscall(fn *ssa.Function, args []value) value {
|
func ext۰syscall۰RawSyscall(fn *ssa.Function, args []value) value {
|
||||||
return tuple{uintptr(0), uintptr(0), uintptr(syscall.ENOSYS)}
|
return tuple{uintptr(0), uintptr(0), uintptr(syscall.ENOSYS)}
|
||||||
}
|
}
|
||||||
|
func syswrite(fd int, b []byte) (int, error) {
|
||||||
|
panic("syswrite not yet implemented")
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"go/token"
|
"go/token"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"code.google.com/p/go.tools/go/exact"
|
"code.google.com/p/go.tools/go/exact"
|
||||||
|
|
@ -910,12 +909,13 @@ var capturedOutputMu sync.Mutex
|
||||||
// The print/println built-ins and the write() system call funnel
|
// The print/println built-ins and the write() system call funnel
|
||||||
// through here so they can be captured by the test driver.
|
// through here so they can be captured by the test driver.
|
||||||
func write(fd int, b []byte) (int, error) {
|
func write(fd int, b []byte) (int, error) {
|
||||||
|
// TODO(adonovan): fix: on Windows, std{out,err} are not 1, 2.
|
||||||
if CapturedOutput != nil && (fd == 1 || fd == 2) {
|
if CapturedOutput != nil && (fd == 1 || fd == 2) {
|
||||||
capturedOutputMu.Lock()
|
capturedOutputMu.Lock()
|
||||||
CapturedOutput.Write(b) // ignore errors
|
CapturedOutput.Write(b) // ignore errors
|
||||||
capturedOutputMu.Unlock()
|
capturedOutputMu.Unlock()
|
||||||
}
|
}
|
||||||
return syscall.Write(fd, b)
|
return syswrite(fd, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
// callBuiltin interprets a call to builtin fn with arguments args,
|
// callBuiltin interprets a call to builtin fn with arguments args,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue