mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/fix,cmd/cgo,misc/cgo: map the EGLDisplay C type to uintptr in Go
Similar to to macOS' CF* types and JNI's jobject and derived types, the EGLDisplay type is declared as a pointer but can contain non-pointers (see #27054). Fix it the same way: map EGLDisplay to uintptr in Go. Fixes #27054 RELNOTE=yes Change-Id: I6136f8f8162687c5493b30ed324e29efe55a8fd7 Reviewed-on: https://go-review.googlesource.com/c/154417 Run-TryBot: Elias Naur <elias.naur@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
26985ed4a5
commit
d50390ce72
5 changed files with 257 additions and 0 deletions
|
|
@ -3004,6 +3004,9 @@ func (c *typeConv) badPointerTypedef(dt *dwarf.TypedefType) bool {
|
|||
if c.badJNI(dt) {
|
||||
return true
|
||||
}
|
||||
if c.badEGLDisplay(dt) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
@ -3140,6 +3143,19 @@ func (c *typeConv) badJNI(dt *dwarf.TypedefType) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (c *typeConv) badEGLDisplay(dt *dwarf.TypedefType) bool {
|
||||
if dt.Name != "EGLDisplay" {
|
||||
return false
|
||||
}
|
||||
// Check that the typedef is "typedef void *EGLDisplay".
|
||||
if ptr, ok := dt.Type.(*dwarf.PtrType); ok {
|
||||
if _, ok := ptr.Type.(*dwarf.VoidType); ok {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// jniTypes maps from JNI types that we want to be uintptrs, to the underlying type to which
|
||||
// they are mapped. The base "jobject" maps to the empty string.
|
||||
var jniTypes = map[string]string{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue