diff options
| author | Keith Randall <khr@google.com> | 2018-07-10 13:47:15 -0700 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2018-07-12 19:15:12 +0000 |
| commit | b888a6227fa56f4698f9e5ca74e8bee10830bebe (patch) | |
| tree | 911138515501b47890e870033ad5d79b8f61e5c3 /src/net/http | |
| parent | 85cfa4d55e177a70913ce8977ce847af7c4298e2 (diff) | |
| download | go-b888a6227fa56f4698f9e5ca74e8bee10830bebe.tar.xz | |
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>
Diffstat (limited to 'src/net/http')
0 files changed, 0 insertions, 0 deletions
