From cc4795b7e8f1c034784e6e7947ccb2544de7691a Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sat, 3 Jul 2021 15:54:19 +0300 Subject: [PATCH] update ffi to 3.4.2 --- deps/ffi/include/_aedi_arm64_ffi.h | 41 ++++++++++++++-------- deps/ffi/include/_aedi_arm64_ffitarget.h | 15 +++++--- deps/ffi/include/_aedi_x86_64_ffi.h | 41 ++++++++++++++-------- deps/ffi/include/_aedi_x86_64_ffitarget.h | 19 ++++++++-- deps/ffi/lib/libffi.a | Bin 120608 -> 124920 bytes deps/ffi/lib/pkgconfig/libffi.pc | 2 +- 6 files changed, 82 insertions(+), 36 deletions(-) diff --git a/deps/ffi/include/_aedi_arm64_ffi.h b/deps/ffi/include/_aedi_arm64_ffi.h index 8b35bda8..bf5ddc8d 100644 --- a/deps/ffi/include/_aedi_arm64_ffi.h +++ b/deps/ffi/include/_aedi_arm64_ffi.h @@ -1,6 +1,7 @@ /* -----------------------------------------------------------------*-C-*- - libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green - - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + libffi 3.4.2 + - 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 obtaining a copy of this software and associated documentation @@ -217,7 +218,8 @@ FFI_EXTERN ffi_type ffi_type_complex_longdouble; typedef enum { FFI_OK = 0, FFI_BAD_TYPEDEF, - FFI_BAD_ABI + FFI_BAD_ABI, + FFI_BAD_ARGTYPE } ffi_status; typedef struct { @@ -269,7 +271,7 @@ typedef ffi_raw ffi_java_raw; #endif -FFI_API +FFI_API void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, @@ -310,7 +312,10 @@ typedef struct { void *trampoline_table; void *trampoline_table_entry; #else - char tramp[FFI_TRAMPOLINE_SIZE]; + union { + char tramp[FFI_TRAMPOLINE_SIZE]; + void *ftramp; + }; #endif ffi_cif *cif; 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_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 *, @@ -363,8 +376,8 @@ typedef struct { #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 + /* 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*); @@ -389,8 +402,8 @@ typedef struct { #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 + /* 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*); @@ -451,7 +464,7 @@ FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, /* ---- Public interface definition -------------------------------------- */ -FFI_API +FFI_API ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, @@ -484,18 +497,18 @@ ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, #endif /* 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_FLOAT 2 +#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_UINT8 5 #define FFI_TYPE_SINT8 6 -#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_UINT16 7 #define FFI_TYPE_SINT16 8 #define FFI_TYPE_UINT32 9 #define FFI_TYPE_SINT32 10 diff --git a/deps/ffi/include/_aedi_arm64_ffitarget.h b/deps/ffi/include/_aedi_arm64_ffitarget.h index ecb6d2de..d5622e13 100644 --- a/deps/ffi/include/_aedi_arm64_ffitarget.h +++ b/deps/ffi/include/_aedi_arm64_ffitarget.h @@ -32,7 +32,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define FFI_SIZEOF_JAVA_RAW 4 typedef unsigned long long ffi_arg; typedef signed long long ffi_sarg; -#elif defined(_M_ARM64) +#elif defined(_WIN32) #define FFI_SIZEOF_ARG 8 typedef unsigned long long ffi_arg; typedef signed long long ffi_sarg; @@ -45,8 +45,13 @@ typedef enum ffi_abi { FFI_FIRST_ABI = 0, FFI_SYSV, + FFI_WIN64, FFI_LAST_ABI, +#if defined(_WIN32) + FFI_DEFAULT_ABI = FFI_WIN64 +#else FFI_DEFAULT_ABI = FFI_SYSV +#endif } ffi_abi; #endif @@ -69,22 +74,22 @@ typedef enum ffi_abi #define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE #endif -#ifdef _M_ARM64 +#ifdef _WIN32 #define FFI_EXTRA_CIF_FIELDS unsigned is_variadic #endif +#define FFI_TARGET_SPECIFIC_VARIADIC /* ---- Internal ---- */ #if defined (__APPLE__) -#define FFI_TARGET_SPECIFIC_VARIADIC #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 a new static chain is chosen. */ #define FFI_GO_CLOSURES 1 #endif -#ifndef _M_ARM64 +#ifndef _WIN32 /* No complex type on Windows */ #define FFI_TARGET_HAS_COMPLEX_TYPE #endif diff --git a/deps/ffi/include/_aedi_x86_64_ffi.h b/deps/ffi/include/_aedi_x86_64_ffi.h index acbb3783..45700d0b 100644 --- a/deps/ffi/include/_aedi_x86_64_ffi.h +++ b/deps/ffi/include/_aedi_x86_64_ffi.h @@ -1,6 +1,7 @@ /* -----------------------------------------------------------------*-C-*- - libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green - - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + libffi 3.4.2 + - 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 obtaining a copy of this software and associated documentation @@ -217,7 +218,8 @@ FFI_EXTERN ffi_type ffi_type_complex_longdouble; typedef enum { FFI_OK = 0, FFI_BAD_TYPEDEF, - FFI_BAD_ABI + FFI_BAD_ABI, + FFI_BAD_ARGTYPE } ffi_status; typedef struct { @@ -269,7 +271,7 @@ typedef ffi_raw ffi_java_raw; #endif -FFI_API +FFI_API void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, @@ -310,7 +312,10 @@ typedef struct { void *trampoline_table; void *trampoline_table_entry; #else - char tramp[FFI_TRAMPOLINE_SIZE]; + union { + char tramp[FFI_TRAMPOLINE_SIZE]; + void *ftramp; + }; #endif ffi_cif *cif; 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_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 *, @@ -363,8 +376,8 @@ typedef struct { #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 + /* 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*); @@ -389,8 +402,8 @@ typedef struct { #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 + /* 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*); @@ -451,7 +464,7 @@ FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, /* ---- Public interface definition -------------------------------------- */ -FFI_API +FFI_API ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, @@ -484,18 +497,18 @@ ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, #endif /* 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_FLOAT 2 +#define FFI_TYPE_FLOAT 2 #define FFI_TYPE_DOUBLE 3 #if 1 #define FFI_TYPE_LONGDOUBLE 4 #else #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE #endif -#define FFI_TYPE_UINT8 5 +#define FFI_TYPE_UINT8 5 #define FFI_TYPE_SINT8 6 -#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_UINT16 7 #define FFI_TYPE_SINT16 8 #define FFI_TYPE_UINT32 9 #define FFI_TYPE_SINT32 10 diff --git a/deps/ffi/include/_aedi_x86_64_ffitarget.h b/deps/ffi/include/_aedi_x86_64_ffitarget.h index 85ccedfe..f454341a 100644 --- a/deps/ffi/include/_aedi_x86_64_ffitarget.h +++ b/deps/ffi/include/_aedi_x86_64_ffitarget.h @@ -136,12 +136,27 @@ typedef enum ffi_abi { #if defined (X86_64) || defined(X86_WIN64) \ || (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 #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 */ #endif +#if !defined(GENERATE_LIBFFI_MAP) && defined(__CET__) +# include +# if (__CET__ & 1) != 0 +# define ENDBR_PRESENT +# endif +# define _CET_NOTRACK notrack +#else +# define _CET_ENDBR +# define _CET_NOTRACK +#endif + #endif diff --git a/deps/ffi/lib/libffi.a b/deps/ffi/lib/libffi.a index 199e65e916a575718dbe4677ad4f9c06d810488a..4ee37ad65bf1496fd696aeb436e01fe38f425108 100644 GIT binary patch delta 19052 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 L-*;TzBE|m&sB-E$ delta 16047 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