From 0fae49df57e6b4eaaa5bc497e06df701890f9501 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Tue, 31 Jul 2018 21:31:19 -0700 Subject: [PATCH] [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 --- src/cmd/cgo/gcc.go | 4 ++++ 1 file changed, 4 insertions(+) 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) -- 2.50.0