go/misc/cgo/test
Keith Randall 48016b89d9 [release-branch.go1.10] cmd/cgo: check function argument/return types for bad C pointer types
We need to determine whether arguments to and return values from C
functions are "bad" typedef'd pointer types which need to be uintptr
on the Go side.

The type of those arguments are not specified explicitly. As a result,
we never look through the C declarations for the GetTypeID functions
associated with that type, and never realize that they are bad.
However, in another function in the same package there might be an
explicit reference. Then we end up with the declaration being uintptr
in one file and *struct{...} in another file. Badness ensues.

Fix this by doing a 2-pass algorithm. In the first pass, we run as
normal, but record all the argument and result types we see. In the
second pass, we include those argument types also when reading the C
types.

Update #25036

Change-Id: I8d727e73a2fbc88cb9d9899f8719ae405f59f753
Reviewed-on: https://go-review.googlesource.com/122575
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
(cherry picked from commit 20803e0f52809fa6088285c1c87246642df2b62d)
Reviewed-on: https://go-review.googlesource.com/122818
2018-08-08 00:26:43 +00:00
..
gcc68255 all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8756 cmd/link, cmd/go: delay linking of mingwex and mingw32 until very end 2016-08-31 06:30:26 +00:00
issue8828 all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue9026 misc/cgo/test: fix freebsd test failure by moving test to its own package. 2014-11-03 13:41:03 -05:00
issue9400 misc/cgo/test: add mipsx test case for #9400 2016-12-15 17:05:29 +00:00
issue9510a cmd/link, cmd/go, cmd/dist: use copy of libgcc.a for internal linking 2015-11-14 18:56:17 +00:00
issue9510b cmd/link, cmd/go, cmd/dist: use copy of libgcc.a for internal linking 2015-11-14 18:56:17 +00:00
issue20266 go/build: make -I/-L options in cgo flags absolute 2017-06-13 18:36:04 +00:00
issue24161arg [release-branch.go1.10] cmd/cgo: check function argument/return types for bad C pointer types 2018-08-08 00:26:43 +00:00
issue24161res [release-branch.go1.10] cmd/cgo: check function argument/return types for bad C pointer types 2018-08-08 00:26:43 +00:00
issue26430 [release-branch.go1.10] cmd/cgo: don't report inconsistency error for incomplete typedef 2018-08-07 05:18:07 +00:00
align.go test: Add the usual Copyright notice. 2012-01-24 14:48:15 -05:00
api.go cmd/cgo: only record typedef name for pointer to struct 2016-11-01 23:06:24 +00:00
backdoor.go misc/cgo/test: get rid of the backdoor package 2014-12-24 00:18:21 +00:00
basic.go misc/cgo/test: add test that gccgo fails 2016-10-13 00:03:57 +00:00
buildid_linux.go misc/cgo/test: avoid endless loop when we can't parse notes 2018-01-11 19:55:49 +00:00
callback.go cmd/cgo: always use a function literal for pointer checking 2016-10-19 21:20:50 +00:00
callback_c.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
callback_c_gc.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
callback_c_gccgo.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cflags.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cgo_linux_test.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cgo_stubs_android_test.go misc/cgo/test,cmd/dist: enable (most) Cgo tests on Android 2016-06-01 22:06:51 +00:00
cgo_test.go cmd/cgo: make JNI's jobject type map to uintptr in Go 2017-12-08 16:13:14 +00:00
cgo_thread_lock.go misc/cgo/test: add test that gccgo fails 2016-10-13 00:03:57 +00:00
cgo_unix_test.go runtime/cgo: retry pthread_create on EAGAIN 2016-12-05 18:46:18 +00:00
checkconst.go cmd/cgo: preserve original call arguments when pointer checking 2016-10-21 20:46:20 +00:00
complex.go cmd/compile, cmd/cgo: align complex{64,128} like GCC 2016-10-05 17:44:27 +00:00
cthread.go misc/cgo/test,cmd/dist: enable (more) Cgo tests on iOS 2016-06-02 10:09:12 +00:00
cthread_unix.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cthread_windows.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
duplicate_symbol.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
env.go misc/cgo/test: fix go vet warnings 2015-10-13 17:53:20 +00:00
exports.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
fpvar.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
gcc68255.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
helpers.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue1222.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue1328.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue1560.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue1635.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue2462.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue3250.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue3250w.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue3261.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue3729.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue3729w.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue3741.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue3775.go misc/cgo/test,cmd/dist: enable (most) Cgo tests on Android 2016-06-01 22:06:51 +00:00
issue3945.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue4029.c misc/cgo/test: get uintptr, not pointer, from dlopen 2018-02-02 18:42:10 +00:00
issue4029.go misc/cgo/test: get uintptr, not pointer, from dlopen 2018-02-02 18:42:10 +00:00
issue4029w.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue4054a.go cgo: process DWARF info even when debug data is used for value 2012-09-20 13:20:33 +10:00
issue4054b.go cgo: process DWARF info even when debug data is used for value 2012-09-20 13:20:33 +10:00
issue4273.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue4273b.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue4339.c misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4339.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue4339.h misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4417.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue4857.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5227.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5242.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5337.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5337w.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5548.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5548_c.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5603.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5740.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5740a.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5740b.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue5986.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue6128.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue6390.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue6472.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue6506.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue6612.go cmd/cgo: support floating point #define macros 2017-04-07 21:09:44 +00:00
issue6833.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue6833_c.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue6907.go cmd/cgo: permit passing string values directly between Go and C 2017-11-15 03:36:54 +00:00
issue6907export.go cmd/cgo: permit passing string values directly between Go and C 2017-11-15 03:36:54 +00:00
issue6907export_c.c cmd/cgo: permit passing string values directly between Go and C 2017-11-15 03:36:54 +00:00
issue6997_linux.c misc/cgo/test,cmd/dist: enable (most) Cgo tests on Android 2016-06-01 22:06:51 +00:00
issue6997_linux.go misc/cgo/test,cmd/dist: enable (most) Cgo tests on Android 2016-06-01 22:06:51 +00:00
issue7234_test.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue7560.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue7665.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue7786.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue7978.go misc/cgo/test: set the traceback level instead of failing the test 2017-09-13 02:53:11 +00:00
issue8092.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8148.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8331.h all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8331a.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8331b.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8428.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8441.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8517.go misc/cgo/test: add Test8517 2014-10-09 16:10:51 +11:00
issue8517_windows.c misc/cgo/test: add Test8517 2014-10-09 16:10:51 +11:00
issue8517_windows.go misc/cgo/test: add Test8517 2014-10-09 16:10:51 +11:00
issue8694.go misc/cgo/test,cmd/dist: enable (most) Cgo tests on Android 2016-06-01 22:06:51 +00:00
issue8756.go cmd/link, cmd/go: delay linking of mingwex and mingw32 until very end 2016-08-31 06:30:26 +00:00
issue8811.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8811.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue8828.go cmd/go: add '_go_' suffix to go files compiled by gccgo to avoid naming conflicts 2014-10-15 13:13:37 -07:00
issue8945.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue9026.go misc/cgo/test: fix freebsd test failure by moving test to its own package. 2014-11-03 13:41:03 -05:00
issue9400_linux.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue9510.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue9557.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue10303.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue11925.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue12030.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue13402.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue13930.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue14838.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
issue17065.go misc/cgo/test: add skipped test for issue 17065 2016-09-11 20:43:11 +00:00
issue17537.go cmd/cgo: don't strip qualifiers from C void* pointer 2016-12-14 00:59:38 +00:00
issue18126.go cmd/cgo: fix cgo checking when fetching errno value 2016-12-01 02:13:50 +00:00
issue18146.go misc/cgo/test: pass current environment to syscall.Exec 2017-01-20 21:12:54 +00:00
issue18720.go cmd/cgo: support niladic function-like macros 2017-08-30 18:28:58 +00:00
issue20129.go cmd/cgo: unwrap typedef-chains before type checking 2017-06-27 23:02:34 +00:00
issue20266.go go/build: make -I/-L options in cgo flags absolute 2017-06-13 18:36:04 +00:00
issue20369.go cmd/cgo: support large unsigned macros 2017-05-17 14:42:29 +00:00
issue20910.c cmd/cgo: unify cgo output for gc and gccgo 2017-08-16 21:57:56 +00:00
issue20910.go cmd/cgo: unify cgo output for gc and gccgo 2017-08-16 21:57:56 +00:00
issue21668.go cmd/cgo: avoid using common names for sniffing 2017-08-29 00:42:34 +00:00
issue21708.go cmd/cgo: support large unsigned macro again 2017-09-01 00:42:21 +00:00
issue21809.go go/printer: fix formatting of three-index slice expression 2017-10-03 16:16:30 +00:00
issue21897.go cmd/cgo: special case C ptr types to use uintptr 2017-11-17 22:11:03 +00:00
issue21897b.go cmd/cgo: special case C ptr types to use uintptr 2017-11-17 22:11:03 +00:00
issue22958.go cmd/cgo: for C bitfields use only valid Go integer types 2017-12-01 23:50:23 +00:00
issue24161_darwin_test.go [release-branch.go1.10] cmd/cgo: check function argument/return types for bad C pointer types 2018-08-08 00:26:43 +00:00
issue26430.go [release-branch.go1.10] cmd/cgo: don't report inconsistency error for incomplete typedef 2018-08-07 05:18:07 +00:00
setgid_linux.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sigaltstack.go misc/cgo/test: fix test when using GCC 7 2017-01-20 21:12:19 +00:00
sigprocmask.c runtime: don't always unblock all signals on dragonfly, freebsd and openbsd 2016-04-15 21:20:45 +00:00
sigprocmask.go runtime: don't always unblock all signals on dragonfly, freebsd and openbsd 2016-04-15 21:20:45 +00:00
test22906.go cmd/cgo: make JNI's jobject type map to uintptr in Go 2017-12-08 16:13:14 +00:00