summaryrefslogtreecommitdiffstats
path: root/libffi/src/types.c
Commit message (Collapse)AuthorAgeFilesLines
* * src/powerpc/ffitarget.h: Import from upstream.amodra2013-12-101-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | * src/powerpc/ffi_powerpc.h: Likewise. * src/powerpc/ffi.c: Likewise. * src/powerpc/ffi_sysv.c: Likewise. * src/powerpc/ffi_linux64.c: Likewise. * src/powerpc/sysv.S: Likewise. * src/powerpc/ppc_closure.S: Likewise. * src/powerpc/linux64.S: Likewise. * src/powerpc/linux64_closure.S: Likewise. * src/types.c: Likewise. * Makefile.am (EXTRA_DIST): Add new src/powerpc files. (nodist_libffi_la_SOURCES <POWERPC, POWERPC_FREEBSD>): Likewise. * configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc. * include/ffi.h.in (ffi_prep_types): Declare. * src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types. * configure: Regenerate. * fficonfig.h.in: Regenerate. * Makefile.in: Regenerate. * man/Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205844 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-04 Andrew Haley <aph@redhat.com>aph2009-06-041-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | include/ffi.h.in, src/arm/ffitarget.h, src/arm/ffi.c, src/arm/sysv.S, src/powerpc/ffitarget.h, src/closures.c, src/sh64/ffitarget.h, src/sh64/ffi.c, src/sh64/sysv.S, src/types.c, src/x86/ffi64.c, src/x86/ffitarget.h, src/x86/win32.S, src/x86/darwin.S, src/x86/ffi.c, src/x86/sysv.S, src/x86/unix64.S, src/alpha/ffitarget.h, src/alpha/ffi.c, src/alpha/osf.S, src/m68k/ffitarget.h, src/frv/ffitarget.h, src/frv/ffi.c, src/s390/ffitarget.h, src/s390/sysv.S, src/cris/ffitarget.h, src/pa/linux.S, src/pa/ffitarget.h, src/pa/ffi.c, src/raw_api.c, src/ia64/ffitarget.h, src/ia64/unix.S, src/ia64/ffi.c, src/ia64/ia64_flags.h, src/java_raw_api.c, src/debug.c, src/sparc/v9.S, src/sparc/ffitarget.h, src/sparc/ffi.c, src/sparc/v8.S, src/mips/ffitarget.h, src/mips/n32.S, src/mips/o32.S, src/mips/ffi.c, src/prep_cif.c, src/sh/ffitarget.h, src/sh/ffi.c, src/sh/sysv.S: Update license text. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148171 138bc75d-0d04-0410-961f-82ee72b054a4
* * configure.ac: Tidy target case.rth2007-04-061-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | (HAVE_LONG_DOUBLE): Allow the target to override. * configure: Regenerate. * include/ffi.h.in: Don't define ffi_type_foo if LIBFFI_HIDE_BASIC_TYPES is defined. (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define to ffi_type_double. * types.c (LIBFFI_HIDE_BASIC_TYPES): Define. (FFI_TYPEDEF, ffi_type_void): Mark the data const. (ffi_type_longdouble): Special case for Alpha. Don't define if long double == double. * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value. (ffi_prep_cif_machdep): Handle it as the 128-bit type. (ffi_call, ffi_closure_osf_inner): Likewise. (ffi_closure_osf_inner): Likewise. Mark hidden. (ffi_call_osf, ffi_closure_osf): Mark hidden. * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition. * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden. (load_table): Handle 128-bit long double. * testsuite/libffi.call/float4.c: Add -mieee for alpha. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123622 138bc75d-0d04-0410-961f-82ee72b054a4
* * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.rth2004-12-311-66/+28
| | | | | | | | | (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and offset parameters with a type parameter; deduce size and structure alignment. Update all users. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92775 138bc75d-0d04-0410-961f-82ee72b054a4
* * src/types.c (FFI_TYPE_POINTER): Define with sizeof.rth2004-12-311-18/+3
| | | | | | | | | | | (FFI_TYPE_LONGDOUBLE): Fix for ia64. * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move into ffi_prep_closure. * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite from scratch. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92774 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.am: Add m32r support.nickc2004-10-131-1/+1
| | | | | | | | | | | | | | | * configure.ac: Likewise. * Makefile.in: Regenerate. * confiugre: Regenerate. * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF (uint64, sint64, double, longdouble) * src/m32r: New directory. * src/m32r/ffi.c: New file. * src/m32r/sysv.S: Likewise. * src/m32r/ffitarget.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88993 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-09-02 Andreas Tobler <a.tobler@schweiz.ch>andreast2004-09-021-1/+6
| | | | | | | | | | | | | | | * src/powerpc/ffi_darwin.c: Add flag for longdouble return values. (ffi_prep_args): Handle longdouble arguments. (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for longdouble. (ffi_closure_helper_DARWIN): Add closure handling for longdouble. * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble values. * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. * src/types.c: Defined longdouble size and alignment for darwin. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86992 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-03-16 Hosaka Yuji <hos@tamanegi.org>andreast2004-03-161-1/+5
| | | | | | | | | | | | | | | | * src/types.c: Fix alignment size of X86_WIN32 case int64 and double. * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type with ecif->cif->flags. (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type with cif->flags. (ffi_prep_cif_machdep): Add X86_WIN32 struct case. (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32. * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b, sc_retstruct2b): Add for 1 or 2-bytes struct case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79542 138bc75d-0d04-0410-961f-82ee72b054a4
* * src/types.c (pointer): POWERPC64 has 8 byte pointers.amodra2004-02-091-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77533 138bc75d-0d04-0410-961f-82ee72b054a4
* * src/types.c: Use 16 byte long double for POWERPC64.amodra2004-02-071-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77441 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-10-21 Andreas Tobler <a.tobler@schweiz.ch>andreast2003-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72766 138bc75d-0d04-0410-961f-82ee72b054a4
* * src/types.c (double, longdouble): Default POWERPC64 to 8 byte sizeamodra2003-10-131-1/+1
| | | | | | | and align. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72432 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-09-18 Andreas Tobler <a.tobler@schweiz.ch>andreast2003-09-181-1/+1
| | | | | | | | | | | | | | | | | | | | David Edelsohn <edelsohn@gnu.org> * src/types.c (double): Add AIX and Darwin to the right TYPEDEF. * src/powerpc/aix_closure.S: Remove the pointer to the outgoing parameter stack. * src/powerpc/darwin_closure.S: Likewise. * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures according to the Darwin/AIX ABI. (ffi_prep_cif_machdep): Likewise. (ffi_closure_helper_DARWIN): Likewise. Remove the outgoing parameter stack logic. Simplify the evaluation of the different CASE types. (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch statement in the trampoline code. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71530 138bc75d-0d04-0410-961f-82ee72b054a4
* * src/types.c (double, longdouble): Merge identical SH and ARMamodra2003-09-111-6/+1
| | | | | | | | | | | typedefs, and add POWERPC64. * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for struct split over gpr and rest. (ffi_prep_cif_machdep): Correct intarg_count for structures. * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71295 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix Portable .NET bug with IA-64 pointer size.wilson2002-11-261-1/+2
| | | | | | | * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59541 138bc75d-0d04-0410-961f-82ee72b054a4
* * configure.in: Add s390x-*-linux-* target.uweigand2002-09-301-1/+1
| | | | | | | | | | | | | | | | * configure: Regenerate. * include/ffi.h.in: Define S390X for s390x targets. (FFI_CLOSURES): Define for s390/s390x. (FFI_TRAMPOLINE_SIZE): Likewise. (FFI_NATIVE_RAW_API): Likewise. * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390. * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x. * src/s390/ffi.c: Major rework of existing code. Add support for s390x targets. Add closure support. * src/s390/sysv.S: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57646 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.am: Add SH support.kkojima2002-07-191-0/+10
| | | | | | | | | | | | | * Makefile.in: Regenerate. * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target. * configure: Regenerate. * include/ffi.h.in: Add SH support. * src/sh/ffi.c: New file. * src/sh/sysv.S: New file. * src/types.c: Add SH support. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55574 138bc75d-0d04-0410-961f-82ee72b054a4
* 2002-07-16 Bo Thorsen <bo@suse.de>bo2002-07-181-33/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/x86/ffi64.c: New file that adds x86-64 support. * src/x86/unix64.S: New file that handles argument setup for x86-64. * src/x86/sysv.S: Don't use this on x86-64. * src/x86/ffi.c: Don't use this on x86-64. Remove unused vars. * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation for x86-64. * src/ffitest.c (struct6): New test that tests a special case in the x86-64 ABI. (struct7): Likewise. (struct8): Likewise. (struct9): Likewise. (closure_test_fn): Silence warning about this when it's not used. (main): Add the new tests. (main): Fix a couple of wrong casts and silence some compiler warnings. * include/ffi.h.in: Add x86-64 ABI definition. * fficonfig.h.in: Regenerate. * Makefile.am: Add x86-64 support. * configure.in: Likewise. * Makefile.in: Regenerate. * configure: Likewise. 2002-06-24 Bo Thorsen <bo@suse.de> * src/types.c: Merge settings for similar architectures. Add x86-64 sizes and alignments. 2002-06-23 Bo Thorsen <bo@suse.de> * src/arm/ffi.c (ffi_prep_args): Remove unused vars. * src/sparc/ffi.c (ffi_prep_args_v8): Likewise. * src/mips/ffi.c (ffi_prep_args): Likewise. * src/m68k/ffi.c (ffi_prep_args): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55571 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-03-27 Jon Beniston <jon@beniston.com>bryce2001-03-271-0/+10
| | | | | | | | | | | | | | | | | | * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW). * configure: Rebuilt. * Makefile.am: Added X86_WIN32 target support. * Makefile.in: Rebuilt. * include/ffi.h.in: Added X86_WIN32 target support. * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets. * src/types.c: Added X86_WIN32 target support. * src/x86/win32.S: New file. Based on sysv.S, but with EH stuff removed and made to work with CygWin's gas. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40860 138bc75d-0d04-0410-961f-82ee72b054a4
* Remove RCS ident strings to allow comparisions with multiple source ↵nickc2001-03-021-2/+0
| | | | | | checkouts to work git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40195 138bc75d-0d04-0410-961f-82ee72b054a4
* Port to sparc 32 and 64 Linux.green2000-04-171-1/+18
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33196 138bc75d-0d04-0410-961f-82ee72b054a4
* Initial revisiongreen1999-08-081-0/+98
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28593 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud