cgo: disallow use of C.errno
It's incorrect, and it causes cryptic linker errors.
Fixes #1360.
R=r, r2
CC=golang-dev
https://golang.org/cl/3880041
diff --git a/src/cmd/cgo/ast.go b/src/cmd/cgo/ast.go
index 7c64a5d..8689ac3 100644
--- a/src/cmd/cgo/ast.go
+++ b/src/cmd/cgo/ast.go
@@ -141,6 +141,10 @@
context = "expr"
}
goname := sel.Sel.Name
+ if goname == "errno" {
+ error(sel.Pos(), "cannot refer to errno directly; see documentation")
+ return
+ }
name := f.Name[goname]
if name == nil {
name = &Name{