cmd/cgo: fix line number in an error message

Fixes #6563.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/14870046
diff --git a/misc/cgo/errors/err1.go b/misc/cgo/errors/err1.go
index 78094c6..8e674dc 100644
--- a/misc/cgo/errors/err1.go
+++ b/misc/cgo/errors/err1.go
@@ -1,10 +1,14 @@
+// Copyright 2013 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
 package main
 
 /*
 #cgo LDFLAGS: -c
 
 void test() {
-	xxx;		// This is line 7.
+	xxx;		// ERROR HERE
 }
 */
 import "C"
diff --git a/misc/cgo/errors/err2.go b/misc/cgo/errors/err2.go
new file mode 100644
index 0000000..0c64ffe
--- /dev/null
+++ b/misc/cgo/errors/err2.go
@@ -0,0 +1,13 @@
+// Copyright 2013 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "C"
+
+func main() {
+	s := ""
+	_ = s
+	C.malloc(s) // ERROR HERE
+}
diff --git a/misc/cgo/errors/test.bash b/misc/cgo/errors/test.bash
index e9fa6d0..697ae2f 100755
--- a/misc/cgo/errors/test.bash
+++ b/misc/cgo/errors/test.bash
@@ -2,18 +2,30 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-if go tool cgo err1.go >errs 2>&1; then
-  echo 1>&2 misc/cgo/errors/test.bash: BUG: expected cgo to fail but it succeeded
-  exit 1
-fi
-if ! test -s errs; then
-  echo 1>&2 misc/cgo/errors/test.bash: BUG: expected error output but saw none
-  exit 1
-fi
-if ! fgrep err1.go:7 errs >/dev/null 2>&1; then
-  echo 1>&2 misc/cgo/errors/test.bash: BUG: expected error on line 7 but saw:
-  cat 1>&2 errs
-  exit 1
-fi
+check() {
+	file=$1
+	line=$(grep -n 'ERROR HERE' $file | sed 's/:.*//')
+	if [ "$line" = "" ]; then
+		echo 1>&2 misc/cgo/errors/test.bash: BUG: cannot find ERROR HERE in $file
+		exit 1
+	fi
+	if go build $file >errs 2>&1; then
+		echo 1>&2 misc/cgo/errors/test.bash: BUG: expected cgo to fail but it succeeded
+		exit 1
+	fi
+	if ! test -s errs; then
+		echo 1>&2 misc/cgo/errors/test.bash: BUG: expected error output but saw none
+		exit 1
+	fi
+	if ! fgrep $file:$line: errs >/dev/null 2>&1; then
+		echo 1>&2 misc/cgo/errors/test.bash: BUG: expected error on line $line but saw:
+		cat 1>&2 errs
+		exit 1
+	fi
+}
+
+check err1.go
+check err2.go
+
 rm -rf errs _obj
 exit 0