• 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
..
ast.go Loading commit data...
doc.go Loading commit data...
gcc.go Loading commit data...
godefs.go Loading commit data...
main.go Loading commit data...
out.go Loading commit data...
util.go Loading commit data...