From: Keith Randall Date: Wed, 1 Aug 2018 04:31:19 +0000 (-0700) Subject: [release-branch.go1.10] cmd/cgo: stop expanding typedefs once we reach __builtin... X-Git-Tag: go1.10.4~8 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0fae49df57e6b4eaaa5bc497e06df701890f9501;p=gostls13.git [release-branch.go1.10] cmd/cgo: stop expanding typedefs once we reach __builtin types Expanding __builtin types (__builtin_va_list, particularly) leads to problems because they are expanded by the compiler itself - the expansions are not generated by anything in a .h file. The types a __builtin type expand to are thus very confusing to cgo. See CL 126275. Fixes #25036. Change-Id: I66eb6a4f27f652f1b934ba702f580f6daa62a566 Reviewed-on: https://go-review.googlesource.com/127156 Run-TryBot: Keith Randall TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor Reviewed-on: https://go-review.googlesource.com/128096 --- diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index ef926ee8c1..765fa87447 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -627,6 +627,10 @@ func (p *Package) recordTypedefs1(dtype dwarf.Type, visited map[dwarf.Type]bool) visited[dtype] = true switch dt := dtype.(type) { case *dwarf.TypedefType: + if strings.HasPrefix(dt.Name, "__builtin") { + // Don't look inside builtin types. There be dragons. + return + } if !p.typedefs[dt.Name] { p.typedefs[dt.Name] = true p.typedefList = append(p.typedefList, dt.Name)