func dwarfSize(dt dwarf.Type, ptrSize int64) int64 {
	s := dt.Size()
	if s >= 0 {
		return s
	}
	switch x := dt.(type) {
	case *dwarf.FuncType:
		return ptrSize // Fix for issue 21097.
	case *dwarf.ArrayType:
		return x.Count * dwarfSize(x.Type, ptrSize)
	case *dwarf.TypedefType:
		return dwarfSize(x.Type, ptrSize)
	default:
		panic(fmt.Sprintf("unhandled: %s, %T", x, x))
	}
}
func dwarfSize(dt dwarf.Type, ptrSize int64) int64 {
	s := dt.Size()
	if s >= 0 {
		return s
	}
	switch x := dt.(type) {
	case *dwarf.FuncType:
		return ptrSize 
	case *dwarf.ArrayType:
		return x.Count * dwarfSize(x.Type, ptrSize)
	case *dwarf.TypedefType:
		return dwarfSize(x.Type, ptrSize)
	default:
		panic(fmt.Sprintf("unhandled: %s, %T", x, x))
	}
}
func dwarfSize ( dt dwarf . Type , ptrSize int64 ) int64 { s := dt . Size ( ) if s >= 0 { return s } switch x := dt . ( type ) { case * dwarf . FuncType : return ptrSize // Fix for issue 21097. case * dwarf . ArrayType : return x . Count * dwarfSize ( x . Type , ptrSize ) case * dwarf . TypedefType : return dwarfSize ( x . Type , ptrSize ) default : panic ( fmt . Sprintf ( " " , x , x ) ) } }
// dwarfSize is used to compute the size of a DWARF type.
// dt.Size() is wrong when it returns a negative number.
// This function implements just enough to correct the bad behavior.
dwarfSize is used to compute the size of a DWARF type . dt . Size () is wrong when it returns a negative number . This function implements just enough to correct the bad behavior .