Update to libffi-3.4.2 build

This commit is contained in:
Steve Dower
2021-08-27 00:44:59 +01:00
parent 1cf06233e3
commit 6206de2840
29 changed files with 252 additions and 105 deletions

View File

@@ -1,4 +1,4 @@
libffi - Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others. libffi - Copyright (c) 1996-2021 Anthony Green, Red Hat, Inc and others.
See source files for details. See source files for details.
Permission is hereby granted, free of charge, to any person obtaining Permission is hereby granted, free of charge, to any person obtaining

View File

@@ -1,6 +1,7 @@
/* -----------------------------------------------------------------*-C-*- /* -----------------------------------------------------------------*-C-*-
libffi 3.3-rc0 - Copyright (c) 2011, 2014 Anthony Green libffi 3.4.2
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - Copyright (c) 2011, 2014, 2019, 2021 Anthony Green
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation obtaining a copy of this software and associated documentation
@@ -217,7 +218,8 @@ FFI_EXTERN ffi_type ffi_type_complex_longdouble;
typedef enum { typedef enum {
FFI_OK = 0, FFI_OK = 0,
FFI_BAD_TYPEDEF, FFI_BAD_TYPEDEF,
FFI_BAD_ABI FFI_BAD_ABI,
FFI_BAD_ARGTYPE
} ffi_status; } ffi_status;
typedef struct { typedef struct {
@@ -269,7 +271,7 @@ typedef ffi_raw ffi_java_raw;
#endif #endif
FFI_API FFI_API
void ffi_raw_call (ffi_cif *cif, void ffi_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
@@ -288,15 +290,15 @@ FFI_API
void ffi_java_raw_call (ffi_cif *cif, void ffi_java_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
ffi_java_raw *avalue); ffi_java_raw *avalue) __attribute__((deprecated));
#endif #endif
FFI_API FFI_API
void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated));
FFI_API FFI_API
void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated));
FFI_API FFI_API
size_t ffi_java_raw_size (ffi_cif *cif); size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated));
/* ---- Definitions for closures ----------------------------------------- */ /* ---- Definitions for closures ----------------------------------------- */
@@ -310,7 +312,10 @@ typedef struct {
void *trampoline_table; void *trampoline_table;
void *trampoline_table_entry; void *trampoline_table_entry;
#else #else
char tramp[FFI_TRAMPOLINE_SIZE]; union {
char tramp[FFI_TRAMPOLINE_SIZE];
void *ftramp;
};
#endif #endif
ffi_cif *cif; ffi_cif *cif;
void (*fun)(ffi_cif*,void*,void**,void*); void (*fun)(ffi_cif*,void*,void**,void*);
@@ -330,6 +335,14 @@ typedef struct {
FFI_API void *ffi_closure_alloc (size_t size, void **code); FFI_API void *ffi_closure_alloc (size_t size, void **code);
FFI_API void ffi_closure_free (void *); 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_API ffi_status
ffi_prep_closure (ffi_closure*, ffi_prep_closure (ffi_closure*,
ffi_cif *, ffi_cif *,
@@ -363,8 +376,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the transaltion, void** -> ffi_raw*. */ handler to do the transaltion, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -389,8 +402,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the translation, void** -> ffi_raw*. */ handler to do the translation, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -421,14 +434,14 @@ FFI_API ffi_status
ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_prep_java_raw_closure (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data); void *user_data) __attribute__((deprecated));
FFI_API ffi_status FFI_API ffi_status
ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data, void *user_data,
void *codeloc); void *codeloc) __attribute__((deprecated));
#endif #endif
#endif /* FFI_CLOSURES */ #endif /* FFI_CLOSURES */
@@ -451,7 +464,7 @@ FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
/* ---- Public interface definition -------------------------------------- */ /* ---- Public interface definition -------------------------------------- */
FFI_API FFI_API
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_status ffi_prep_cif(ffi_cif *cif,
ffi_abi abi, ffi_abi abi,
unsigned int nargs, unsigned int nargs,
@@ -484,18 +497,18 @@ ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type,
#endif #endif
/* If these change, update src/mips/ffitarget.h. */ /* If these change, update src/mips/ffitarget.h. */
#define FFI_TYPE_VOID 0 #define FFI_TYPE_VOID 0
#define FFI_TYPE_INT 1 #define FFI_TYPE_INT 1
#define FFI_TYPE_FLOAT 2 #define FFI_TYPE_FLOAT 2
#define FFI_TYPE_DOUBLE 3 #define FFI_TYPE_DOUBLE 3
#if 0 #if 0
#define FFI_TYPE_LONGDOUBLE 4 #define FFI_TYPE_LONGDOUBLE 4
#else #else
#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE
#endif #endif
#define FFI_TYPE_UINT8 5 #define FFI_TYPE_UINT8 5
#define FFI_TYPE_SINT8 6 #define FFI_TYPE_SINT8 6
#define FFI_TYPE_UINT16 7 #define FFI_TYPE_UINT16 7
#define FFI_TYPE_SINT16 8 #define FFI_TYPE_SINT16 8
#define FFI_TYPE_UINT32 9 #define FFI_TYPE_UINT32 9
#define FFI_TYPE_SINT32 10 #define FFI_TYPE_SINT32 10

View File

@@ -18,6 +18,9 @@
/* Define this if you want extra debugging. */ /* Define this if you want extra debugging. */
/* #undef FFI_DEBUG */ /* #undef FFI_DEBUG */
/* Define this if you want statically defined trampolines */
/* #undef FFI_EXEC_STATIC_TRAMP */
/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ /* #undef FFI_EXEC_TRAMPOLINE_TABLE */
@@ -77,12 +80,18 @@
/* Define to 1 if you have the `memcpy' function. */ /* Define to 1 if you have the `memcpy' function. */
/* #undef HAVE_MEMCPY */ /* #undef HAVE_MEMCPY */
/* Define to 1 if you have the `memfd_create' function. */
/* #undef HAVE_MEMFD_CREATE */
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1 #define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mkostemp' function. */ /* Define to 1 if you have the `mkostemp' function. */
/* #undef HAVE_MKOSTEMP */ /* #undef HAVE_MKOSTEMP */
/* Define to 1 if you have the `mkstemp' function. */
/* #undef HAVE_MKSTEMP */
/* Define to 1 if you have the `mmap' function. */ /* Define to 1 if you have the `mmap' function. */
/* #undef HAVE_MMAP */ /* #undef HAVE_MMAP */
@@ -95,6 +104,9 @@
/* Define if read-only mmap of a plain file works. */ /* Define if read-only mmap of a plain file works. */
/* #undef HAVE_MMAP_FILE */ /* #undef HAVE_MMAP_FILE */
/* Define if your compiler supports pointer authentication. */
/* #undef HAVE_PTRAUTH */
/* Define if .eh_frame sections should be read-only. */ /* Define if .eh_frame sections should be read-only. */
/* #undef HAVE_RO_EH_FRAME */ /* #undef HAVE_RO_EH_FRAME */
@@ -110,6 +122,9 @@
/* Define to 1 if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1 #define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/memfd.h> header file. */
/* #undef HAVE_SYS_MEMFD_H */
/* Define to 1 if you have the <sys/mman.h> header file. */ /* Define to 1 if you have the <sys/mman.h> header file. */
/* #undef HAVE_SYS_MMAN_H */ /* #undef HAVE_SYS_MMAN_H */
@@ -138,7 +153,7 @@
#define PACKAGE_NAME "libffi" #define PACKAGE_NAME "libffi"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "libffi 3.3-rc0" #define PACKAGE_STRING "libffi 3.4.2"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libffi" #define PACKAGE_TARNAME "libffi"
@@ -147,7 +162,7 @@
#define PACKAGE_URL "" #define PACKAGE_URL ""
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "3.3-rc0" #define PACKAGE_VERSION "3.4.2"
/* The size of `double', as computed by sizeof. */ /* The size of `double', as computed by sizeof. */
#define SIZEOF_DOUBLE 8 #define SIZEOF_DOUBLE 8
@@ -177,7 +192,7 @@
/* #undef USING_PURIFY */ /* #undef USING_PURIFY */
/* Version number of package */ /* Version number of package */
#define VERSION "3.3-rc0" #define VERSION "3.4.2"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */ significant byte first (like Motorola and SPARC, unlike Intel). */

View File

@@ -136,12 +136,27 @@ typedef enum ffi_abi {
#if defined (X86_64) || defined(X86_WIN64) \ #if defined (X86_64) || defined(X86_WIN64) \
|| (defined (__x86_64__) && defined (X86_DARWIN)) || (defined (__x86_64__) && defined (X86_DARWIN))
# define FFI_TRAMPOLINE_SIZE 24 /* 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 # define FFI_NATIVE_RAW_API 0
#else #else
# define FFI_TRAMPOLINE_SIZE 12 /* 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 */ # define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
#endif #endif
#if !defined(GENERATE_LIBFFI_MAP) && defined(__CET__)
# include <cet.h>
# if (__CET__ & 1) != 0
# define ENDBR_PRESENT
# endif
# define _CET_NOTRACK notrack
#else
# define _CET_ENDBR
# define _CET_NOTRACK
#endif
#endif #endif

Binary file not shown.

Binary file not shown.

BIN
amd64/libffi-8.dll Normal file

Binary file not shown.

BIN
amd64/libffi-8.lib Normal file

Binary file not shown.

View File

@@ -1,6 +1,7 @@
/* -----------------------------------------------------------------*-C-*- /* -----------------------------------------------------------------*-C-*-
libffi 3.3-rc0 - Copyright (c) 2011, 2014 Anthony Green libffi 3.4.2
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - Copyright (c) 2011, 2014, 2019, 2021 Anthony Green
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation obtaining a copy of this software and associated documentation
@@ -217,7 +218,8 @@ FFI_EXTERN ffi_type ffi_type_complex_longdouble;
typedef enum { typedef enum {
FFI_OK = 0, FFI_OK = 0,
FFI_BAD_TYPEDEF, FFI_BAD_TYPEDEF,
FFI_BAD_ABI FFI_BAD_ABI,
FFI_BAD_ARGTYPE
} ffi_status; } ffi_status;
typedef struct { typedef struct {
@@ -269,7 +271,7 @@ typedef ffi_raw ffi_java_raw;
#endif #endif
FFI_API FFI_API
void ffi_raw_call (ffi_cif *cif, void ffi_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
@@ -288,15 +290,15 @@ FFI_API
void ffi_java_raw_call (ffi_cif *cif, void ffi_java_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
ffi_java_raw *avalue); ffi_java_raw *avalue) __attribute__((deprecated));
#endif #endif
FFI_API FFI_API
void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated));
FFI_API FFI_API
void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated));
FFI_API FFI_API
size_t ffi_java_raw_size (ffi_cif *cif); size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated));
/* ---- Definitions for closures ----------------------------------------- */ /* ---- Definitions for closures ----------------------------------------- */
@@ -310,7 +312,10 @@ typedef struct {
void *trampoline_table; void *trampoline_table;
void *trampoline_table_entry; void *trampoline_table_entry;
#else #else
char tramp[FFI_TRAMPOLINE_SIZE]; union {
char tramp[FFI_TRAMPOLINE_SIZE];
void *ftramp;
};
#endif #endif
ffi_cif *cif; ffi_cif *cif;
void (*fun)(ffi_cif*,void*,void**,void*); void (*fun)(ffi_cif*,void*,void**,void*);
@@ -330,6 +335,14 @@ typedef struct {
FFI_API void *ffi_closure_alloc (size_t size, void **code); FFI_API void *ffi_closure_alloc (size_t size, void **code);
FFI_API void ffi_closure_free (void *); 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_API ffi_status
ffi_prep_closure (ffi_closure*, ffi_prep_closure (ffi_closure*,
ffi_cif *, ffi_cif *,
@@ -363,8 +376,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the transaltion, void** -> ffi_raw*. */ handler to do the transaltion, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -389,8 +402,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the translation, void** -> ffi_raw*. */ handler to do the translation, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -421,14 +434,14 @@ FFI_API ffi_status
ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_prep_java_raw_closure (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data); void *user_data) __attribute__((deprecated));
FFI_API ffi_status FFI_API ffi_status
ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data, void *user_data,
void *codeloc); void *codeloc) __attribute__((deprecated));
#endif #endif
#endif /* FFI_CLOSURES */ #endif /* FFI_CLOSURES */
@@ -451,7 +464,7 @@ FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
/* ---- Public interface definition -------------------------------------- */ /* ---- Public interface definition -------------------------------------- */
FFI_API FFI_API
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_status ffi_prep_cif(ffi_cif *cif,
ffi_abi abi, ffi_abi abi,
unsigned int nargs, unsigned int nargs,
@@ -484,18 +497,18 @@ ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type,
#endif #endif
/* If these change, update src/mips/ffitarget.h. */ /* If these change, update src/mips/ffitarget.h. */
#define FFI_TYPE_VOID 0 #define FFI_TYPE_VOID 0
#define FFI_TYPE_INT 1 #define FFI_TYPE_INT 1
#define FFI_TYPE_FLOAT 2 #define FFI_TYPE_FLOAT 2
#define FFI_TYPE_DOUBLE 3 #define FFI_TYPE_DOUBLE 3
#if 0 #if 0
#define FFI_TYPE_LONGDOUBLE 4 #define FFI_TYPE_LONGDOUBLE 4
#else #else
#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE
#endif #endif
#define FFI_TYPE_UINT8 5 #define FFI_TYPE_UINT8 5
#define FFI_TYPE_SINT8 6 #define FFI_TYPE_SINT8 6
#define FFI_TYPE_UINT16 7 #define FFI_TYPE_UINT16 7
#define FFI_TYPE_SINT16 8 #define FFI_TYPE_SINT16 8
#define FFI_TYPE_UINT32 9 #define FFI_TYPE_UINT32 9
#define FFI_TYPE_SINT32 10 #define FFI_TYPE_SINT32 10

View File

@@ -18,6 +18,9 @@
/* Define this if you want extra debugging. */ /* Define this if you want extra debugging. */
/* #undef FFI_DEBUG */ /* #undef FFI_DEBUG */
/* Define this if you want statically defined trampolines */
/* #undef FFI_EXEC_STATIC_TRAMP */
/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ /* #undef FFI_EXEC_TRAMPOLINE_TABLE */
@@ -77,12 +80,18 @@
/* Define to 1 if you have the `memcpy' function. */ /* Define to 1 if you have the `memcpy' function. */
/* #undef HAVE_MEMCPY */ /* #undef HAVE_MEMCPY */
/* Define to 1 if you have the `memfd_create' function. */
/* #undef HAVE_MEMFD_CREATE */
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1 #define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mkostemp' function. */ /* Define to 1 if you have the `mkostemp' function. */
/* #undef HAVE_MKOSTEMP */ /* #undef HAVE_MKOSTEMP */
/* Define to 1 if you have the `mkstemp' function. */
/* #undef HAVE_MKSTEMP */
/* Define to 1 if you have the `mmap' function. */ /* Define to 1 if you have the `mmap' function. */
/* #undef HAVE_MMAP */ /* #undef HAVE_MMAP */
@@ -95,6 +104,9 @@
/* Define if read-only mmap of a plain file works. */ /* Define if read-only mmap of a plain file works. */
/* #undef HAVE_MMAP_FILE */ /* #undef HAVE_MMAP_FILE */
/* Define if your compiler supports pointer authentication. */
/* #undef HAVE_PTRAUTH */
/* Define if .eh_frame sections should be read-only. */ /* Define if .eh_frame sections should be read-only. */
/* #undef HAVE_RO_EH_FRAME */ /* #undef HAVE_RO_EH_FRAME */
@@ -110,6 +122,9 @@
/* Define to 1 if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1 #define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/memfd.h> header file. */
/* #undef HAVE_SYS_MEMFD_H */
/* Define to 1 if you have the <sys/mman.h> header file. */ /* Define to 1 if you have the <sys/mman.h> header file. */
/* #undef HAVE_SYS_MMAN_H */ /* #undef HAVE_SYS_MMAN_H */
@@ -138,7 +153,7 @@
#define PACKAGE_NAME "libffi" #define PACKAGE_NAME "libffi"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "libffi 3.3-rc0" #define PACKAGE_STRING "libffi 3.4.2"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libffi" #define PACKAGE_TARNAME "libffi"
@@ -147,7 +162,7 @@
#define PACKAGE_URL "" #define PACKAGE_URL ""
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "3.3-rc0" #define PACKAGE_VERSION "3.4.2"
/* The size of `double', as computed by sizeof. */ /* The size of `double', as computed by sizeof. */
#define SIZEOF_DOUBLE 8 #define SIZEOF_DOUBLE 8
@@ -177,7 +192,7 @@
/* #undef USING_PURIFY */ /* #undef USING_PURIFY */
/* Version number of package */ /* Version number of package */
#define VERSION "3.3-rc0" #define VERSION "3.4.2"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */ significant byte first (like Motorola and SPARC, unlike Intel). */

View File

@@ -43,7 +43,7 @@ typedef enum ffi_abi {
FFI_SYSV, FFI_SYSV,
FFI_VFP, FFI_VFP,
FFI_LAST_ABI, FFI_LAST_ABI,
#if defined(__ARM_PCS_VFP) || defined(_M_ARM) #if defined(__ARM_PCS_VFP) || defined(_WIN32)
FFI_DEFAULT_ABI = FFI_VFP, FFI_DEFAULT_ABI = FFI_VFP,
#else #else
FFI_DEFAULT_ABI = FFI_SYSV, FFI_DEFAULT_ABI = FFI_SYSV,
@@ -57,7 +57,7 @@ typedef enum ffi_abi {
signed char vfp_args[16] \ signed char vfp_args[16] \
#define FFI_TARGET_SPECIFIC_VARIADIC #define FFI_TARGET_SPECIFIC_VARIADIC
#ifndef _M_ARM #ifndef _WIN32
#define FFI_TARGET_HAS_COMPLEX_TYPE #define FFI_TARGET_HAS_COMPLEX_TYPE
#endif #endif
@@ -77,7 +77,7 @@ typedef enum ffi_abi {
#endif #endif
#else #else
#ifdef _MSC_VER #ifdef _WIN32
#define FFI_TRAMPOLINE_SIZE 16 #define FFI_TRAMPOLINE_SIZE 16
#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12 #define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
#else #else

Binary file not shown.

Binary file not shown.

BIN
arm32/libffi-8.dll Normal file

Binary file not shown.

BIN
arm32/libffi-8.lib Normal file

Binary file not shown.

View File

@@ -1,6 +1,7 @@
/* -----------------------------------------------------------------*-C-*- /* -----------------------------------------------------------------*-C-*-
libffi 3.3-rc0 - Copyright (c) 2011, 2014 Anthony Green libffi 3.4.2
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - Copyright (c) 2011, 2014, 2019, 2021 Anthony Green
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation obtaining a copy of this software and associated documentation
@@ -217,7 +218,8 @@ FFI_EXTERN ffi_type ffi_type_complex_longdouble;
typedef enum { typedef enum {
FFI_OK = 0, FFI_OK = 0,
FFI_BAD_TYPEDEF, FFI_BAD_TYPEDEF,
FFI_BAD_ABI FFI_BAD_ABI,
FFI_BAD_ARGTYPE
} ffi_status; } ffi_status;
typedef struct { typedef struct {
@@ -269,7 +271,7 @@ typedef ffi_raw ffi_java_raw;
#endif #endif
FFI_API FFI_API
void ffi_raw_call (ffi_cif *cif, void ffi_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
@@ -288,15 +290,15 @@ FFI_API
void ffi_java_raw_call (ffi_cif *cif, void ffi_java_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
ffi_java_raw *avalue); ffi_java_raw *avalue) __attribute__((deprecated));
#endif #endif
FFI_API FFI_API
void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated));
FFI_API FFI_API
void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated));
FFI_API FFI_API
size_t ffi_java_raw_size (ffi_cif *cif); size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated));
/* ---- Definitions for closures ----------------------------------------- */ /* ---- Definitions for closures ----------------------------------------- */
@@ -310,7 +312,10 @@ typedef struct {
void *trampoline_table; void *trampoline_table;
void *trampoline_table_entry; void *trampoline_table_entry;
#else #else
char tramp[FFI_TRAMPOLINE_SIZE]; union {
char tramp[FFI_TRAMPOLINE_SIZE];
void *ftramp;
};
#endif #endif
ffi_cif *cif; ffi_cif *cif;
void (*fun)(ffi_cif*,void*,void**,void*); void (*fun)(ffi_cif*,void*,void**,void*);
@@ -330,6 +335,14 @@ typedef struct {
FFI_API void *ffi_closure_alloc (size_t size, void **code); FFI_API void *ffi_closure_alloc (size_t size, void **code);
FFI_API void ffi_closure_free (void *); 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_API ffi_status
ffi_prep_closure (ffi_closure*, ffi_prep_closure (ffi_closure*,
ffi_cif *, ffi_cif *,
@@ -363,8 +376,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the transaltion, void** -> ffi_raw*. */ handler to do the transaltion, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -389,8 +402,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the translation, void** -> ffi_raw*. */ handler to do the translation, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -421,14 +434,14 @@ FFI_API ffi_status
ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_prep_java_raw_closure (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data); void *user_data) __attribute__((deprecated));
FFI_API ffi_status FFI_API ffi_status
ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data, void *user_data,
void *codeloc); void *codeloc) __attribute__((deprecated));
#endif #endif
#endif /* FFI_CLOSURES */ #endif /* FFI_CLOSURES */
@@ -451,7 +464,7 @@ FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
/* ---- Public interface definition -------------------------------------- */ /* ---- Public interface definition -------------------------------------- */
FFI_API FFI_API
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_status ffi_prep_cif(ffi_cif *cif,
ffi_abi abi, ffi_abi abi,
unsigned int nargs, unsigned int nargs,
@@ -484,18 +497,18 @@ ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type,
#endif #endif
/* If these change, update src/mips/ffitarget.h. */ /* If these change, update src/mips/ffitarget.h. */
#define FFI_TYPE_VOID 0 #define FFI_TYPE_VOID 0
#define FFI_TYPE_INT 1 #define FFI_TYPE_INT 1
#define FFI_TYPE_FLOAT 2 #define FFI_TYPE_FLOAT 2
#define FFI_TYPE_DOUBLE 3 #define FFI_TYPE_DOUBLE 3
#if 0 #if 0
#define FFI_TYPE_LONGDOUBLE 4 #define FFI_TYPE_LONGDOUBLE 4
#else #else
#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE
#endif #endif
#define FFI_TYPE_UINT8 5 #define FFI_TYPE_UINT8 5
#define FFI_TYPE_SINT8 6 #define FFI_TYPE_SINT8 6
#define FFI_TYPE_UINT16 7 #define FFI_TYPE_UINT16 7
#define FFI_TYPE_SINT16 8 #define FFI_TYPE_SINT16 8
#define FFI_TYPE_UINT32 9 #define FFI_TYPE_UINT32 9
#define FFI_TYPE_SINT32 10 #define FFI_TYPE_SINT32 10

View File

@@ -18,6 +18,9 @@
/* Define this if you want extra debugging. */ /* Define this if you want extra debugging. */
/* #undef FFI_DEBUG */ /* #undef FFI_DEBUG */
/* Define this if you want statically defined trampolines */
/* #undef FFI_EXEC_STATIC_TRAMP */
/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ /* #undef FFI_EXEC_TRAMPOLINE_TABLE */
@@ -77,12 +80,18 @@
/* Define to 1 if you have the `memcpy' function. */ /* Define to 1 if you have the `memcpy' function. */
/* #undef HAVE_MEMCPY */ /* #undef HAVE_MEMCPY */
/* Define to 1 if you have the `memfd_create' function. */
/* #undef HAVE_MEMFD_CREATE */
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1 #define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mkostemp' function. */ /* Define to 1 if you have the `mkostemp' function. */
/* #undef HAVE_MKOSTEMP */ /* #undef HAVE_MKOSTEMP */
/* Define to 1 if you have the `mkstemp' function. */
/* #undef HAVE_MKSTEMP */
/* Define to 1 if you have the `mmap' function. */ /* Define to 1 if you have the `mmap' function. */
/* #undef HAVE_MMAP */ /* #undef HAVE_MMAP */
@@ -95,6 +104,9 @@
/* Define if read-only mmap of a plain file works. */ /* Define if read-only mmap of a plain file works. */
/* #undef HAVE_MMAP_FILE */ /* #undef HAVE_MMAP_FILE */
/* Define if your compiler supports pointer authentication. */
/* #undef HAVE_PTRAUTH */
/* Define if .eh_frame sections should be read-only. */ /* Define if .eh_frame sections should be read-only. */
/* #undef HAVE_RO_EH_FRAME */ /* #undef HAVE_RO_EH_FRAME */
@@ -110,6 +122,9 @@
/* Define to 1 if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1 #define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/memfd.h> header file. */
/* #undef HAVE_SYS_MEMFD_H */
/* Define to 1 if you have the <sys/mman.h> header file. */ /* Define to 1 if you have the <sys/mman.h> header file. */
/* #undef HAVE_SYS_MMAN_H */ /* #undef HAVE_SYS_MMAN_H */
@@ -138,7 +153,7 @@
#define PACKAGE_NAME "libffi" #define PACKAGE_NAME "libffi"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "libffi 3.3-rc0" #define PACKAGE_STRING "libffi 3.4.2"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libffi" #define PACKAGE_TARNAME "libffi"
@@ -147,7 +162,7 @@
#define PACKAGE_URL "" #define PACKAGE_URL ""
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "3.3-rc0" #define PACKAGE_VERSION "3.4.2"
/* The size of `double', as computed by sizeof. */ /* The size of `double', as computed by sizeof. */
#define SIZEOF_DOUBLE 8 #define SIZEOF_DOUBLE 8
@@ -177,7 +192,7 @@
/* #undef USING_PURIFY */ /* #undef USING_PURIFY */
/* Version number of package */ /* Version number of package */
#define VERSION "3.3-rc0" #define VERSION "3.4.2"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */ significant byte first (like Motorola and SPARC, unlike Intel). */

View File

@@ -32,7 +32,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
#define FFI_SIZEOF_JAVA_RAW 4 #define FFI_SIZEOF_JAVA_RAW 4
typedef unsigned long long ffi_arg; typedef unsigned long long ffi_arg;
typedef signed long long ffi_sarg; typedef signed long long ffi_sarg;
#elif defined(_M_ARM64) #elif defined(_WIN32)
#define FFI_SIZEOF_ARG 8 #define FFI_SIZEOF_ARG 8
typedef unsigned long long ffi_arg; typedef unsigned long long ffi_arg;
typedef signed long long ffi_sarg; typedef signed long long ffi_sarg;
@@ -45,8 +45,13 @@ typedef enum ffi_abi
{ {
FFI_FIRST_ABI = 0, FFI_FIRST_ABI = 0,
FFI_SYSV, FFI_SYSV,
FFI_WIN64,
FFI_LAST_ABI, FFI_LAST_ABI,
#if defined(_WIN32)
FFI_DEFAULT_ABI = FFI_WIN64
#else
FFI_DEFAULT_ABI = FFI_SYSV FFI_DEFAULT_ABI = FFI_SYSV
#endif
} ffi_abi; } ffi_abi;
#endif #endif
@@ -69,22 +74,22 @@ typedef enum ffi_abi
#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE #define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
#endif #endif
#ifdef _M_ARM64 #ifdef _WIN32
#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic #define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
#endif #endif
#define FFI_TARGET_SPECIFIC_VARIADIC
/* ---- Internal ---- */ /* ---- Internal ---- */
#if defined (__APPLE__) #if defined (__APPLE__)
#define FFI_TARGET_SPECIFIC_VARIADIC
#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs #define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
#elif !defined(_M_ARM64) #elif !defined(_WIN32)
/* iOS and Windows reserve x18 for the system. Disable Go closures until /* iOS and Windows reserve x18 for the system. Disable Go closures until
a new static chain is chosen. */ a new static chain is chosen. */
#define FFI_GO_CLOSURES 1 #define FFI_GO_CLOSURES 1
#endif #endif
#ifndef _M_ARM64 #ifndef _WIN32
/* No complex type on Windows */ /* No complex type on Windows */
#define FFI_TARGET_HAS_COMPLEX_TYPE #define FFI_TARGET_HAS_COMPLEX_TYPE
#endif #endif

Binary file not shown.

Binary file not shown.

BIN
arm64/libffi-8.dll Normal file

Binary file not shown.

BIN
arm64/libffi-8.lib Normal file

Binary file not shown.

View File

@@ -1,6 +1,7 @@
/* -----------------------------------------------------------------*-C-*- /* -----------------------------------------------------------------*-C-*-
libffi 3.3-rc0 - Copyright (c) 2011, 2014 Anthony Green libffi 3.4.2
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. - Copyright (c) 2011, 2014, 2019, 2021 Anthony Green
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation obtaining a copy of this software and associated documentation
@@ -217,7 +218,8 @@ FFI_EXTERN ffi_type ffi_type_complex_longdouble;
typedef enum { typedef enum {
FFI_OK = 0, FFI_OK = 0,
FFI_BAD_TYPEDEF, FFI_BAD_TYPEDEF,
FFI_BAD_ABI FFI_BAD_ABI,
FFI_BAD_ARGTYPE
} ffi_status; } ffi_status;
typedef struct { typedef struct {
@@ -269,7 +271,7 @@ typedef ffi_raw ffi_java_raw;
#endif #endif
FFI_API FFI_API
void ffi_raw_call (ffi_cif *cif, void ffi_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
@@ -288,15 +290,15 @@ FFI_API
void ffi_java_raw_call (ffi_cif *cif, void ffi_java_raw_call (ffi_cif *cif,
void (*fn)(void), void (*fn)(void),
void *rvalue, void *rvalue,
ffi_java_raw *avalue); ffi_java_raw *avalue) __attribute__((deprecated));
#endif #endif
FFI_API FFI_API
void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated));
FFI_API FFI_API
void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated));
FFI_API FFI_API
size_t ffi_java_raw_size (ffi_cif *cif); size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated));
/* ---- Definitions for closures ----------------------------------------- */ /* ---- Definitions for closures ----------------------------------------- */
@@ -310,7 +312,10 @@ typedef struct {
void *trampoline_table; void *trampoline_table;
void *trampoline_table_entry; void *trampoline_table_entry;
#else #else
char tramp[FFI_TRAMPOLINE_SIZE]; union {
char tramp[FFI_TRAMPOLINE_SIZE];
void *ftramp;
};
#endif #endif
ffi_cif *cif; ffi_cif *cif;
void (*fun)(ffi_cif*,void*,void**,void*); void (*fun)(ffi_cif*,void*,void**,void*);
@@ -330,6 +335,14 @@ typedef struct {
FFI_API void *ffi_closure_alloc (size_t size, void **code); FFI_API void *ffi_closure_alloc (size_t size, void **code);
FFI_API void ffi_closure_free (void *); 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_API ffi_status
ffi_prep_closure (ffi_closure*, ffi_prep_closure (ffi_closure*,
ffi_cif *, ffi_cif *,
@@ -363,8 +376,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the transaltion, void** -> ffi_raw*. */ handler to do the transaltion, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -389,8 +402,8 @@ typedef struct {
#if !FFI_NATIVE_RAW_API #if !FFI_NATIVE_RAW_API
/* If this is enabled, then a raw closure has the same layout /* If this is enabled, then a raw closure has the same layout
as a regular closure. We use this to install an intermediate as a regular closure. We use this to install an intermediate
handler to do the translation, void** -> ffi_raw*. */ handler to do the translation, void** -> ffi_raw*. */
void (*translate_args)(ffi_cif*,void*,void**,void*); void (*translate_args)(ffi_cif*,void*,void**,void*);
@@ -421,14 +434,14 @@ FFI_API ffi_status
ffi_prep_java_raw_closure (ffi_java_raw_closure*, ffi_prep_java_raw_closure (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data); void *user_data) __attribute__((deprecated));
FFI_API ffi_status FFI_API ffi_status
ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
ffi_cif *cif, ffi_cif *cif,
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
void *user_data, void *user_data,
void *codeloc); void *codeloc) __attribute__((deprecated));
#endif #endif
#endif /* FFI_CLOSURES */ #endif /* FFI_CLOSURES */
@@ -451,7 +464,7 @@ FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
/* ---- Public interface definition -------------------------------------- */ /* ---- Public interface definition -------------------------------------- */
FFI_API FFI_API
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_status ffi_prep_cif(ffi_cif *cif,
ffi_abi abi, ffi_abi abi,
unsigned int nargs, unsigned int nargs,
@@ -484,18 +497,18 @@ ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type,
#endif #endif
/* If these change, update src/mips/ffitarget.h. */ /* If these change, update src/mips/ffitarget.h. */
#define FFI_TYPE_VOID 0 #define FFI_TYPE_VOID 0
#define FFI_TYPE_INT 1 #define FFI_TYPE_INT 1
#define FFI_TYPE_FLOAT 2 #define FFI_TYPE_FLOAT 2
#define FFI_TYPE_DOUBLE 3 #define FFI_TYPE_DOUBLE 3
#if 0 #if 0
#define FFI_TYPE_LONGDOUBLE 4 #define FFI_TYPE_LONGDOUBLE 4
#else #else
#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE
#endif #endif
#define FFI_TYPE_UINT8 5 #define FFI_TYPE_UINT8 5
#define FFI_TYPE_SINT8 6 #define FFI_TYPE_SINT8 6
#define FFI_TYPE_UINT16 7 #define FFI_TYPE_UINT16 7
#define FFI_TYPE_SINT16 8 #define FFI_TYPE_SINT16 8
#define FFI_TYPE_UINT32 9 #define FFI_TYPE_UINT32 9
#define FFI_TYPE_SINT32 10 #define FFI_TYPE_SINT32 10

View File

@@ -18,6 +18,9 @@
/* Define this if you want extra debugging. */ /* Define this if you want extra debugging. */
/* #undef FFI_DEBUG */ /* #undef FFI_DEBUG */
/* Define this if you want statically defined trampolines */
/* #undef FFI_EXEC_STATIC_TRAMP */
/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ /* #undef FFI_EXEC_TRAMPOLINE_TABLE */
@@ -77,12 +80,18 @@
/* Define to 1 if you have the `memcpy' function. */ /* Define to 1 if you have the `memcpy' function. */
/* #undef HAVE_MEMCPY */ /* #undef HAVE_MEMCPY */
/* Define to 1 if you have the `memfd_create' function. */
/* #undef HAVE_MEMFD_CREATE */
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1 #define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mkostemp' function. */ /* Define to 1 if you have the `mkostemp' function. */
/* #undef HAVE_MKOSTEMP */ /* #undef HAVE_MKOSTEMP */
/* Define to 1 if you have the `mkstemp' function. */
/* #undef HAVE_MKSTEMP */
/* Define to 1 if you have the `mmap' function. */ /* Define to 1 if you have the `mmap' function. */
/* #undef HAVE_MMAP */ /* #undef HAVE_MMAP */
@@ -95,6 +104,9 @@
/* Define if read-only mmap of a plain file works. */ /* Define if read-only mmap of a plain file works. */
/* #undef HAVE_MMAP_FILE */ /* #undef HAVE_MMAP_FILE */
/* Define if your compiler supports pointer authentication. */
/* #undef HAVE_PTRAUTH */
/* Define if .eh_frame sections should be read-only. */ /* Define if .eh_frame sections should be read-only. */
/* #undef HAVE_RO_EH_FRAME */ /* #undef HAVE_RO_EH_FRAME */
@@ -110,6 +122,9 @@
/* Define to 1 if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1 #define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/memfd.h> header file. */
/* #undef HAVE_SYS_MEMFD_H */
/* Define to 1 if you have the <sys/mman.h> header file. */ /* Define to 1 if you have the <sys/mman.h> header file. */
/* #undef HAVE_SYS_MMAN_H */ /* #undef HAVE_SYS_MMAN_H */
@@ -138,7 +153,7 @@
#define PACKAGE_NAME "libffi" #define PACKAGE_NAME "libffi"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "libffi 3.3-rc0" #define PACKAGE_STRING "libffi 3.4.2"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libffi" #define PACKAGE_TARNAME "libffi"
@@ -147,7 +162,7 @@
#define PACKAGE_URL "" #define PACKAGE_URL ""
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "3.3-rc0" #define PACKAGE_VERSION "3.4.2"
/* The size of `double', as computed by sizeof. */ /* The size of `double', as computed by sizeof. */
#define SIZEOF_DOUBLE 8 #define SIZEOF_DOUBLE 8
@@ -177,7 +192,7 @@
/* #undef USING_PURIFY */ /* #undef USING_PURIFY */
/* Version number of package */ /* Version number of package */
#define VERSION "3.3-rc0" #define VERSION "3.4.2"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */ significant byte first (like Motorola and SPARC, unlike Intel). */

View File

@@ -136,12 +136,27 @@ typedef enum ffi_abi {
#if defined (X86_64) || defined(X86_WIN64) \ #if defined (X86_64) || defined(X86_WIN64) \
|| (defined (__x86_64__) && defined (X86_DARWIN)) || (defined (__x86_64__) && defined (X86_DARWIN))
# define FFI_TRAMPOLINE_SIZE 24 /* 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 # define FFI_NATIVE_RAW_API 0
#else #else
# define FFI_TRAMPOLINE_SIZE 12 /* 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 */ # define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
#endif #endif
#if !defined(GENERATE_LIBFFI_MAP) && defined(__CET__)
# include <cet.h>
# if (__CET__ & 1) != 0
# define ENDBR_PRESENT
# endif
# define _CET_NOTRACK notrack
#else
# define _CET_ENDBR
# define _CET_NOTRACK
#endif
#endif #endif

Binary file not shown.

Binary file not shown.

BIN
win32/libffi-8.dll Normal file

Binary file not shown.

BIN
win32/libffi-8.lib Normal file

Binary file not shown.