1
0
mirror of https://github.com/golang/go synced 2024-11-07 20:36:14 -07:00
go/misc/cgo
Keith Randall b888a6227f cmd/cgo: fix cgo bad typedefs
Two fixes:

1) Typedefs of the bad typedefs should also not be rewritten to the
   underlying type.  They shouldn't just be uintptr, though, they should
   retain the C naming structure.  For example, in C:

   typedef const __CFString * CFStringRef;
   typedef CFStringRef SecKeyAlgorithm;

   we want the Go:

   type _Ctype_CFStringRef uintptr
   type _Ctype_SecKeyAlgorithm = _Ctype_CFStringRef

2) We need more types than just function arguments/return values.
   At least we need types of global variables, so when we see a reference to:

   extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962SHA1;

   we know that we need to investigate the type SecKeyAlgorithm.
   Might as well just find every typedef and check the badness of all of them.
   This requires looping until a fixed point of known types is reached.
   Usually it takes just 2 iterations, sometimes 3.

Fixes #24161

Change-Id: I32ca7e48eb4d4133c6242e91d1879636f5224ea9
Reviewed-on: https://go-review.googlesource.com/123177
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-07-12 19:15:12 +00:00
..
errors cmd/go: accept only limited compiler and linker flags in #cgo directives 2018-02-07 15:35:57 +00:00
fortran
gmp
life test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
nocgo
stdio test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
test cmd/cgo: fix cgo bad typedefs 2018-07-12 19:15:12 +00:00
testasan
testcarchive misc/cgo/testcarchive: increase timeout duration in TestOsSignal 2018-07-06 13:55:35 +00:00
testcshared misc/cgo/testcshared: use file descriptor 30 for TestUnexportedSymbols 2018-04-21 04:18:51 +00:00
testgodefs
testplugin runtime: restore r2 when restoring state from gobuf in gogo on ppc64x 2018-06-11 12:13:11 +00:00
testsanitizers cmd/cgo: mark C result as written for msan 2018-07-05 05:15:15 +00:00
testshared testshared/src/depBase: conform build tag comment to convention 2018-07-06 02:04:54 +00:00
testsigfwd
testso
testsovar
testtls