1999-08-08 15:27:18 +02:00
|
|
|
/* -----------------------------------------------------------------------
|
[multiple changes]
2003-10-21 Andreas Tobler <a.tobler@schweiz.ch>
* configure.in: AC_LINK_FILES(ffitarget.h).
* configure: Regenerate.
* Makefile.in: Likewise.
* include/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* fficonfig.h.in: Likewise.
2003-10-21 Paolo Bonzini <bonzini@gnu.org>
Richard Henderson <rth@redhat.com>
Avoid that ffi.h includes fficonfig.h.
* Makefile.am (EXTRA_DIST): Include ffitarget.h files
(TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
(TARGET_SRC_MIPS_SGI): Removed.
(MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
(MIPS_SGI): Removed.
(CLEANFILES): Removed.
(mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
targets.
* acconfig.h: Removed.
* configure.in: Compute sizeofs only for double and long double.
Use them to define and subst HAVE_LONG_DOUBLE. Include comments
into AC_DEFINE instead of using acconfig.h. Create
include/ffitarget.h instead of include/fficonfig.h. Rename
MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
AC_DEFINE EH_FRAME_FLAGS.
* include/Makefile.am (DISTCLEANFILES): New automake macro.
(hack_DATA): Add ffitarget.h.
* include/ffi.h.in: Remove all system specific definitions.
Declare raw API even if it is not installed, why bother?
Use limits.h instead of SIZEOF_* to define ffi_type_*. Do
not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include
ffitarget.h instead of fficonfig.h. Remove ALIGN macro.
(UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
* include/ffi_common.h (bool): Do not define.
(ffi_assert): Accept failed assertion.
(ffi_type_test): Return void and accept file/line.
(FFI_ASSERT): Pass stringized failed assertion.
(FFI_ASSERT_AT): New macro.
(FFI_ASSERT_VALID_TYPE): New macro.
(UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
UINT64, SINT64): Define here with gcc's __attribute__ macro
instead of in ffi.h
(FLOAT32, ALIGN): Define here instead of in ffi.h
* include/ffi-mips.h: Removed. Its content moved to
src/mips/ffitarget.h after separating assembly and C sections.
* src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
SIZEOF_ARG -> FFI_SIZEOF_ARG.
* src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
* src/debug.c (ffi_assert): Accept stringized failed assertion.
(ffi_type_test): Rewritten.
* src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
FFI_ASSERT_VALID_TYPE.
* src/alpha/ffitarget.h, src/arm/ffitarget.h,
src/ia64/ffitarget.h, src/m68k/ffitarget.h,
src/mips/ffitarget.h, src/powerpc/ffitarget.h,
src/s390/ffitarget.h, src/sh/ffitarget.h,
src/sh64/ffitarget.h, src/sparc/ffitarget.h,
src/x86/ffitarget.h: New files.
* src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
src/powerpc/aix.S, src/powerpc/darwin.S,
src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
include fficonfig.h
From-SVN: r72766
2003-10-21 21:01:58 +02:00
|
|
|
types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
|
1999-08-08 15:27:18 +02:00
|
|
|
|
|
|
|
Predefined ffi_types needed by libffi.
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
|
|
a copy of this software and associated documentation files (the
|
|
|
|
``Software''), to deal in the Software without restriction, including
|
|
|
|
without limitation the rights to use, copy, modify, merge, publish,
|
|
|
|
distribute, sublicense, and/or sell copies of the Software, and to
|
|
|
|
permit persons to whom the Software is furnished to do so, subject to
|
|
|
|
the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included
|
|
|
|
in all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
|
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
|
IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
|
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
|
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
|
|
OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
----------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
#include <ffi.h>
|
|
|
|
#include <ffi_common.h>
|
|
|
|
|
|
|
|
/* Type definitions */
|
|
|
|
|
2004-12-31 23:04:30 +01:00
|
|
|
#define FFI_TYPEDEF(name, type, id) \
|
|
|
|
struct struct_align_##name { \
|
|
|
|
char c; \
|
|
|
|
type x; \
|
|
|
|
}; \
|
|
|
|
ffi_type ffi_type_##name = { \
|
|
|
|
sizeof(type), \
|
|
|
|
offsetof(struct struct_align_##name, x), \
|
|
|
|
id, NULL \
|
|
|
|
}
|
1999-08-08 15:27:18 +02:00
|
|
|
|
|
|
|
/* Size and alignment are fake here. They must not be 0. */
|
2004-12-31 23:04:30 +01:00
|
|
|
ffi_type ffi_type_void = {
|
|
|
|
1, 1, FFI_TYPE_VOID, NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8);
|
|
|
|
FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8);
|
|
|
|
FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16);
|
|
|
|
FFI_TYPEDEF(sint16, SINT16, FFI_TYPE_SINT16);
|
|
|
|
FFI_TYPEDEF(uint32, UINT32, FFI_TYPE_UINT32);
|
|
|
|
FFI_TYPEDEF(sint32, SINT32, FFI_TYPE_SINT32);
|
|
|
|
FFI_TYPEDEF(uint64, UINT64, FFI_TYPE_UINT64);
|
|
|
|
FFI_TYPEDEF(sint64, SINT64, FFI_TYPE_SINT64);
|
|
|
|
|
|
|
|
FFI_TYPEDEF(pointer, void*, FFI_TYPE_POINTER);
|
|
|
|
|
|
|
|
FFI_TYPEDEF(float, float, FFI_TYPE_FLOAT);
|
|
|
|
FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE);
|
|
|
|
FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE);
|