diff options
Diffstat (limited to 'ext/ffi_c/libffi/src/x86/ffitarget.h')
-rw-r--r-- | ext/ffi_c/libffi/src/x86/ffitarget.h | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/ext/ffi_c/libffi/src/x86/ffitarget.h b/ext/ffi_c/libffi/src/x86/ffitarget.h index 542e6d4..a236677 100644 --- a/ext/ffi_c/libffi/src/x86/ffitarget.h +++ b/ext/ffi_c/libffi/src/x86/ffitarget.h @@ -1,6 +1,7 @@ /* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 1996-2003, 2010 Red Hat, Inc. - Copyright (C) 2008 Free Software Foundation, Inc. + ffitarget.h - Copyright (c) 2012, 2014 Anthony Green + Copyright (c) 1996-2003, 2010 Red Hat, Inc. + Copyright (C) 2008 Free Software Foundation, Inc. Target configuration macros for x86 and x86-64. @@ -29,6 +30,10 @@ #ifndef LIBFFI_TARGET_H #define LIBFFI_TARGET_H +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + /* ---- System specific configurations ----------------------------------- */ /* For code common to all platforms on x86 and x86_64. */ @@ -44,6 +49,9 @@ #define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ #endif +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#define FFI_TARGET_HAS_COMPLEX_TYPE + /* ---- Generic type definitions ----------------------------------------- */ #ifndef LIBFFI_ASM @@ -56,9 +64,16 @@ typedef unsigned long long ffi_arg; typedef long long ffi_sarg; #endif #else +#if defined __x86_64__ && defined __ILP32__ +#define FFI_SIZEOF_ARG 8 +#define FFI_SIZEOF_JAVA_RAW 4 +typedef unsigned long long ffi_arg; +typedef long long ffi_sarg; +#else typedef unsigned long ffi_arg; typedef signed long ffi_sarg; #endif +#endif typedef enum ffi_abi { FFI_FIRST_ABI = 0, @@ -67,9 +82,17 @@ typedef enum ffi_abi { #ifdef X86_WIN32 FFI_SYSV, FFI_STDCALL, + FFI_THISCALL, + FFI_FASTCALL, + FFI_MS_CDECL, + FFI_PASCAL, + FFI_REGISTER, FFI_LAST_ABI, - /* TODO: Add fastcall support for the sake of completeness */ +#ifdef _MSC_VER + FFI_DEFAULT_ABI = FFI_MS_CDECL +#else FFI_DEFAULT_ABI = FFI_SYSV +#endif #elif defined(X86_WIN64) FFI_WIN64, @@ -80,6 +103,11 @@ typedef enum ffi_abi { /* ---- Intel x86 and AMD x86-64 - */ FFI_SYSV, FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */ + FFI_THISCALL, + FFI_FASTCALL, + FFI_STDCALL, + FFI_PASCAL, + FFI_REGISTER, FFI_LAST_ABI, #if defined(__i386__) || defined(__i386) FFI_DEFAULT_ABI = FFI_SYSV @@ -96,13 +124,14 @@ typedef enum ffi_abi { #define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) #define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) #define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) +#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) #if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) #define FFI_TRAMPOLINE_SIZE 24 #define FFI_NATIVE_RAW_API 0 #else #ifdef X86_WIN32 -#define FFI_TRAMPOLINE_SIZE 13 +#define FFI_TRAMPOLINE_SIZE 52 #else #ifdef X86_WIN64 #define FFI_TRAMPOLINE_SIZE 29 @@ -113,7 +142,7 @@ typedef enum ffi_abi { #endif #endif #ifndef X86_WIN64 -#define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ +#define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ #endif #endif |