diff options
author | Mikhail Borisov <borisov.mikhail@gmail.com> | 2022-02-10 16:45:40 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:40 +0300 |
commit | 5d50718e66d9c037dc587a0211110b7d25a66185 (patch) | |
tree | e98df59de24d2ef7c77baed9f41e4875a2fef972 /contrib/restricted/libffi/configs/i386-microsoft-windows | |
parent | a6a92afe03e02795227d2641b49819b687f088f8 (diff) | |
download | ydb-5d50718e66d9c037dc587a0211110b7d25a66185.tar.gz |
Restoring authorship annotation for Mikhail Borisov <borisov.mikhail@gmail.com>. Commit 2 of 2.
Diffstat (limited to 'contrib/restricted/libffi/configs/i386-microsoft-windows')
4 files changed, 2866 insertions, 2866 deletions
diff --git a/contrib/restricted/libffi/configs/i386-microsoft-windows/fficonfig.h b/contrib/restricted/libffi/configs/i386-microsoft-windows/fficonfig.h index 7e20e2ee7c..a1cc6192c2 100755 --- a/contrib/restricted/libffi/configs/i386-microsoft-windows/fficonfig.h +++ b/contrib/restricted/libffi/configs/i386-microsoft-windows/fficonfig.h @@ -1,224 +1,224 @@ -/* fficonfig.h. Generated from fficonfig.h.in by configure. */ -/* fficonfig.h.in. Generated from configure.ac by autoheader. */ - -/* Define if building universal (internal helper macro) */ -/* #undef AC_APPLE_UNIVERSAL_BUILD */ - -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -/* #undef CRAY_STACKSEG_END */ - -/* Define to 1 if using `alloca.c'. */ -/* #undef C_ALLOCA */ - -/* Define to the flags needed for the .section .eh_frame directive. */ -/* #undef EH_FRAME_FLAGS */ - -/* Define this if you want extra debugging. */ -/* #undef FFI_DEBUG */ - -/* Cannot use PROT_EXEC on this target, so, we revert to - alternative means */ -/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ - -/* Define this if you want to enable pax emulated trampolines */ -/* #undef FFI_MMAP_EXEC_EMUTRAMP_PAX */ - -/* Cannot use malloc on this target, so, we revert to - alternative means */ -/* #undef FFI_MMAP_EXEC_WRIT */ - -/* Define this if you do not want support for the raw API. */ -/* #undef FFI_NO_RAW_API */ - -/* Define this if you do not want support for aggregate types. */ -/* #undef FFI_NO_STRUCTS */ - -/* Define to 1 if you have `alloca', as a function or macro. */ -#define HAVE_ALLOCA 1 - -/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). - */ -/* #undef HAVE_ALLOCA_H */ - -/* Define if your assembler supports .cfi_* directives. */ -/* #undef HAVE_AS_CFI_PSEUDO_OP */ - -/* Define if your assembler supports .register. */ -/* #undef HAVE_AS_REGISTER_PSEUDO_OP */ - -/* Define if the compiler uses zarch features. */ -/* #undef HAVE_AS_S390_ZARCH */ - -/* Define if your assembler and linker support unaligned PC relative relocs. - */ -/* #undef HAVE_AS_SPARC_UA_PCREL */ - -/* Define if your assembler supports unwind section type. */ -/* #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE */ - -/* Define if your assembler supports PC relative relocs. */ -#define HAVE_AS_X86_PCREL 1 - -/* Define to 1 if you have the <dlfcn.h> header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define if __attribute__((visibility("hidden"))) is supported. */ -/* #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE */ - -/* Define to 1 if you have the <inttypes.h> header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define if you have the long double type and it is bigger than a double */ -/* #undef HAVE_LONG_DOUBLE */ - -/* Define if you support more than one size of the long double type */ -/* #undef HAVE_LONG_DOUBLE_VARIANT */ - -/* Define to 1 if you have the `memcpy' function. */ -/* #undef HAVE_MEMCPY */ - -/* Define to 1 if you have the <memory.h> header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `mkostemp' function. */ -/* #undef HAVE_MKOSTEMP */ - -/* Define to 1 if you have the `mmap' function. */ -/* #undef HAVE_MMAP */ - -/* Define if mmap with MAP_ANON(YMOUS) works. */ -/* #undef HAVE_MMAP_ANON */ - -/* Define if mmap of /dev/zero works. */ -/* #undef HAVE_MMAP_DEV_ZERO */ - -/* Define if read-only mmap of a plain file works. */ -/* #undef HAVE_MMAP_FILE */ - -/* Define if your compiler supports pointer authentication. */ -/* #undef HAVE_PTRAUTH */ - -/* Define if .eh_frame sections should be read-only. */ -/* #undef HAVE_RO_EH_FRAME */ - -/* Define to 1 if you have the <stdint.h> header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the <stdlib.h> header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the <strings.h> header file. */ -/* #undef HAVE_STRINGS_H */ - -/* Define to 1 if you have the <string.h> header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the <sys/mman.h> header file. */ -/* #undef HAVE_SYS_MMAN_H */ - -/* Define to 1 if you have the <sys/stat.h> header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the <sys/types.h> header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the <unistd.h> header file. */ -/* #undef HAVE_UNISTD_H */ - -/* Define to 1 if GNU symbol versioning is used for libatomic. */ -/* #undef LIBFFI_GNU_SYMBOL_VERSIONING */ - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#define LT_OBJDIR ".libs/" - -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -/* #undef NO_MINUS_C_MINUS_O */ - -/* Name of package */ -#define PACKAGE "libffi" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "http://github.com/libffi/libffi/issues" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "libffi" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libffi 3.3" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "libffi" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "3.3" - -/* The size of `double', as computed by sizeof. */ -#define SIZEOF_DOUBLE 8 - -/* The size of `long double', as computed by sizeof. */ -#define SIZEOF_LONG_DOUBLE 8 - -/* The size of `size_t', as computed by sizeof. */ -#define SIZEOF_SIZE_T 4 - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at runtime. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -/* #undef STACK_DIRECTION */ - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define if symbols are underscored. */ -#define SYMBOL_UNDERSCORE 1 - -/* Define this if you are using Purify and want to suppress spurious messages. - */ -/* #undef USING_PURIFY */ - -/* Version number of package */ -#define VERSION "3.3" - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -/* # undef WORDS_BIGENDIAN */ -# endif -#endif - -/* Define to `unsigned int' if <sys/types.h> does not define. */ -/* #undef size_t */ - - -#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE -#ifdef LIBFFI_ASM -#ifdef __APPLE__ -#define FFI_HIDDEN(name) .private_extern name -#else -#define FFI_HIDDEN(name) .hidden name -#endif -#else -#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) -#endif -#else -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) -#else -#define FFI_HIDDEN -#endif -#endif - +/* fficonfig.h. Generated from fficonfig.h.in by configure. */ +/* fficonfig.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define to 1 if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to the flags needed for the .section .eh_frame directive. */ +/* #undef EH_FRAME_FLAGS */ + +/* Define this if you want extra debugging. */ +/* #undef FFI_DEBUG */ + +/* Cannot use PROT_EXEC on this target, so, we revert to + alternative means */ +/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ + +/* Define this if you want to enable pax emulated trampolines */ +/* #undef FFI_MMAP_EXEC_EMUTRAMP_PAX */ + +/* Cannot use malloc on this target, so, we revert to + alternative means */ +/* #undef FFI_MMAP_EXEC_WRIT */ + +/* Define this if you do not want support for the raw API. */ +/* #undef FFI_NO_RAW_API */ + +/* Define this if you do not want support for aggregate types. */ +/* #undef FFI_NO_STRUCTS */ + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). + */ +/* #undef HAVE_ALLOCA_H */ + +/* Define if your assembler supports .cfi_* directives. */ +/* #undef HAVE_AS_CFI_PSEUDO_OP */ + +/* Define if your assembler supports .register. */ +/* #undef HAVE_AS_REGISTER_PSEUDO_OP */ + +/* Define if the compiler uses zarch features. */ +/* #undef HAVE_AS_S390_ZARCH */ + +/* Define if your assembler and linker support unaligned PC relative relocs. + */ +/* #undef HAVE_AS_SPARC_UA_PCREL */ + +/* Define if your assembler supports unwind section type. */ +/* #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE */ + +/* Define if your assembler supports PC relative relocs. */ +#define HAVE_AS_X86_PCREL 1 + +/* Define to 1 if you have the <dlfcn.h> header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define if __attribute__((visibility("hidden"))) is supported. */ +/* #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE */ + +/* Define to 1 if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if you have the long double type and it is bigger than a double */ +/* #undef HAVE_LONG_DOUBLE */ + +/* Define if you support more than one size of the long double type */ +/* #undef HAVE_LONG_DOUBLE_VARIANT */ + +/* Define to 1 if you have the `memcpy' function. */ +/* #undef HAVE_MEMCPY */ + +/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mkostemp' function. */ +/* #undef HAVE_MKOSTEMP */ + +/* Define to 1 if you have the `mmap' function. */ +/* #undef HAVE_MMAP */ + +/* Define if mmap with MAP_ANON(YMOUS) works. */ +/* #undef HAVE_MMAP_ANON */ + +/* Define if mmap of /dev/zero works. */ +/* #undef HAVE_MMAP_DEV_ZERO */ + +/* Define if read-only mmap of a plain file works. */ +/* #undef HAVE_MMAP_FILE */ + +/* Define if your compiler supports pointer authentication. */ +/* #undef HAVE_PTRAUTH */ + +/* Define if .eh_frame sections should be read-only. */ +/* #undef HAVE_RO_EH_FRAME */ + +/* Define to 1 if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the <strings.h> header file. */ +/* #undef HAVE_STRINGS_H */ + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the <sys/mman.h> header file. */ +/* #undef HAVE_SYS_MMAN_H */ + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +/* #undef HAVE_UNISTD_H */ + +/* Define to 1 if GNU symbol versioning is used for libatomic. */ +/* #undef LIBFFI_GNU_SYMBOL_VERSIONING */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Name of package */ +#define PACKAGE "libffi" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "http://github.com/libffi/libffi/issues" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libffi" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libffi 3.3" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libffi" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "3.3" + +/* The size of `double', as computed by sizeof. */ +#define SIZEOF_DOUBLE 8 + +/* The size of `long double', as computed by sizeof. */ +#define SIZEOF_LONG_DOUBLE 8 + +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 4 + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if symbols are underscored. */ +#define SYMBOL_UNDERSCORE 1 + +/* Define this if you are using Purify and want to suppress spurious messages. + */ +/* #undef USING_PURIFY */ + +/* Version number of package */ +#define VERSION "3.3" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +/* #undef size_t */ + + +#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE +#ifdef LIBFFI_ASM +#ifdef __APPLE__ +#define FFI_HIDDEN(name) .private_extern name +#else +#define FFI_HIDDEN(name) .hidden name +#endif +#else +#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) +#endif +#else +#ifdef LIBFFI_ASM +#define FFI_HIDDEN(name) +#else +#define FFI_HIDDEN +#endif +#endif + diff --git a/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffi.h b/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffi.h index d088112a93..cbd41acce7 100755 --- a/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffi.h +++ b/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffi.h @@ -1,523 +1,523 @@ -/* -----------------------------------------------------------------*-C-*- - libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green - - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - - 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 THE AUTHORS OR COPYRIGHT - HOLDERS 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. - - ----------------------------------------------------------------------- */ - -/* ------------------------------------------------------------------- - Most of the API is documented in doc/libffi.texi. - - The raw API is designed to bypass some of the argument packing and - unpacking on architectures for which it can be avoided. Routines - are provided to emulate the raw API if the underlying platform - doesn't allow faster implementation. - - More details on the raw API can be found in: - - http://gcc.gnu.org/ml/java/1999-q3/msg00138.html - - and - - http://gcc.gnu.org/ml/java/1999-q3/msg00174.html - -------------------------------------------------------------------- */ - -#ifndef LIBFFI_H -#define LIBFFI_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Specify which architecture libffi is configured for. */ -#ifndef X86_WIN32 -#define X86_WIN32 -#endif - -/* ---- System configuration information --------------------------------- */ - -#include <ffitarget.h> - -#ifndef LIBFFI_ASM - -#if defined(_MSC_VER) && !defined(__clang__) -#define __attribute__(X) -#endif - -#include <stddef.h> -#include <limits.h> - -/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). - But we can find it either under the correct ANSI name, or under GNU - C's internal name. */ - -#define FFI_64_BIT_MAX 9223372036854775807 - -#ifdef LONG_LONG_MAX -# define FFI_LONG_LONG_MAX LONG_LONG_MAX -#else -# ifdef LLONG_MAX -# define FFI_LONG_LONG_MAX LLONG_MAX -# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif /* _AIX52 or newer */ -# else -# ifdef __GNUC__ -# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ -# endif -# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ -# ifndef __PPC64__ -# if defined (__IBMC__) || defined (__IBMCPP__) -# define FFI_LONG_LONG_MAX LONGLONG_MAX -# endif -# endif /* __PPC64__ */ -# undef FFI_64_BIT_MAX -# define FFI_64_BIT_MAX 9223372036854775807LL -# endif -# endif -#endif - -/* The closure code assumes that this works on pointers, i.e. a size_t - can hold a pointer. */ - -typedef struct _ffi_type -{ - size_t size; - unsigned short alignment; - unsigned short type; - struct _ffi_type **elements; -} ffi_type; - -/* Need minimal decorations for DLLs to work on Windows. GCC has - autoimport and autoexport. Always mark externally visible symbols - as dllimport for MSVC clients, even if it means an extra indirection - when using the static version of the library. - Besides, as a workaround, they can define FFI_BUILDING if they - *know* they are going to link with the static library. */ -#if defined _MSC_VER -# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */ -# define FFI_API __declspec(dllexport) -# elif !defined FFI_BUILDING /* Importing libffi.DLL */ -# define FFI_API __declspec(dllimport) -# else /* Building/linking static library */ -# define FFI_API -# endif -#else -# define FFI_API -#endif - -/* The externally visible type declarations also need the MSVC DLL - decorations, or they will not be exported from the object file. */ -#if defined LIBFFI_HIDE_BASIC_TYPES -# define FFI_EXTERN FFI_API -#else -# define FFI_EXTERN extern FFI_API -#endif - -#ifndef LIBFFI_HIDE_BASIC_TYPES -#if SCHAR_MAX == 127 -# define ffi_type_uchar ffi_type_uint8 -# define ffi_type_schar ffi_type_sint8 -#else - #error "char size not supported" -#endif - -#if SHRT_MAX == 32767 -# define ffi_type_ushort ffi_type_uint16 -# define ffi_type_sshort ffi_type_sint16 -#elif SHRT_MAX == 2147483647 -# define ffi_type_ushort ffi_type_uint32 -# define ffi_type_sshort ffi_type_sint32 -#else - #error "short size not supported" -#endif - -#if INT_MAX == 32767 -# define ffi_type_uint ffi_type_uint16 -# define ffi_type_sint ffi_type_sint16 -#elif INT_MAX == 2147483647 -# define ffi_type_uint ffi_type_uint32 -# define ffi_type_sint ffi_type_sint32 -#elif INT_MAX == 9223372036854775807 -# define ffi_type_uint ffi_type_uint64 -# define ffi_type_sint ffi_type_sint64 -#else - #error "int size not supported" -#endif - -#if LONG_MAX == 2147483647 -# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX - #error "no 64-bit data type supported" -# endif -#elif LONG_MAX != FFI_64_BIT_MAX - #error "long size not supported" -#endif - -#if LONG_MAX == 2147483647 -# define ffi_type_ulong ffi_type_uint32 -# define ffi_type_slong ffi_type_sint32 -#elif LONG_MAX == FFI_64_BIT_MAX -# define ffi_type_ulong ffi_type_uint64 -# define ffi_type_slong ffi_type_sint64 -#else - #error "long size not supported" -#endif - -/* These are defined in types.c. */ -FFI_EXTERN ffi_type ffi_type_void; -FFI_EXTERN ffi_type ffi_type_uint8; -FFI_EXTERN ffi_type ffi_type_sint8; -FFI_EXTERN ffi_type ffi_type_uint16; -FFI_EXTERN ffi_type ffi_type_sint16; -FFI_EXTERN ffi_type ffi_type_uint32; -FFI_EXTERN ffi_type ffi_type_sint32; -FFI_EXTERN ffi_type ffi_type_uint64; -FFI_EXTERN ffi_type ffi_type_sint64; -FFI_EXTERN ffi_type ffi_type_float; -FFI_EXTERN ffi_type ffi_type_double; -FFI_EXTERN ffi_type ffi_type_pointer; - -#if 0 -FFI_EXTERN ffi_type ffi_type_longdouble; -#else -#define ffi_type_longdouble ffi_type_double -#endif - -#ifdef FFI_TARGET_HAS_COMPLEX_TYPE -FFI_EXTERN ffi_type ffi_type_complex_float; -FFI_EXTERN ffi_type ffi_type_complex_double; -#if 0 -FFI_EXTERN ffi_type ffi_type_complex_longdouble; -#else -#define ffi_type_complex_longdouble ffi_type_complex_double -#endif -#endif -#endif /* LIBFFI_HIDE_BASIC_TYPES */ - -typedef enum { - FFI_OK = 0, - FFI_BAD_TYPEDEF, - FFI_BAD_ABI -} ffi_status; - -typedef struct { - ffi_abi abi; - unsigned nargs; - ffi_type **arg_types; - ffi_type *rtype; - unsigned bytes; - unsigned flags; -#ifdef FFI_EXTRA_CIF_FIELDS - FFI_EXTRA_CIF_FIELDS; -#endif -} ffi_cif; - -/* ---- Definitions for the raw API -------------------------------------- */ - -#ifndef FFI_SIZEOF_ARG -# if LONG_MAX == 2147483647 -# define FFI_SIZEOF_ARG 4 -# elif LONG_MAX == FFI_64_BIT_MAX -# define FFI_SIZEOF_ARG 8 -# endif -#endif - -#ifndef FFI_SIZEOF_JAVA_RAW -# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG -#endif - -typedef union { - ffi_sarg sint; - ffi_arg uint; - float flt; - char data[FFI_SIZEOF_ARG]; - void* ptr; -} ffi_raw; - -#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 -/* This is a special case for mips64/n32 ABI (and perhaps others) where - sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ -typedef union { - signed int sint; - unsigned int uint; - float flt; - char data[FFI_SIZEOF_JAVA_RAW]; - void* ptr; -} ffi_java_raw; -#else -typedef ffi_raw ffi_java_raw; -#endif - - -FFI_API -void ffi_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_raw *avalue); - -FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); -FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); -FFI_API size_t ffi_raw_size (ffi_cif *cif); - -/* This is analogous to the raw API, except it uses Java parameter - packing, even on 64-bit machines. I.e. on 64-bit machines longs - and doubles are followed by an empty 64-bit word. */ - -#if !FFI_NATIVE_RAW_API +/* -----------------------------------------------------------------*-C-*- + libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green + - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + + 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 THE AUTHORS OR COPYRIGHT + HOLDERS 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. + + ----------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------- + Most of the API is documented in doc/libffi.texi. + + The raw API is designed to bypass some of the argument packing and + unpacking on architectures for which it can be avoided. Routines + are provided to emulate the raw API if the underlying platform + doesn't allow faster implementation. + + More details on the raw API can be found in: + + http://gcc.gnu.org/ml/java/1999-q3/msg00138.html + + and + + http://gcc.gnu.org/ml/java/1999-q3/msg00174.html + -------------------------------------------------------------------- */ + +#ifndef LIBFFI_H +#define LIBFFI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Specify which architecture libffi is configured for. */ +#ifndef X86_WIN32 +#define X86_WIN32 +#endif + +/* ---- System configuration information --------------------------------- */ + +#include <ffitarget.h> + +#ifndef LIBFFI_ASM + +#if defined(_MSC_VER) && !defined(__clang__) +#define __attribute__(X) +#endif + +#include <stddef.h> +#include <limits.h> + +/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). + But we can find it either under the correct ANSI name, or under GNU + C's internal name. */ + +#define FFI_64_BIT_MAX 9223372036854775807 + +#ifdef LONG_LONG_MAX +# define FFI_LONG_LONG_MAX LONG_LONG_MAX +#else +# ifdef LLONG_MAX +# define FFI_LONG_LONG_MAX LLONG_MAX +# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif /* _AIX52 or newer */ +# else +# ifdef __GNUC__ +# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ +# endif +# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ +# ifndef __PPC64__ +# if defined (__IBMC__) || defined (__IBMCPP__) +# define FFI_LONG_LONG_MAX LONGLONG_MAX +# endif +# endif /* __PPC64__ */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif +# endif +#endif + +/* The closure code assumes that this works on pointers, i.e. a size_t + can hold a pointer. */ + +typedef struct _ffi_type +{ + size_t size; + unsigned short alignment; + unsigned short type; + struct _ffi_type **elements; +} ffi_type; + +/* Need minimal decorations for DLLs to work on Windows. GCC has + autoimport and autoexport. Always mark externally visible symbols + as dllimport for MSVC clients, even if it means an extra indirection + when using the static version of the library. + Besides, as a workaround, they can define FFI_BUILDING if they + *know* they are going to link with the static library. */ +#if defined _MSC_VER +# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */ +# define FFI_API __declspec(dllexport) +# elif !defined FFI_BUILDING /* Importing libffi.DLL */ +# define FFI_API __declspec(dllimport) +# else /* Building/linking static library */ +# define FFI_API +# endif +#else +# define FFI_API +#endif + +/* The externally visible type declarations also need the MSVC DLL + decorations, or they will not be exported from the object file. */ +#if defined LIBFFI_HIDE_BASIC_TYPES +# define FFI_EXTERN FFI_API +#else +# define FFI_EXTERN extern FFI_API +#endif + +#ifndef LIBFFI_HIDE_BASIC_TYPES +#if SCHAR_MAX == 127 +# define ffi_type_uchar ffi_type_uint8 +# define ffi_type_schar ffi_type_sint8 +#else + #error "char size not supported" +#endif + +#if SHRT_MAX == 32767 +# define ffi_type_ushort ffi_type_uint16 +# define ffi_type_sshort ffi_type_sint16 +#elif SHRT_MAX == 2147483647 +# define ffi_type_ushort ffi_type_uint32 +# define ffi_type_sshort ffi_type_sint32 +#else + #error "short size not supported" +#endif + +#if INT_MAX == 32767 +# define ffi_type_uint ffi_type_uint16 +# define ffi_type_sint ffi_type_sint16 +#elif INT_MAX == 2147483647 +# define ffi_type_uint ffi_type_uint32 +# define ffi_type_sint ffi_type_sint32 +#elif INT_MAX == 9223372036854775807 +# define ffi_type_uint ffi_type_uint64 +# define ffi_type_sint ffi_type_sint64 +#else + #error "int size not supported" +#endif + +#if LONG_MAX == 2147483647 +# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX + #error "no 64-bit data type supported" +# endif +#elif LONG_MAX != FFI_64_BIT_MAX + #error "long size not supported" +#endif + +#if LONG_MAX == 2147483647 +# define ffi_type_ulong ffi_type_uint32 +# define ffi_type_slong ffi_type_sint32 +#elif LONG_MAX == FFI_64_BIT_MAX +# define ffi_type_ulong ffi_type_uint64 +# define ffi_type_slong ffi_type_sint64 +#else + #error "long size not supported" +#endif + +/* These are defined in types.c. */ +FFI_EXTERN ffi_type ffi_type_void; +FFI_EXTERN ffi_type ffi_type_uint8; +FFI_EXTERN ffi_type ffi_type_sint8; +FFI_EXTERN ffi_type ffi_type_uint16; +FFI_EXTERN ffi_type ffi_type_sint16; +FFI_EXTERN ffi_type ffi_type_uint32; +FFI_EXTERN ffi_type ffi_type_sint32; +FFI_EXTERN ffi_type ffi_type_uint64; +FFI_EXTERN ffi_type ffi_type_sint64; +FFI_EXTERN ffi_type ffi_type_float; +FFI_EXTERN ffi_type ffi_type_double; +FFI_EXTERN ffi_type ffi_type_pointer; + +#if 0 +FFI_EXTERN ffi_type ffi_type_longdouble; +#else +#define ffi_type_longdouble ffi_type_double +#endif + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +FFI_EXTERN ffi_type ffi_type_complex_float; +FFI_EXTERN ffi_type ffi_type_complex_double; +#if 0 +FFI_EXTERN ffi_type ffi_type_complex_longdouble; +#else +#define ffi_type_complex_longdouble ffi_type_complex_double +#endif +#endif +#endif /* LIBFFI_HIDE_BASIC_TYPES */ + +typedef enum { + FFI_OK = 0, + FFI_BAD_TYPEDEF, + FFI_BAD_ABI +} ffi_status; + +typedef struct { + ffi_abi abi; + unsigned nargs; + ffi_type **arg_types; + ffi_type *rtype; + unsigned bytes; + unsigned flags; +#ifdef FFI_EXTRA_CIF_FIELDS + FFI_EXTRA_CIF_FIELDS; +#endif +} ffi_cif; + +/* ---- Definitions for the raw API -------------------------------------- */ + +#ifndef FFI_SIZEOF_ARG +# if LONG_MAX == 2147483647 +# define FFI_SIZEOF_ARG 4 +# elif LONG_MAX == FFI_64_BIT_MAX +# define FFI_SIZEOF_ARG 8 +# endif +#endif + +#ifndef FFI_SIZEOF_JAVA_RAW +# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG +#endif + +typedef union { + ffi_sarg sint; + ffi_arg uint; + float flt; + char data[FFI_SIZEOF_ARG]; + void* ptr; +} ffi_raw; + +#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 +/* This is a special case for mips64/n32 ABI (and perhaps others) where + sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ +typedef union { + signed int sint; + unsigned int uint; + float flt; + char data[FFI_SIZEOF_JAVA_RAW]; + void* ptr; +} ffi_java_raw; +#else +typedef ffi_raw ffi_java_raw; +#endif + + FFI_API -void ffi_java_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_java_raw *avalue) __attribute__((deprecated)); -#endif - +void ffi_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_raw *avalue); + +FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); +FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); +FFI_API size_t ffi_raw_size (ffi_cif *cif); + +/* This is analogous to the raw API, except it uses Java parameter + packing, even on 64-bit machines. I.e. on 64-bit machines longs + and doubles are followed by an empty 64-bit word. */ + +#if !FFI_NATIVE_RAW_API +FFI_API +void ffi_java_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_java_raw *avalue) __attribute__((deprecated)); +#endif + +FFI_API +void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated)); +FFI_API +void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated)); +FFI_API +size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated)); + +/* ---- Definitions for closures ----------------------------------------- */ + +#if FFI_CLOSURES + +#ifdef _MSC_VER +__declspec(align(8)) +#endif +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); + void *user_data; +} ffi_closure +#ifdef __GNUC__ + __attribute__((aligned (8))) +#endif + ; + +#ifndef __GNUC__ +# ifdef __sgi +# pragma pack 0 +# endif +#endif + +FFI_API void *ffi_closure_alloc (size_t size, void **code); +FFI_API void ffi_closure_free (void *); + +#if defined(PA_LINUX) || defined(PA_HPUX) +#define FFI_CLOSURE_PTR(X) ((void *)((unsigned int)(X) | 2)) +#define FFI_RESTORE_PTR(X) ((void *)((unsigned int)(X) & ~3)) +#else +#define FFI_CLOSURE_PTR(X) (X) +#define FFI_RESTORE_PTR(X) (X) +#endif + +FFI_API ffi_status +ffi_prep_closure (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) + __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) +#elif defined(__GNUC__) && __GNUC__ >= 3 + __attribute__((deprecated)) +#endif + ; + +FFI_API ffi_status +ffi_prep_closure_loc (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void*codeloc); + +#ifdef __sgi +# pragma pack 8 +#endif +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the transaltion, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_raw*,void*); + void *user_data; + +} ffi_raw_closure; + +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); + void *user_data; + +} ffi_java_raw_closure; + +FFI_API ffi_status +ffi_prep_raw_closure (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data); + +FFI_API ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc); + +#if !FFI_NATIVE_RAW_API +FFI_API ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data) __attribute__((deprecated)); + +FFI_API ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc) __attribute__((deprecated)); +#endif + +#endif /* FFI_CLOSURES */ + +#if FFI_GO_CLOSURES + +typedef struct { + void *tramp; + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); +} ffi_go_closure; + +FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*)); + +FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure); + +#endif /* FFI_GO_CLOSURES */ + +/* ---- Public interface definition -------------------------------------- */ + FFI_API -void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated)); -FFI_API -void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated)); -FFI_API -size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated)); - -/* ---- Definitions for closures ----------------------------------------- */ - -#if FFI_CLOSURES - -#ifdef _MSC_VER -__declspec(align(8)) -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); - void *user_data; -} ffi_closure -#ifdef __GNUC__ - __attribute__((aligned (8))) -#endif - ; - -#ifndef __GNUC__ -# ifdef __sgi -# pragma pack 0 -# endif -#endif - -FFI_API void *ffi_closure_alloc (size_t size, void **code); -FFI_API void ffi_closure_free (void *); - -#if defined(PA_LINUX) || defined(PA_HPUX) -#define FFI_CLOSURE_PTR(X) ((void *)((unsigned int)(X) | 2)) -#define FFI_RESTORE_PTR(X) ((void *)((unsigned int)(X) & ~3)) -#else -#define FFI_CLOSURE_PTR(X) (X) -#define FFI_RESTORE_PTR(X) (X) -#endif - -FFI_API ffi_status -ffi_prep_closure (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data) -#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) - __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) -#elif defined(__GNUC__) && __GNUC__ >= 3 - __attribute__((deprecated)) -#endif - ; - -FFI_API ffi_status -ffi_prep_closure_loc (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void*codeloc); - -#ifdef __sgi -# pragma pack 8 -#endif -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_raw*,void*); - void *user_data; - -} ffi_raw_closure; - -typedef struct { -#if 0 - void *trampoline_table; - void *trampoline_table_entry; -#else - char tramp[FFI_TRAMPOLINE_SIZE]; -#endif - - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* If this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the translation, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); - void *user_data; - -} ffi_java_raw_closure; - -FFI_API ffi_status -ffi_prep_raw_closure (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data); - -FFI_API ffi_status -ffi_prep_raw_closure_loc (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data, - void *codeloc); - -#if !FFI_NATIVE_RAW_API -FFI_API ffi_status -ffi_prep_java_raw_closure (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data) __attribute__((deprecated)); - -FFI_API ffi_status -ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data, - void *codeloc) __attribute__((deprecated)); -#endif - -#endif /* FFI_CLOSURES */ - -#if FFI_GO_CLOSURES - -typedef struct { - void *tramp; - ffi_cif *cif; - void (*fun)(ffi_cif*,void*,void**,void*); -} ffi_go_closure; - -FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*)); - -FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure); - -#endif /* FFI_GO_CLOSURES */ - -/* ---- Public interface definition -------------------------------------- */ - -FFI_API -ffi_status ffi_prep_cif(ffi_cif *cif, - ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_API -ffi_status ffi_prep_cif_var(ffi_cif *cif, - ffi_abi abi, - unsigned int nfixedargs, - unsigned int ntotalargs, - ffi_type *rtype, - ffi_type **atypes); - -FFI_API -void ffi_call(ffi_cif *cif, - void (*fn)(void), - void *rvalue, - void **avalue); - -FFI_API -ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, - size_t *offsets); - -/* Useful for eliminating compiler warnings. */ -#define FFI_FN(f) ((void (*)(void))f) - -/* ---- Definitions shared with assembly code ---------------------------- */ - -#endif - -/* If these change, update src/mips/ffitarget.h. */ -#define FFI_TYPE_VOID 0 -#define FFI_TYPE_INT 1 -#define FFI_TYPE_FLOAT 2 -#define FFI_TYPE_DOUBLE 3 -#if 0 -#define FFI_TYPE_LONGDOUBLE 4 -#else -#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE -#endif -#define FFI_TYPE_UINT8 5 -#define FFI_TYPE_SINT8 6 -#define FFI_TYPE_UINT16 7 -#define FFI_TYPE_SINT16 8 -#define FFI_TYPE_UINT32 9 -#define FFI_TYPE_SINT32 10 -#define FFI_TYPE_UINT64 11 -#define FFI_TYPE_SINT64 12 -#define FFI_TYPE_STRUCT 13 -#define FFI_TYPE_POINTER 14 -#define FFI_TYPE_COMPLEX 15 - -/* This should always refer to the last type code (for sanity checks). */ -#define FFI_TYPE_LAST FFI_TYPE_COMPLEX - -#ifdef __cplusplus -} -#endif - -#endif +ffi_status ffi_prep_cif(ffi_cif *cif, + ffi_abi abi, + unsigned int nargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +ffi_status ffi_prep_cif_var(ffi_cif *cif, + ffi_abi abi, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue); + +FFI_API +ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, + size_t *offsets); + +/* Useful for eliminating compiler warnings. */ +#define FFI_FN(f) ((void (*)(void))f) + +/* ---- Definitions shared with assembly code ---------------------------- */ + +#endif + +/* If these change, update src/mips/ffitarget.h. */ +#define FFI_TYPE_VOID 0 +#define FFI_TYPE_INT 1 +#define FFI_TYPE_FLOAT 2 +#define FFI_TYPE_DOUBLE 3 +#if 0 +#define FFI_TYPE_LONGDOUBLE 4 +#else +#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE +#endif +#define FFI_TYPE_UINT8 5 +#define FFI_TYPE_SINT8 6 +#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_SINT16 8 +#define FFI_TYPE_UINT32 9 +#define FFI_TYPE_SINT32 10 +#define FFI_TYPE_UINT64 11 +#define FFI_TYPE_SINT64 12 +#define FFI_TYPE_STRUCT 13 +#define FFI_TYPE_POINTER 14 +#define FFI_TYPE_COMPLEX 15 + +/* This should always refer to the last type code (for sanity checks). */ +#define FFI_TYPE_LAST FFI_TYPE_COMPLEX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffitarget.h b/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffitarget.h index 563afd1375..a34f3e5b70 100755 --- a/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffitarget.h +++ b/contrib/restricted/libffi/configs/i386-microsoft-windows/include/ffitarget.h @@ -1,160 +1,160 @@ -/* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012, 2014, 2018 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. - - 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 THE AUTHORS OR COPYRIGHT - HOLDERS 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. - - ----------------------------------------------------------------------- */ - -#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. */ -#define X86_ANY - -#if defined (X86_64) && defined (__i386__) -#undef X86_64 -#define X86 -#endif - -#ifdef X86_WIN64 -#define FFI_SIZEOF_ARG 8 -#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ -#endif - -#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION -#ifndef _MSC_VER -#define FFI_TARGET_HAS_COMPLEX_TYPE -#endif - -/* ---- Generic type definitions ----------------------------------------- */ - -#ifndef LIBFFI_ASM -#ifdef X86_WIN64 -#ifdef _MSC_VER -typedef unsigned __int64 ffi_arg; -typedef __int64 ffi_sarg; -#else -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 { -#if defined(X86_WIN64) - FFI_FIRST_ABI = 0, - FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */ - FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */ - FFI_LAST_ABI, -#ifdef __GNUC__ - FFI_DEFAULT_ABI = FFI_GNUW64 -#else - FFI_DEFAULT_ABI = FFI_WIN64 -#endif - -#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) - FFI_FIRST_ABI = 1, - FFI_UNIX64, - FFI_WIN64, - FFI_EFI64 = FFI_WIN64, - FFI_GNUW64, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_UNIX64 - -#elif defined(X86_WIN32) - FFI_FIRST_ABI = 0, - FFI_SYSV = 1, - FFI_STDCALL = 2, - FFI_THISCALL = 3, - FFI_FASTCALL = 4, - FFI_MS_CDECL = 5, - FFI_PASCAL = 6, - FFI_REGISTER = 7, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_MS_CDECL -#else - FFI_FIRST_ABI = 0, - FFI_SYSV = 1, - FFI_THISCALL = 3, - FFI_FASTCALL = 4, - FFI_STDCALL = 5, - FFI_PASCAL = 6, - FFI_REGISTER = 7, - FFI_MS_CDECL = 8, - FFI_LAST_ABI, - FFI_DEFAULT_ABI = FFI_SYSV -#endif -} ffi_abi; -#endif - -/* ---- Definitions for closures ----------------------------------------- */ - -#define FFI_CLOSURES 1 -#define FFI_GO_CLOSURES 1 - -#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_WIN64) \ - || (defined (__x86_64__) && defined (X86_DARWIN)) -/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP - + 8 bytes of pointer. */ -# define FFI_TRAMPOLINE_SIZE 32 -# define FFI_NATIVE_RAW_API 0 -#else -/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused - bytes. */ -# define FFI_TRAMPOLINE_SIZE 16 -# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ -#endif - -#if !defined(GENERATE_LIBFFI_MAP) && defined(__ASSEMBLER__) \ - && defined(__CET__) -# include <cet.h> -# define _CET_NOTRACK notrack -#else -# define _CET_ENDBR -# define _CET_NOTRACK -#endif - -#endif - +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012, 2014, 2018 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. + + 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 THE AUTHORS OR COPYRIGHT + HOLDERS 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. + + ----------------------------------------------------------------------- */ + +#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. */ +#define X86_ANY + +#if defined (X86_64) && defined (__i386__) +#undef X86_64 +#define X86 +#endif + +#ifdef X86_WIN64 +#define FFI_SIZEOF_ARG 8 +#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#ifndef _MSC_VER +#define FFI_TARGET_HAS_COMPLEX_TYPE +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +#ifdef X86_WIN64 +#ifdef _MSC_VER +typedef unsigned __int64 ffi_arg; +typedef __int64 ffi_sarg; +#else +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 { +#if defined(X86_WIN64) + FFI_FIRST_ABI = 0, + FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */ + FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */ + FFI_LAST_ABI, +#ifdef __GNUC__ + FFI_DEFAULT_ABI = FFI_GNUW64 +#else + FFI_DEFAULT_ABI = FFI_WIN64 +#endif + +#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) + FFI_FIRST_ABI = 1, + FFI_UNIX64, + FFI_WIN64, + FFI_EFI64 = FFI_WIN64, + FFI_GNUW64, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX64 + +#elif defined(X86_WIN32) + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_STDCALL = 2, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_MS_CDECL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_MS_CDECL +#else + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_STDCALL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_MS_CDECL = 8, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +#endif +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 + +#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_WIN64) \ + || (defined (__x86_64__) && defined (X86_DARWIN)) +/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP + + 8 bytes of pointer. */ +# define FFI_TRAMPOLINE_SIZE 32 +# define FFI_NATIVE_RAW_API 0 +#else +/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused + bytes. */ +# define FFI_TRAMPOLINE_SIZE 16 +# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ +#endif + +#if !defined(GENERATE_LIBFFI_MAP) && defined(__ASSEMBLER__) \ + && defined(__CET__) +# include <cet.h> +# define _CET_NOTRACK notrack +#else +# define _CET_ENDBR +# define _CET_NOTRACK +#endif + +#endif + diff --git a/contrib/restricted/libffi/configs/i386-microsoft-windows/sysv_intel.masm b/contrib/restricted/libffi/configs/i386-microsoft-windows/sysv_intel.masm index e04d4fb48a..47022c1324 100644 --- a/contrib/restricted/libffi/configs/i386-microsoft-windows/sysv_intel.masm +++ b/contrib/restricted/libffi/configs/i386-microsoft-windows/sysv_intel.masm @@ -1,1961 +1,1961 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .686P - .MODEL FLAT - -EXTRN @ffi_closure_inner@8:PROC -_TEXT SEGMENT - - - - - - - - - - - - -ALIGN 16 -PUBLIC @ffi_call_i386@8 -@ffi_call_i386@8 PROC -LUW0: - - - - - - mov eax, [esp] - mov [ecx], ebp - mov [ecx+4], eax - - - - - - - - - mov ebp, ecx -LUW1: - - - - mov esp, edx - mov eax, [20+0*4+ebp] - mov edx, [20+1*4+ebp] - mov ecx, [20+2*4+ebp] - - call dword ptr [ebp+8] - - mov ecx, [12+ebp] - mov [ebp+8], ebx -LUW2: - - - and ecx, 15 - lea ebx, [Lstore_table + ecx * 8] - mov ecx, [ebp+16] - jmp ebx - - ALIGN 8 -Lstore_table: -ALIGN 8; ORG Lstore_table + 0 * 8 - fstp DWORD PTR [ecx] - jmp Le1 -ALIGN 8; ORG Lstore_table + 1 * 8 - fstp QWORD PTR [ecx] - jmp Le1 -ALIGN 8; ORG Lstore_table + 2 * 8 - fstp QWORD PTR [ecx] - jmp Le1 -ALIGN 8; ORG Lstore_table + 3 * 8 - movsx eax, al - mov [ecx], eax - jmp Le1 -ALIGN 8; ORG Lstore_table + 4 * 8 - movsx eax, ax - mov [ecx], eax - jmp Le1 -ALIGN 8; ORG Lstore_table + 5 * 8 - movzx eax, al - mov [ecx], eax - jmp Le1 -ALIGN 8; ORG Lstore_table + 6 * 8 - movzx eax, ax - mov [ecx], eax - jmp Le1 -ALIGN 8; ORG Lstore_table + 7 * 8 - mov [ecx+4], edx - -ALIGN 8; ORG Lstore_table + X86_RET_int 32 * 8 - mov [ecx], eax - -ALIGN 8; ORG Lstore_table + 9 * 8 -Le1: - mov ebx, [ebp+8] - mov esp, ebp - pop ebp -LUW3: - - - - - ret -LUW4: - - -ALIGN 8; ORG Lstore_table + 10 * 8 - jmp Le1 -ALIGN 8; ORG Lstore_table + 11 * 8 - jmp Le1 -ALIGN 8; ORG Lstore_table + 12 * 8 - mov [ecx], al - jmp Le1 -ALIGN 8; ORG Lstore_table + 13 * 8 - mov [ecx], ax - jmp Le1 - - -ALIGN 8; ORG Lstore_table + 14 * 8 - int 3 -ALIGN 8; ORG Lstore_table + 15 * 8 - int 3 - -LUW5: - -@ffi_call_i386@8 ENDP - - - - - - - - - - - - - - - - - - - - - - -FFI_CLOSURE_SAVE_REGS MACRO - mov [esp + 0+16+0*4], eax - mov [esp + 0+16+1*4], edx - mov [esp + 0+16+2*4], ecx -ENDM - -FFI_CLOSURE_COPY_TRAMP_DATA MACRO - mov edx, [eax+12] - mov ecx, [eax+12+4] - mov eax, [eax+12+8]; - mov [esp+0+28], edx - mov [esp+0+32], ecx - mov [esp+0+36], eax -ENDM - - -FFI_CLOSURE_PREP_CALL MACRO - mov ecx, esp - lea edx, [esp+(40 + 4)+4] -ENDM - - - - - - - - - -FFI_CLOSURE_CALL_INNER MACRO UWN - call @ffi_closure_inner@8 -ENDM - -FFI_CLOSURE_MASK_AND_JUMP MACRO LABEL - and eax, 15 - lea edx, [LABEL+eax*8] - mov eax, [esp+0] - jmp edx -ENDM - -ALIGN 16 -PUBLIC ffi_go_closure_EAX -ffi_go_closure_EAX PROC C -LUW6: - - sub esp, (40 + 4) -LUW7: - - FFI_CLOSURE_SAVE_REGS - mov edx, [eax+4] - mov ecx, [eax +8] - mov [esp+0+28], edx - mov [esp+0+32], ecx - mov [esp+0+36], eax - jmp Ldo_closure_i386 -LUW8: - -ffi_go_closure_EAX ENDP - -ALIGN 16 -PUBLIC ffi_go_closure_ECX -ffi_go_closure_ECX PROC C -LUW9: - - sub esp, (40 + 4) -LUW10: - - FFI_CLOSURE_SAVE_REGS - mov edx, [ecx+4] - mov eax, [ecx+8] - mov [esp+0+28], edx - mov [esp+0+32], eax - mov [esp+0+36], ecx - jmp Ldo_closure_i386 -LUW11: - -ffi_go_closure_ECX ENDP - - - - -ALIGN 16 -PUBLIC ffi_closure_i386 -ffi_closure_i386 PROC C -LUW12: - - sub esp, (40 + 4) -LUW13: - - - FFI_CLOSURE_SAVE_REGS - FFI_CLOSURE_COPY_TRAMP_DATA - - -Ldo_closure_i386:: - - FFI_CLOSURE_PREP_CALL - FFI_CLOSURE_CALL_INNER(14) - FFI_CLOSURE_MASK_AND_JUMP Lload_table2 - - ALIGN 8 -Lload_table2: -ALIGN 8; ORG Lload_table2 + 0 * 8 - fld dword ptr [esp+0] - jmp Le2 -ALIGN 8; ORG Lload_table2 + 1 * 8 - fld qword ptr [esp+0] - jmp Le2 -ALIGN 8; ORG Lload_table2 + 2 * 8 - fld qword ptr [esp+0] - jmp Le2 -ALIGN 8; ORG Lload_table2 + 3 * 8 - movsx eax, al - jmp Le2 -ALIGN 8; ORG Lload_table2 + 4 * 8 - movsx eax, ax - jmp Le2 -ALIGN 8; ORG Lload_table2 + 5 * 8 - movzx eax, al - jmp Le2 -ALIGN 8; ORG Lload_table2 + 6 * 8 - movzx eax, ax - jmp Le2 -ALIGN 8; ORG Lload_table2 + 7 * 8 - mov edx, [esp+0+4] - jmp Le2 -ALIGN 8; ORG Lload_table2 + 8 * 8 - nop - -ALIGN 8; ORG Lload_table2 + 9 * 8 -Le2: - add esp, (40 + 4) -LUW16: - - ret -LUW17: - -ALIGN 8; ORG Lload_table2 + 10 * 8 - add esp, (40 + 4) -LUW18: - - ret 4 -LUW19: - -ALIGN 8; ORG Lload_table2 + 11 * 8 - jmp Le2 -ALIGN 8; ORG Lload_table2 + 12 * 8 - movzx eax, al - jmp Le2 -ALIGN 8; ORG Lload_table2 + 13 * 8 - movzx eax, ax - jmp Le2 - - -ALIGN 8; ORG Lload_table2 + 14 * 8 - int 3 -ALIGN 8; ORG Lload_table2 + 15 * 8 - int 3 - -LUW20: - -ffi_closure_i386 ENDP - -ALIGN 16 -PUBLIC ffi_go_closure_STDCALL -ffi_go_closure_STDCALL PROC C -LUW21: - - sub esp, (40 + 4) -LUW22: - - FFI_CLOSURE_SAVE_REGS - mov edx, [ecx+4] - mov eax, [ecx+8] - mov [esp+0+28], edx - mov [esp+0+32], eax - mov [esp+0+36], ecx - jmp Ldo_closure_STDCALL -LUW23: - -ffi_go_closure_STDCALL ENDP - - - - -ALIGN 16 -PUBLIC ffi_closure_REGISTER -ffi_closure_REGISTER PROC C -LUW24: - - - - sub esp, (40 + 4)-4 -LUW25: - - FFI_CLOSURE_SAVE_REGS - mov ecx, [esp+(40 + 4)-4] - mov eax, [esp+(40 + 4)] - mov [esp+(40 + 4)], ecx - jmp Ldo_closure_REGISTER -LUW26: - -ffi_closure_REGISTER ENDP - - - - - -ALIGN 16 -PUBLIC ffi_closure_STDCALL -ffi_closure_STDCALL PROC C -LUW27: - - sub esp, (40 + 4) -LUW28: - - - FFI_CLOSURE_SAVE_REGS - - -Ldo_closure_REGISTER:: - - FFI_CLOSURE_COPY_TRAMP_DATA - - -Ldo_closure_STDCALL:: - - FFI_CLOSURE_PREP_CALL - FFI_CLOSURE_CALL_INNER(29) - - mov ecx, eax - shr ecx, 4 - lea ecx, [esp+(40 + 4)+ecx] - mov edx, [esp+(40 + 4)] - mov [ecx], edx - - - - - - - - FFI_CLOSURE_MASK_AND_JUMP Lload_table3 - - ALIGN 8 -Lload_table3: -ALIGN 8; ORG Lload_table3 + 0 * 8 - fld DWORD PTR [esp+0] - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 1 * 8 - fld QWORD PTR [esp+0] - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 2 * 8 - fld QWORD PTR [esp+0] - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 3 * 8 - movsx eax, al - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 4 * 8 - movsx eax, ax - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 5 * 8 - movzx eax, al - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 6 * 8 - movzx eax, ax - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 7 * 8 - mov edx, [esp+0+4] - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + X86_RET_int 32 * 8 - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 9 * 8 - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 10 * 8 - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 11 * 8 - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 12 * 8 - movzx eax, al - mov esp, ecx - ret -ALIGN 8; ORG Lload_table3 + 13 * 8 - movzx eax, ax - mov esp, ecx - ret - - -ALIGN 8; ORG Lload_table3 + 14 * 8 - int 3 -ALIGN 8; ORG Lload_table3 + 15 * 8 - int 3 - -LUW31: - -ffi_closure_STDCALL ENDP - - - - - -ALIGN 16 -PUBLIC ffi_closure_raw_SYSV -ffi_closure_raw_SYSV PROC C -LUW32: - - sub esp, (16+16+12) -LUW33: - - mov [esp+(16+16+12)-4], ebx -LUW34: - - - mov edx, [eax+12+8] - mov [esp+12], edx - lea edx, [esp+(16+16+12)+4] - mov [esp+8], edx - lea edx, [esp+16] - mov [esp+4], edx - mov ebx, [eax+12] - mov [esp], ebx - call DWORD PTR [eax+12+4] - - mov eax, [ebx+20] - and eax, 15 - - - - - - lea ecx, [Lload_table4+eax+8] - - mov ebx, [esp+(16+16+12)-4] -LUW35: - - mov eax, [esp+16] - jmp dword ptr [ecx] - - ALIGN 8 -Lload_table4: -ALIGN 8; ORG Lload_table4 + 0 * 8 - fld DWORD PTR [esp +16] - jmp Le4 -ALIGN 8; ORG Lload_table4 + 1 * 8 - fld QWORD PTR [esp +16] - jmp Le4 -ALIGN 8; ORG Lload_table4 + 2 * 8 - fld QWORD PTR [esp +16] - jmp Le4 -ALIGN 8; ORG Lload_table4 + 3 * 8 - movsx eax, al - jmp Le4 -ALIGN 8; ORG Lload_table4 + 4 * 8 - movsx eax, ax - jmp Le4 -ALIGN 8; ORG Lload_table4 + 5 * 8 - movzx eax, al - jmp Le4 -ALIGN 8; ORG Lload_table4 + 6 * 8 - movzx eax, ax - jmp Le4 -ALIGN 8; ORG Lload_table4 + 7 * 8 - mov edx, [esp+16+4] - jmp Le4 -ALIGN 8; ORG Lload_table4 + X86_RET_int 32 * 8 - nop - -ALIGN 8; ORG Lload_table4 + 9 * 8 -Le4: - add esp, (16+16+12) -LUW36: - - ret -LUW37: - -ALIGN 8; ORG Lload_table4 + 10 * 8 - add esp, (16+16+12) -LUW38: - - ret 4 -LUW39: - -ALIGN 8; ORG Lload_table4 + 11 * 8 - jmp Le4 -ALIGN 8; ORG Lload_table4 + 12 * 8 - movzx eax, al - jmp Le4 -ALIGN 8; ORG Lload_table4 + 13 * 8 - movzx eax, ax - jmp Le4 - - -ALIGN 8; ORG Lload_table4 + 14 * 8 - int 3 -ALIGN 8; ORG Lload_table4 + 15 * 8 - int 3 - -LUW40: - -ffi_closure_raw_SYSV ENDP - - - -ALIGN 16 -PUBLIC ffi_closure_raw_THISCALL -ffi_closure_raw_THISCALL PROC C -LUW41: - - - - pop edx -LUW42: - - - push ecx -LUW43: - - push edx -LUW44: - - - sub esp, (16+16+8) -LUW45: - - mov [esp+(16+16+8)-4], ebx -LUW46: - - - mov edx, [eax+12+8] - mov [esp+12], edx - lea edx, [esp+(16+16+8)+4] - mov [esp+8], edx - lea edx, [esp+16] - mov [esp+4], edx - mov ebx, [eax+12] - mov [esp], ebx - call DWORD PTR [eax+12+4] - - mov eax, [ebx+20] - and eax, 15 - - - - - - lea ecx, [Lload_table5+eax*8] - - mov ebx, [esp+(16+16+8)-4] -LUW47: - - mov eax, [esp+16] - jmp DWORD PTR [ecx] - - AlIGN 4 -Lload_table5: -ALIGN 8; ORG Lload_table5 + 0 * 8 - fld DWORD PTR [esp +16] - jmp Le5 -ALIGN 8; ORG Lload_table5 + 1 * 8 - fld QWORD PTR [esp +16] - jmp Le5 -ALIGN 8; ORG Lload_table5 + 2 * 8 - fld QWORD PTR [esp+16] - jmp Le5 -ALIGN 8; ORG Lload_table5 + 3 * 8 - movsx eax, al - jmp Le5 -ALIGN 8; ORG Lload_table5 + 4 * 8 - movsx eax, ax - jmp Le5 -ALIGN 8; ORG Lload_table5 + 5 * 8 - movzx eax, al - jmp Le5 -ALIGN 8; ORG Lload_table5 + 6 * 8 - movzx eax, ax - jmp Le5 -ALIGN 8; ORG Lload_table5 + 7 * 8 - mov edx, [esp+16+4] - jmp Le5 -ALIGN 8; ORG Lload_table5 + X86_RET_int 32 * 8 - nop - -ALIGN 8; ORG Lload_table5 + 9 * 8 -Le5: - add esp, (16+16+8) -LUW48: - - - ret 4 -LUW49: - -ALIGN 8; ORG Lload_table5 + 10 * 8 - add esp, (16+16+8) -LUW50: - - ret 8 -LUW51: - -ALIGN 8; ORG Lload_table5 + 11 * 8 - jmp Le5 -ALIGN 8; ORG Lload_table5 + 12 * 8 - movzx eax, al - jmp Le5 -ALIGN 8; ORG Lload_table5 + 13 * 8 - movzx eax, ax - jmp Le5 - - -ALIGN 8; ORG Lload_table5 + 14 * 8 - int 3 -ALIGN 8; ORG Lload_table5 + 15 * 8 - int 3 - -LUW52: - -ffi_closure_raw_THISCALL ENDP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -END + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .686P + .MODEL FLAT + +EXTRN @ffi_closure_inner@8:PROC +_TEXT SEGMENT + + + + + + + + + + + + +ALIGN 16 +PUBLIC @ffi_call_i386@8 +@ffi_call_i386@8 PROC +LUW0: + + + + + + mov eax, [esp] + mov [ecx], ebp + mov [ecx+4], eax + + + + + + + + + mov ebp, ecx +LUW1: + + + + mov esp, edx + mov eax, [20+0*4+ebp] + mov edx, [20+1*4+ebp] + mov ecx, [20+2*4+ebp] + + call dword ptr [ebp+8] + + mov ecx, [12+ebp] + mov [ebp+8], ebx +LUW2: + + + and ecx, 15 + lea ebx, [Lstore_table + ecx * 8] + mov ecx, [ebp+16] + jmp ebx + + ALIGN 8 +Lstore_table: +ALIGN 8; ORG Lstore_table + 0 * 8 + fstp DWORD PTR [ecx] + jmp Le1 +ALIGN 8; ORG Lstore_table + 1 * 8 + fstp QWORD PTR [ecx] + jmp Le1 +ALIGN 8; ORG Lstore_table + 2 * 8 + fstp QWORD PTR [ecx] + jmp Le1 +ALIGN 8; ORG Lstore_table + 3 * 8 + movsx eax, al + mov [ecx], eax + jmp Le1 +ALIGN 8; ORG Lstore_table + 4 * 8 + movsx eax, ax + mov [ecx], eax + jmp Le1 +ALIGN 8; ORG Lstore_table + 5 * 8 + movzx eax, al + mov [ecx], eax + jmp Le1 +ALIGN 8; ORG Lstore_table + 6 * 8 + movzx eax, ax + mov [ecx], eax + jmp Le1 +ALIGN 8; ORG Lstore_table + 7 * 8 + mov [ecx+4], edx + +ALIGN 8; ORG Lstore_table + X86_RET_int 32 * 8 + mov [ecx], eax + +ALIGN 8; ORG Lstore_table + 9 * 8 +Le1: + mov ebx, [ebp+8] + mov esp, ebp + pop ebp +LUW3: + + + + + ret +LUW4: + + +ALIGN 8; ORG Lstore_table + 10 * 8 + jmp Le1 +ALIGN 8; ORG Lstore_table + 11 * 8 + jmp Le1 +ALIGN 8; ORG Lstore_table + 12 * 8 + mov [ecx], al + jmp Le1 +ALIGN 8; ORG Lstore_table + 13 * 8 + mov [ecx], ax + jmp Le1 + + +ALIGN 8; ORG Lstore_table + 14 * 8 + int 3 +ALIGN 8; ORG Lstore_table + 15 * 8 + int 3 + +LUW5: + +@ffi_call_i386@8 ENDP + + + + + + + + + + + + + + + + + + + + + + +FFI_CLOSURE_SAVE_REGS MACRO + mov [esp + 0+16+0*4], eax + mov [esp + 0+16+1*4], edx + mov [esp + 0+16+2*4], ecx +ENDM + +FFI_CLOSURE_COPY_TRAMP_DATA MACRO + mov edx, [eax+12] + mov ecx, [eax+12+4] + mov eax, [eax+12+8]; + mov [esp+0+28], edx + mov [esp+0+32], ecx + mov [esp+0+36], eax +ENDM + + +FFI_CLOSURE_PREP_CALL MACRO + mov ecx, esp + lea edx, [esp+(40 + 4)+4] +ENDM + + + + + + + + + +FFI_CLOSURE_CALL_INNER MACRO UWN + call @ffi_closure_inner@8 +ENDM + +FFI_CLOSURE_MASK_AND_JUMP MACRO LABEL + and eax, 15 + lea edx, [LABEL+eax*8] + mov eax, [esp+0] + jmp edx +ENDM + +ALIGN 16 +PUBLIC ffi_go_closure_EAX +ffi_go_closure_EAX PROC C +LUW6: + + sub esp, (40 + 4) +LUW7: + + FFI_CLOSURE_SAVE_REGS + mov edx, [eax+4] + mov ecx, [eax +8] + mov [esp+0+28], edx + mov [esp+0+32], ecx + mov [esp+0+36], eax + jmp Ldo_closure_i386 +LUW8: + +ffi_go_closure_EAX ENDP + +ALIGN 16 +PUBLIC ffi_go_closure_ECX +ffi_go_closure_ECX PROC C +LUW9: + + sub esp, (40 + 4) +LUW10: + + FFI_CLOSURE_SAVE_REGS + mov edx, [ecx+4] + mov eax, [ecx+8] + mov [esp+0+28], edx + mov [esp+0+32], eax + mov [esp+0+36], ecx + jmp Ldo_closure_i386 +LUW11: + +ffi_go_closure_ECX ENDP + + + + +ALIGN 16 +PUBLIC ffi_closure_i386 +ffi_closure_i386 PROC C +LUW12: + + sub esp, (40 + 4) +LUW13: + + + FFI_CLOSURE_SAVE_REGS + FFI_CLOSURE_COPY_TRAMP_DATA + + +Ldo_closure_i386:: + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(14) + FFI_CLOSURE_MASK_AND_JUMP Lload_table2 + + ALIGN 8 +Lload_table2: +ALIGN 8; ORG Lload_table2 + 0 * 8 + fld dword ptr [esp+0] + jmp Le2 +ALIGN 8; ORG Lload_table2 + 1 * 8 + fld qword ptr [esp+0] + jmp Le2 +ALIGN 8; ORG Lload_table2 + 2 * 8 + fld qword ptr [esp+0] + jmp Le2 +ALIGN 8; ORG Lload_table2 + 3 * 8 + movsx eax, al + jmp Le2 +ALIGN 8; ORG Lload_table2 + 4 * 8 + movsx eax, ax + jmp Le2 +ALIGN 8; ORG Lload_table2 + 5 * 8 + movzx eax, al + jmp Le2 +ALIGN 8; ORG Lload_table2 + 6 * 8 + movzx eax, ax + jmp Le2 +ALIGN 8; ORG Lload_table2 + 7 * 8 + mov edx, [esp+0+4] + jmp Le2 +ALIGN 8; ORG Lload_table2 + 8 * 8 + nop + +ALIGN 8; ORG Lload_table2 + 9 * 8 +Le2: + add esp, (40 + 4) +LUW16: + + ret +LUW17: + +ALIGN 8; ORG Lload_table2 + 10 * 8 + add esp, (40 + 4) +LUW18: + + ret 4 +LUW19: + +ALIGN 8; ORG Lload_table2 + 11 * 8 + jmp Le2 +ALIGN 8; ORG Lload_table2 + 12 * 8 + movzx eax, al + jmp Le2 +ALIGN 8; ORG Lload_table2 + 13 * 8 + movzx eax, ax + jmp Le2 + + +ALIGN 8; ORG Lload_table2 + 14 * 8 + int 3 +ALIGN 8; ORG Lload_table2 + 15 * 8 + int 3 + +LUW20: + +ffi_closure_i386 ENDP + +ALIGN 16 +PUBLIC ffi_go_closure_STDCALL +ffi_go_closure_STDCALL PROC C +LUW21: + + sub esp, (40 + 4) +LUW22: + + FFI_CLOSURE_SAVE_REGS + mov edx, [ecx+4] + mov eax, [ecx+8] + mov [esp+0+28], edx + mov [esp+0+32], eax + mov [esp+0+36], ecx + jmp Ldo_closure_STDCALL +LUW23: + +ffi_go_closure_STDCALL ENDP + + + + +ALIGN 16 +PUBLIC ffi_closure_REGISTER +ffi_closure_REGISTER PROC C +LUW24: + + + + sub esp, (40 + 4)-4 +LUW25: + + FFI_CLOSURE_SAVE_REGS + mov ecx, [esp+(40 + 4)-4] + mov eax, [esp+(40 + 4)] + mov [esp+(40 + 4)], ecx + jmp Ldo_closure_REGISTER +LUW26: + +ffi_closure_REGISTER ENDP + + + + + +ALIGN 16 +PUBLIC ffi_closure_STDCALL +ffi_closure_STDCALL PROC C +LUW27: + + sub esp, (40 + 4) +LUW28: + + + FFI_CLOSURE_SAVE_REGS + + +Ldo_closure_REGISTER:: + + FFI_CLOSURE_COPY_TRAMP_DATA + + +Ldo_closure_STDCALL:: + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(29) + + mov ecx, eax + shr ecx, 4 + lea ecx, [esp+(40 + 4)+ecx] + mov edx, [esp+(40 + 4)] + mov [ecx], edx + + + + + + + + FFI_CLOSURE_MASK_AND_JUMP Lload_table3 + + ALIGN 8 +Lload_table3: +ALIGN 8; ORG Lload_table3 + 0 * 8 + fld DWORD PTR [esp+0] + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 1 * 8 + fld QWORD PTR [esp+0] + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 2 * 8 + fld QWORD PTR [esp+0] + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 3 * 8 + movsx eax, al + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 4 * 8 + movsx eax, ax + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 5 * 8 + movzx eax, al + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 6 * 8 + movzx eax, ax + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 7 * 8 + mov edx, [esp+0+4] + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + X86_RET_int 32 * 8 + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 9 * 8 + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 10 * 8 + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 11 * 8 + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 12 * 8 + movzx eax, al + mov esp, ecx + ret +ALIGN 8; ORG Lload_table3 + 13 * 8 + movzx eax, ax + mov esp, ecx + ret + + +ALIGN 8; ORG Lload_table3 + 14 * 8 + int 3 +ALIGN 8; ORG Lload_table3 + 15 * 8 + int 3 + +LUW31: + +ffi_closure_STDCALL ENDP + + + + + +ALIGN 16 +PUBLIC ffi_closure_raw_SYSV +ffi_closure_raw_SYSV PROC C +LUW32: + + sub esp, (16+16+12) +LUW33: + + mov [esp+(16+16+12)-4], ebx +LUW34: + + + mov edx, [eax+12+8] + mov [esp+12], edx + lea edx, [esp+(16+16+12)+4] + mov [esp+8], edx + lea edx, [esp+16] + mov [esp+4], edx + mov ebx, [eax+12] + mov [esp], ebx + call DWORD PTR [eax+12+4] + + mov eax, [ebx+20] + and eax, 15 + + + + + + lea ecx, [Lload_table4+eax+8] + + mov ebx, [esp+(16+16+12)-4] +LUW35: + + mov eax, [esp+16] + jmp dword ptr [ecx] + + ALIGN 8 +Lload_table4: +ALIGN 8; ORG Lload_table4 + 0 * 8 + fld DWORD PTR [esp +16] + jmp Le4 +ALIGN 8; ORG Lload_table4 + 1 * 8 + fld QWORD PTR [esp +16] + jmp Le4 +ALIGN 8; ORG Lload_table4 + 2 * 8 + fld QWORD PTR [esp +16] + jmp Le4 +ALIGN 8; ORG Lload_table4 + 3 * 8 + movsx eax, al + jmp Le4 +ALIGN 8; ORG Lload_table4 + 4 * 8 + movsx eax, ax + jmp Le4 +ALIGN 8; ORG Lload_table4 + 5 * 8 + movzx eax, al + jmp Le4 +ALIGN 8; ORG Lload_table4 + 6 * 8 + movzx eax, ax + jmp Le4 +ALIGN 8; ORG Lload_table4 + 7 * 8 + mov edx, [esp+16+4] + jmp Le4 +ALIGN 8; ORG Lload_table4 + X86_RET_int 32 * 8 + nop + +ALIGN 8; ORG Lload_table4 + 9 * 8 +Le4: + add esp, (16+16+12) +LUW36: + + ret +LUW37: + +ALIGN 8; ORG Lload_table4 + 10 * 8 + add esp, (16+16+12) +LUW38: + + ret 4 +LUW39: + +ALIGN 8; ORG Lload_table4 + 11 * 8 + jmp Le4 +ALIGN 8; ORG Lload_table4 + 12 * 8 + movzx eax, al + jmp Le4 +ALIGN 8; ORG Lload_table4 + 13 * 8 + movzx eax, ax + jmp Le4 + + +ALIGN 8; ORG Lload_table4 + 14 * 8 + int 3 +ALIGN 8; ORG Lload_table4 + 15 * 8 + int 3 + +LUW40: + +ffi_closure_raw_SYSV ENDP + + + +ALIGN 16 +PUBLIC ffi_closure_raw_THISCALL +ffi_closure_raw_THISCALL PROC C +LUW41: + + + + pop edx +LUW42: + + + push ecx +LUW43: + + push edx +LUW44: + + + sub esp, (16+16+8) +LUW45: + + mov [esp+(16+16+8)-4], ebx +LUW46: + + + mov edx, [eax+12+8] + mov [esp+12], edx + lea edx, [esp+(16+16+8)+4] + mov [esp+8], edx + lea edx, [esp+16] + mov [esp+4], edx + mov ebx, [eax+12] + mov [esp], ebx + call DWORD PTR [eax+12+4] + + mov eax, [ebx+20] + and eax, 15 + + + + + + lea ecx, [Lload_table5+eax*8] + + mov ebx, [esp+(16+16+8)-4] +LUW47: + + mov eax, [esp+16] + jmp DWORD PTR [ecx] + + AlIGN 4 +Lload_table5: +ALIGN 8; ORG Lload_table5 + 0 * 8 + fld DWORD PTR [esp +16] + jmp Le5 +ALIGN 8; ORG Lload_table5 + 1 * 8 + fld QWORD PTR [esp +16] + jmp Le5 +ALIGN 8; ORG Lload_table5 + 2 * 8 + fld QWORD PTR [esp+16] + jmp Le5 +ALIGN 8; ORG Lload_table5 + 3 * 8 + movsx eax, al + jmp Le5 +ALIGN 8; ORG Lload_table5 + 4 * 8 + movsx eax, ax + jmp Le5 +ALIGN 8; ORG Lload_table5 + 5 * 8 + movzx eax, al + jmp Le5 +ALIGN 8; ORG Lload_table5 + 6 * 8 + movzx eax, ax + jmp Le5 +ALIGN 8; ORG Lload_table5 + 7 * 8 + mov edx, [esp+16+4] + jmp Le5 +ALIGN 8; ORG Lload_table5 + X86_RET_int 32 * 8 + nop + +ALIGN 8; ORG Lload_table5 + 9 * 8 +Le5: + add esp, (16+16+8) +LUW48: + + + ret 4 +LUW49: + +ALIGN 8; ORG Lload_table5 + 10 * 8 + add esp, (16+16+8) +LUW50: + + ret 8 +LUW51: + +ALIGN 8; ORG Lload_table5 + 11 * 8 + jmp Le5 +ALIGN 8; ORG Lload_table5 + 12 * 8 + movzx eax, al + jmp Le5 +ALIGN 8; ORG Lload_table5 + 13 * 8 + movzx eax, ax + jmp Le5 + + +ALIGN 8; ORG Lload_table5 + 14 * 8 + int 3 +ALIGN 8; ORG Lload_table5 + 15 * 8 + int 3 + +LUW52: + +ffi_closure_raw_THISCALL ENDP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +END |