Mercurial > hg > CbC > CbC_gcc
view libgo/runtime/go-ffi.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* go-ffi.c -- libffi support functions. 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 <stdlib.h> #include "runtime.h" #ifdef USE_LIBFFI #include "ffi.h" /* The functions in this file are called by the Go runtime code to get the libffi type values. */ ffi_type *go_ffi_type_pointer(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_pointer(void) __asm__ ("runtime.ffi_type_pointer"); ffi_type *go_ffi_type_sint8(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_sint8(void) __asm__ ("runtime.ffi_type_sint8"); ffi_type *go_ffi_type_sint16(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_sint16(void) __asm__ ("runtime.ffi_type_sint16"); ffi_type *go_ffi_type_sint32(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_sint32(void) __asm__ ("runtime.ffi_type_sint32"); ffi_type *go_ffi_type_sint64(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_sint64(void) __asm__ ("runtime.ffi_type_sint64"); ffi_type *go_ffi_type_uint8(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_uint8(void) __asm__ ("runtime.ffi_type_uint8"); ffi_type *go_ffi_type_uint16(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_uint16(void) __asm__ ("runtime.ffi_type_uint16"); ffi_type *go_ffi_type_uint32(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_uint32(void) __asm__ ("runtime.ffi_type_uint32"); ffi_type *go_ffi_type_uint64(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_uint64(void) __asm__ ("runtime.ffi_type_uint64"); ffi_type *go_ffi_type_float(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_float(void) __asm__ ("runtime.ffi_type_float"); ffi_type *go_ffi_type_double(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_double(void) __asm__ ("runtime.ffi_type_double"); ffi_type *go_ffi_type_complex_float(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_complex_float(void) __asm__ ("runtime.ffi_type_complex_float"); ffi_type *go_ffi_type_complex_double(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_complex_double(void) __asm__ ("runtime.ffi_type_complex_double"); ffi_type *go_ffi_type_void(void) __attribute__ ((no_split_stack)); ffi_type *go_ffi_type_void(void) __asm__ ("runtime.ffi_type_void"); _Bool go_ffi_supports_complex(void) __attribute__ ((no_split_stack)); _Bool go_ffi_supports_complex(void) __asm__ ("runtime.ffi_supports_complex"); ffi_type * go_ffi_type_pointer(void) { return &ffi_type_pointer; } ffi_type * go_ffi_type_sint8(void) { return &ffi_type_sint8; } ffi_type * go_ffi_type_sint16(void) { return &ffi_type_sint16; } ffi_type * go_ffi_type_sint32(void) { return &ffi_type_sint32; } ffi_type * go_ffi_type_sint64(void) { return &ffi_type_sint64; } ffi_type * go_ffi_type_uint8(void) { return &ffi_type_uint8; } ffi_type * go_ffi_type_uint16(void) { return &ffi_type_uint16; } ffi_type * go_ffi_type_uint32(void) { return &ffi_type_uint32; } ffi_type * go_ffi_type_uint64(void) { return &ffi_type_uint64; } ffi_type * go_ffi_type_float(void) { return &ffi_type_float; } ffi_type * go_ffi_type_double(void) { return &ffi_type_double; } _Bool go_ffi_supports_complex(void) { #ifdef FFI_TARGET_HAS_COMPLEX_TYPE return true; #else return false; #endif } ffi_type * go_ffi_type_complex_float(void) { #ifdef FFI_TARGET_HAS_COMPLEX_TYPE return &ffi_type_complex_float; #else abort(); #endif } ffi_type * go_ffi_type_complex_double(void) { #ifdef FFI_TARGET_HAS_COMPLEX_TYPE return &ffi_type_complex_double; #else abort(); #endif } ffi_type * go_ffi_type_void(void) { return &ffi_type_void; } #endif /* defined(USE_LIBFFI) */