go/misc/cgo/test
Austin Clements f423d616b1 cmd/cgo: fix initialization of empty argument types
CL 258938 changed the way C to Go calls work such that they now
construct a C struct on the C side for the arguments and space for the
results. Any pointers in the result space must be zeroed, so we just
zero the whole struct.

However, C makes it surprisingly hard to robustly zero any struct
type. We had used a "{0}" initializer, which works in the vast
majority of cases, but fails if the type is empty or effectively
empty.

This CL fixes this by changing how the cgo tool zero-initializes the
argument struct to be more robust.

Fixes #42495.

Change-Id: Id1749b9d751e59eb7a02a9d44fec0698a2bf63cd
Reviewed-on: https://go-review.googlesource.com/c/go/+/269337
Trust: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-11-13 15:15:15 +00:00
..
testdata
backdoor.go
buildid_linux.go
callback.go
callback_c.c
callback_c_gc.c
callback_c_gccgo.c
cgo_linux_test.go
cgo_stubs_android_test.go
cgo_test.go
cgo_thread_lock.go
cgo_unix_test.go
cthread_unix.c
cthread_windows.c
issue1435.go
issue4029.c
issue4029.go
issue4029w.go
issue4273.c
issue4273b.c
issue4339.c
issue4339.h
issue5548_c.c
issue5740a.c
issue5740b.c
issue6833_c.c
issue6907export_c.c
issue6997_linux.c
issue6997_linux.go
issue7234_test.go
issue8148.go
issue8331.h
issue8517.go
issue8517_windows.c
issue8517_windows.go
issue8694.go
issue8811.c
issue18146.go
issue20910.c
issue21897.go
issue21897b.go
issue31891.c
issue42495.go cmd/cgo: fix initialization of empty argument types 2020-11-13 15:15:15 +00:00
overlaydir_test.go
pkg_test.go
setgid_linux.go
sigaltstack.go
sigprocmask.c
sigprocmask.go
test.go
test_unix.go
test_windows.go
testx.go