mirror of
https://github.com/golang/go
synced 2024-11-18 09:34:53 -07:00
9dcc58c3d1
This implements part of the proposal in issue 12416 by adding dynamic checks for passing pointers from Go to C. This code is intended to be on at all times. It does not try to catch every case. It does not implement checks on calling Go functions from C. The new cgo checks may be disabled using GODEBUG=cgocheck=0. Update #12416. Change-Id: I48de130e7e2e83fb99a1e176b2c856be38a4d3c8 Reviewed-on: https://go-review.googlesource.com/16003 Reviewed-by: Russ Cox <rsc@golang.org>
43 lines
963 B
Bash
Executable File
43 lines
963 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# 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.
|
|
|
|
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
|
|
check err3.go
|
|
check issue7757.go
|
|
check issue8442.go
|
|
check issue11097a.go
|
|
check issue11097b.go
|
|
|
|
if ! go run ptr.go; then
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf errs _obj
|
|
exit 0
|