• Keith Randall's avatar
    cmd/cgo: fix cgo bad typedefs · b888a622
    Keith Randall authored
    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: 's avatarIan Lance Taylor <iant@golang.org>
    b888a622
Name
Last commit
Last update
..
addr2line Loading commit data...
api Loading commit data...
asm Loading commit data...
buildid Loading commit data...
cgo Loading commit data...
compile Loading commit data...
cover Loading commit data...
dist Loading commit data...
doc Loading commit data...
fix Loading commit data...
go Loading commit data...
gofmt Loading commit data...
internal Loading commit data...
link Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
pprof Loading commit data...
test2json Loading commit data...
trace Loading commit data...
vendor Loading commit data...
vet Loading commit data...