| /* go-unsafe-pointer.c -- unsafe.Pointer type descriptor for Go. | 
 |  | 
 |    Copyright 2009 The Go Authors. All rights reserved. | 
 |    Use of this source code is governed by a BSD-style | 
 |    license that can be found in the LICENSE file.  */ | 
 |  | 
 | #include <stddef.h> | 
 |  | 
 | #include "runtime.h" | 
 |  | 
 | /* This file provides the type descriptor for the unsafe.Pointer type. | 
 |    The unsafe package is defined by the compiler itself, which means | 
 |    that there is no package to compile to define the type | 
 |    descriptor.  */ | 
 |  | 
 | extern const struct _type unsafe_Pointer | 
 |   __asm__ (GOSYM_PREFIX "unsafe.Pointer..d"); | 
 |  | 
 | extern const byte unsafe_Pointer_gc[] | 
 |   __asm__ (GOSYM_PREFIX "unsafe.Pointer..g"); | 
 |  | 
 | /* Used to determine the field alignment.  */ | 
 | struct field_align | 
 | { | 
 |   char c; | 
 |   void *p; | 
 | }; | 
 |  | 
 | /* The reflection string.  */ | 
 | #define REFLECTION "unsafe.Pointer" | 
 | static const String reflection_string = | 
 | { | 
 |   (const byte *) REFLECTION, | 
 |   sizeof REFLECTION - 1 | 
 | }; | 
 |  | 
 | const byte unsafe_Pointer_gc[] = { 1 }; | 
 |  | 
 | extern const FuncVal runtime_pointerequal_descriptor | 
 |   __asm__ (GOSYM_PREFIX "runtime.pointerequal..f"); | 
 |  | 
 | const struct _type unsafe_Pointer = | 
 | { | 
 |   /* size */ | 
 |   sizeof (void *), | 
 |   /* ptrdata */ | 
 |   sizeof (void *), | 
 |   /* hash */ | 
 |   78501163U, | 
 |   /* tflag */ | 
 |   tflagRegularMemory, | 
 |   /* align */ | 
 |   __alignof (void *), | 
 |   /* fieldAlign */ | 
 |   offsetof (struct field_align, p) - 1, | 
 |   /* kind */ | 
 |   kindUnsafePointer | kindDirectIface, | 
 |   /* equal */ | 
 |   &runtime_pointerequal_descriptor, | 
 |   /* gcdata */ | 
 |   unsafe_Pointer_gc, | 
 |   /* _string */ | 
 |   &reflection_string, | 
 |   /* uncommontype */ | 
 |   NULL, | 
 |   /* ptrToThis */ | 
 |   NULL | 
 | }; | 
 |  | 
 | /* We also need the type descriptor for the pointer to unsafe.Pointer, | 
 |    since any package which refers to that type descriptor will expect | 
 |    it to be defined elsewhere.  */ | 
 |  | 
 | extern const struct ptrtype pointer_unsafe_Pointer | 
 |   __asm__ (GOSYM_PREFIX "unsafe.Pointer..p"); | 
 |  | 
 | /* The reflection string.  */ | 
 | #define PREFLECTION "*unsafe.Pointer" | 
 | static const String preflection_string = | 
 | { | 
 |   (const byte *) PREFLECTION, | 
 |   sizeof PREFLECTION - 1, | 
 | }; | 
 |  | 
 | extern const byte pointer_unsafe_Pointer_gc[] | 
 |   __asm__ (GOSYM_PREFIX "unsafe.Pointer..p..g"); | 
 |  | 
 | const byte pointer_unsafe_Pointer_gc[] = { 1 }; | 
 |  | 
 | const struct ptrtype pointer_unsafe_Pointer = | 
 | { | 
 |   /* type */ | 
 |   { | 
 |     /* size */ | 
 |     sizeof (void *), | 
 |     /* ptrdata */ | 
 |     sizeof (void *), | 
 |     /* hash */ | 
 |     1256018616U, | 
 |     /* tflag */ | 
 |     tflagRegularMemory, | 
 |     /* align */ | 
 |     __alignof (void *), | 
 |     /* fieldAlign */ | 
 |     offsetof (struct field_align, p) - 1, | 
 |     /* kind */ | 
 |     kindPtr | kindDirectIface, | 
 |     /* equalfn */ | 
 |     &runtime_pointerequal_descriptor, | 
 |     /* gcdata */ | 
 |     pointer_unsafe_Pointer_gc, | 
 |     /* _string */ | 
 |     &preflection_string, | 
 |     /* uncommontype */ | 
 |     NULL, | 
 |     /* ptrToThis */ | 
 |     NULL | 
 |   }, | 
 |   /* elem */ | 
 |   &unsafe_Pointer | 
 | }; |