mirror of
https://github.com/partic2/libffi
synced 2026-11-11 02:27:19 +00:00
Cleanup symbol exports on darwin and add architecture preprocessor checks to assist in building fat binaries (eg: i386+x86_64 on macOS or arm+aarch64 on iOS) (#450)
* x86: Ensure _efi64 suffixed symbols are not exported * x86: Ensure we do not export ffi_prep_cif_machdep Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * x86: Ensure we don't export ffi_call_win64, ffi_closure_win64, or ffi_go_closure_win64 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * closures: Silence a semantic warning libffi/src/closures.c:175:23: This function declaration is not a prototype Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch64: Ensure we don't export ffi_prep_cif_machdep Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * arm: Ensure we don't export ffi_prep_cif_machdep Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch64, arm, x86: Add architecture preprocessor checks to support easier fat builds (eg: iOS) Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * x86: Silence some static analysis warnings libffi/src/x86/ffi64.c:286:21: The left operand of '!=' is a garbage value due to array index out of bounds libffi/src/x86/ffi64.c:297:22: The left operand of '!=' is a garbage value due to array index out of bounds Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch: Use FFI_HIDDEN rather than .hidden Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * ffi.h: Don't advertise ffi_java_rvalue_to_raw, ffi_prep_java_raw_closure, and ffi_prep_java_raw_closure_loc when FFI_NATIVE_RAW_API is 0 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
This commit is contained in:
committed by
Anthony Green
parent
3ec522bc1c
commit
05a1796419
@@ -283,11 +283,13 @@ FFI_API size_t ffi_raw_size (ffi_cif *cif);
|
|||||||
packing, even on 64-bit machines. I.e. on 64-bit machines longs
|
packing, even on 64-bit machines. I.e. on 64-bit machines longs
|
||||||
and doubles are followed by an empty 64-bit word. */
|
and doubles are followed by an empty 64-bit word. */
|
||||||
|
|
||||||
|
#if !FFI_NATIVE_RAW_API
|
||||||
FFI_API
|
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);
|
||||||
|
#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);
|
||||||
@@ -414,6 +416,7 @@ ffi_prep_raw_closure_loc (ffi_raw_closure*,
|
|||||||
void *user_data,
|
void *user_data,
|
||||||
void *codeloc);
|
void *codeloc);
|
||||||
|
|
||||||
|
#if !FFI_NATIVE_RAW_API
|
||||||
FFI_API ffi_status
|
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,
|
||||||
@@ -426,6 +429,7 @@ ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
|
|||||||
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);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* FFI_CLOSURES */
|
#endif /* FFI_CLOSURES */
|
||||||
|
|
||||||
|
|||||||
+7
-4
@@ -19,6 +19,7 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
|
||||||
|
#ifdef __arm64__
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@@ -454,7 +455,7 @@ allocate_int_to_reg_or_stack (struct call_context *context,
|
|||||||
return allocate_to_stack (state, stack, size, size);
|
return allocate_to_stack (state, stack, size, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
ffi_status
|
ffi_status FFI_HIDDEN
|
||||||
ffi_prep_cif_machdep (ffi_cif *cif)
|
ffi_prep_cif_machdep (ffi_cif *cif)
|
||||||
{
|
{
|
||||||
ffi_type *rtype = cif->rtype;
|
ffi_type *rtype = cif->rtype;
|
||||||
@@ -539,9 +540,9 @@ ffi_prep_cif_machdep (ffi_cif *cif)
|
|||||||
|
|
||||||
#if defined (__APPLE__)
|
#if defined (__APPLE__)
|
||||||
/* Perform Apple-specific cif processing for variadic calls */
|
/* Perform Apple-specific cif processing for variadic calls */
|
||||||
ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif,
|
ffi_status FFI_HIDDEN
|
||||||
unsigned int nfixedargs,
|
ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs,
|
||||||
unsigned int ntotalargs)
|
unsigned int ntotalargs)
|
||||||
{
|
{
|
||||||
ffi_status status = ffi_prep_cif_machdep (cif);
|
ffi_status status = ffi_prep_cif_machdep (cif);
|
||||||
cif->aarch64_nfixedargs = nfixedargs;
|
cif->aarch64_nfixedargs = nfixedargs;
|
||||||
@@ -943,3 +944,5 @@ ffi_closure_SYSV_inner (ffi_cif *cif,
|
|||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* __arm64__ */
|
||||||
|
|||||||
+8
-6
@@ -19,6 +19,7 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
|
||||||
|
#ifdef __arm64__
|
||||||
#define LIBFFI_ASM
|
#define LIBFFI_ASM
|
||||||
#include <fficonfig.h>
|
#include <fficonfig.h>
|
||||||
#include <ffi.h>
|
#include <ffi.h>
|
||||||
@@ -198,9 +199,9 @@ CNAME(ffi_call_SYSV):
|
|||||||
cfi_endproc
|
cfi_endproc
|
||||||
|
|
||||||
.globl CNAME(ffi_call_SYSV)
|
.globl CNAME(ffi_call_SYSV)
|
||||||
|
FFI_HIDDEN(CNAME(ffi_call_SYSV))
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
.type CNAME(ffi_call_SYSV), #function
|
.type CNAME(ffi_call_SYSV), #function
|
||||||
.hidden CNAME(ffi_call_SYSV)
|
|
||||||
.size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
|
.size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -237,9 +238,9 @@ CNAME(ffi_closure_SYSV_V):
|
|||||||
cfi_endproc
|
cfi_endproc
|
||||||
|
|
||||||
.globl CNAME(ffi_closure_SYSV_V)
|
.globl CNAME(ffi_closure_SYSV_V)
|
||||||
|
FFI_HIDDEN(CNAME(ffi_closure_SYSV_V))
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
.type CNAME(ffi_closure_SYSV_V), #function
|
.type CNAME(ffi_closure_SYSV_V), #function
|
||||||
.hidden CNAME(ffi_closure_SYSV_V)
|
|
||||||
.size CNAME(ffi_closure_SYSV_V), . - CNAME(ffi_closure_SYSV_V)
|
.size CNAME(ffi_closure_SYSV_V), . - CNAME(ffi_closure_SYSV_V)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -349,9 +350,9 @@ CNAME(ffi_closure_SYSV):
|
|||||||
cfi_endproc
|
cfi_endproc
|
||||||
|
|
||||||
.globl CNAME(ffi_closure_SYSV)
|
.globl CNAME(ffi_closure_SYSV)
|
||||||
|
FFI_HIDDEN(CNAME(ffi_closure_SYSV))
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
.type CNAME(ffi_closure_SYSV), #function
|
.type CNAME(ffi_closure_SYSV), #function
|
||||||
.hidden CNAME(ffi_closure_SYSV)
|
|
||||||
.size CNAME(ffi_closure_SYSV), . - CNAME(ffi_closure_SYSV)
|
.size CNAME(ffi_closure_SYSV), . - CNAME(ffi_closure_SYSV)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -369,9 +370,9 @@ CNAME(ffi_closure_trampoline_table_page):
|
|||||||
.endr
|
.endr
|
||||||
|
|
||||||
.globl CNAME(ffi_closure_trampoline_table_page)
|
.globl CNAME(ffi_closure_trampoline_table_page)
|
||||||
|
FFI_HIDDEN(CNAME(ffi_closure_trampoline_table_page))
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
.type CNAME(ffi_closure_trampoline_table_page), #function
|
.type CNAME(ffi_closure_trampoline_table_page), #function
|
||||||
.hidden CNAME(ffi_closure_trampoline_table_page)
|
|
||||||
.size CNAME(ffi_closure_trampoline_table_page), . - CNAME(ffi_closure_trampoline_table_page)
|
.size CNAME(ffi_closure_trampoline_table_page), . - CNAME(ffi_closure_trampoline_table_page)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -396,9 +397,9 @@ CNAME(ffi_go_closure_SYSV_V):
|
|||||||
cfi_endproc
|
cfi_endproc
|
||||||
|
|
||||||
.globl CNAME(ffi_go_closure_SYSV_V)
|
.globl CNAME(ffi_go_closure_SYSV_V)
|
||||||
|
FFI_HIDDEN(CNAME(ffi_go_closure_SYSV_V))
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
.type CNAME(ffi_go_closure_SYSV_V), #function
|
.type CNAME(ffi_go_closure_SYSV_V), #function
|
||||||
.hidden CNAME(ffi_go_closure_SYSV_V)
|
|
||||||
.size CNAME(ffi_go_closure_SYSV_V), . - CNAME(ffi_go_closure_SYSV_V)
|
.size CNAME(ffi_go_closure_SYSV_V), . - CNAME(ffi_go_closure_SYSV_V)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -425,12 +426,13 @@ CNAME(ffi_go_closure_SYSV):
|
|||||||
cfi_endproc
|
cfi_endproc
|
||||||
|
|
||||||
.globl CNAME(ffi_go_closure_SYSV)
|
.globl CNAME(ffi_go_closure_SYSV)
|
||||||
|
FFI_HIDDEN(CNAME(ffi_go_closure_SYSV))
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
.type CNAME(ffi_go_closure_SYSV), #function
|
.type CNAME(ffi_go_closure_SYSV), #function
|
||||||
.hidden CNAME(ffi_go_closure_SYSV)
|
|
||||||
.size CNAME(ffi_go_closure_SYSV), . - CNAME(ffi_go_closure_SYSV)
|
.size CNAME(ffi_go_closure_SYSV), . - CNAME(ffi_go_closure_SYSV)
|
||||||
#endif
|
#endif
|
||||||
#endif /* FFI_GO_CLOSURES */
|
#endif /* FFI_GO_CLOSURES */
|
||||||
|
#endif /* __arm64__ */
|
||||||
|
|
||||||
#if defined __ELF__ && defined __linux__
|
#if defined __ELF__ && defined __linux__
|
||||||
.section .note.GNU-stack,"",%progbits
|
.section .note.GNU-stack,"",%progbits
|
||||||
|
|||||||
+5
-2
@@ -28,6 +28,7 @@
|
|||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifdef __arm__
|
||||||
#include <fficonfig.h>
|
#include <fficonfig.h>
|
||||||
#include <ffi.h>
|
#include <ffi.h>
|
||||||
#include <ffi_common.h>
|
#include <ffi_common.h>
|
||||||
@@ -210,7 +211,7 @@ ffi_prep_args_VFP (ffi_cif *cif, int flags, void *rvalue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Perform machine dependent cif processing */
|
/* Perform machine dependent cif processing */
|
||||||
ffi_status
|
ffi_status FFI_HIDDEN
|
||||||
ffi_prep_cif_machdep (ffi_cif *cif)
|
ffi_prep_cif_machdep (ffi_cif *cif)
|
||||||
{
|
{
|
||||||
int flags = 0, cabi = cif->abi;
|
int flags = 0, cabi = cif->abi;
|
||||||
@@ -301,7 +302,7 @@ ffi_prep_cif_machdep (ffi_cif *cif)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Perform machine dependent cif processing for variadic calls */
|
/* Perform machine dependent cif processing for variadic calls */
|
||||||
ffi_status
|
ffi_status FFI_HIDDEN
|
||||||
ffi_prep_cif_machdep_var (ffi_cif * cif,
|
ffi_prep_cif_machdep_var (ffi_cif * cif,
|
||||||
unsigned int nfixedargs, unsigned int ntotalargs)
|
unsigned int nfixedargs, unsigned int ntotalargs)
|
||||||
{
|
{
|
||||||
@@ -817,3 +818,5 @@ layout_vfp_args (ffi_cif * cif)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* __arm__ */
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifdef __arm__
|
||||||
#define LIBFFI_ASM
|
#define LIBFFI_ASM
|
||||||
#include <fficonfig.h>
|
#include <fficonfig.h>
|
||||||
#include <ffi.h>
|
#include <ffi.h>
|
||||||
@@ -377,6 +378,7 @@ ARM_FUNC_START(ffi_arm_trampoline)
|
|||||||
ARM_FUNC_END(ffi_arm_trampoline)
|
ARM_FUNC_END(ffi_arm_trampoline)
|
||||||
|
|
||||||
#endif /* FFI_EXEC_TRAMPOLINE_TABLE */
|
#endif /* FFI_EXEC_TRAMPOLINE_TABLE */
|
||||||
|
#endif /* __arm__ */
|
||||||
|
|
||||||
#if defined __ELF__ && defined __linux__
|
#if defined __ELF__ && defined __linux__
|
||||||
.section .note.GNU-stack,"",%progbits
|
.section .note.GNU-stack,"",%progbits
|
||||||
|
|||||||
+1
-1
@@ -172,7 +172,7 @@ struct ffi_trampoline_table
|
|||||||
|
|
||||||
struct ffi_trampoline_table_entry
|
struct ffi_trampoline_table_entry
|
||||||
{
|
{
|
||||||
void *(*trampoline) ();
|
void *(*trampoline) (void);
|
||||||
ffi_trampoline_table_entry *next;
|
ffi_trampoline_table_entry *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -29,7 +29,7 @@
|
|||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
#ifndef __x86_64__
|
#ifdef __i386__
|
||||||
#include <ffi.h>
|
#include <ffi.h>
|
||||||
#include <ffi_common.h>
|
#include <ffi_common.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@@ -756,4 +756,4 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue)
|
|||||||
ffi_call_i386 (frame, stack);
|
ffi_call_i386 (frame, stack);
|
||||||
}
|
}
|
||||||
#endif /* !FFI_NO_RAW_API */
|
#endif /* !FFI_NO_RAW_API */
|
||||||
#endif /* !__x86_64__ */
|
#endif /* __i386__ */
|
||||||
|
|||||||
+3
-3
@@ -282,7 +282,7 @@ classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
|
|||||||
|
|
||||||
/* The X86_64_SSEUP_CLASS should be always preceded by
|
/* The X86_64_SSEUP_CLASS should be always preceded by
|
||||||
X86_64_SSE_CLASS or X86_64_SSEUP_CLASS. */
|
X86_64_SSE_CLASS or X86_64_SSEUP_CLASS. */
|
||||||
if (classes[i] == X86_64_SSEUP_CLASS
|
if (i > 1 && classes[i] == X86_64_SSEUP_CLASS
|
||||||
&& classes[i - 1] != X86_64_SSE_CLASS
|
&& classes[i - 1] != X86_64_SSE_CLASS
|
||||||
&& classes[i - 1] != X86_64_SSEUP_CLASS)
|
&& classes[i - 1] != X86_64_SSEUP_CLASS)
|
||||||
{
|
{
|
||||||
@@ -293,7 +293,7 @@ classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
|
|||||||
|
|
||||||
/* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS,
|
/* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS,
|
||||||
everything should be passed in memory. */
|
everything should be passed in memory. */
|
||||||
if (classes[i] == X86_64_X87UP_CLASS
|
if (i > 1 && classes[i] == X86_64_X87UP_CLASS
|
||||||
&& (classes[i - 1] != X86_64_X87_CLASS))
|
&& (classes[i - 1] != X86_64_X87_CLASS))
|
||||||
{
|
{
|
||||||
/* The first one should never be X86_64_X87UP_CLASS. */
|
/* The first one should never be X86_64_X87UP_CLASS. */
|
||||||
@@ -394,7 +394,7 @@ extern ffi_status
|
|||||||
ffi_prep_cif_machdep_efi64(ffi_cif *cif);
|
ffi_prep_cif_machdep_efi64(ffi_cif *cif);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ffi_status
|
ffi_status FFI_HIDDEN
|
||||||
ffi_prep_cif_machdep (ffi_cif *cif)
|
ffi_prep_cif_machdep (ffi_cif *cif)
|
||||||
{
|
{
|
||||||
int gprcount, ssecount, i, avn, ngpr, nsse;
|
int gprcount, ssecount, i, avn, ngpr, nsse;
|
||||||
|
|||||||
+5
-2
@@ -25,6 +25,7 @@
|
|||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifdef __x86_64__
|
||||||
#include <ffi.h>
|
#include <ffi.h>
|
||||||
#include <ffi_common.h>
|
#include <ffi_common.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -33,7 +34,7 @@
|
|||||||
#ifdef X86_WIN64
|
#ifdef X86_WIN64
|
||||||
#define EFI64(name) name
|
#define EFI64(name) name
|
||||||
#else
|
#else
|
||||||
#define EFI64(name) name##_efi64
|
#define EFI64(name) FFI_HIDDEN name##_efi64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct win64_call_frame
|
struct win64_call_frame
|
||||||
@@ -48,7 +49,7 @@ struct win64_call_frame
|
|||||||
extern void ffi_call_win64 (void *stack, struct win64_call_frame *,
|
extern void ffi_call_win64 (void *stack, struct win64_call_frame *,
|
||||||
void *closure) FFI_HIDDEN;
|
void *closure) FFI_HIDDEN;
|
||||||
|
|
||||||
ffi_status
|
ffi_status FFI_HIDDEN
|
||||||
EFI64(ffi_prep_cif_machdep)(ffi_cif *cif)
|
EFI64(ffi_prep_cif_machdep)(ffi_cif *cif)
|
||||||
{
|
{
|
||||||
int flags, n;
|
int flags, n;
|
||||||
@@ -306,3 +307,5 @@ ffi_closure_win64_inner(ffi_cif *cif,
|
|||||||
fun (cif, rvalue, avalue, user_data);
|
fun (cif, rvalue, avalue, user_data);
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* __x86_64__ */
|
||||||
|
|||||||
+2
-2
@@ -26,7 +26,7 @@
|
|||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
#ifndef __x86_64__
|
#ifdef __i386__
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
|
|
||||||
#define LIBFFI_ASM
|
#define LIBFFI_ASM
|
||||||
@@ -1122,7 +1122,7 @@ L(EFDE9):
|
|||||||
#endif /* __APPLE__ */
|
#endif /* __APPLE__ */
|
||||||
|
|
||||||
#endif /* ifndef _MSC_VER */
|
#endif /* ifndef _MSC_VER */
|
||||||
#endif /* ifndef __x86_64__ */
|
#endif /* ifdef __i386__ */
|
||||||
|
|
||||||
#if defined __ELF__ && defined __linux__
|
#if defined __ELF__ && defined __linux__
|
||||||
.section .note.GNU-stack,"",@progbits
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#ifdef __x86_64__
|
||||||
#define LIBFFI_ASM
|
#define LIBFFI_ASM
|
||||||
#include <fficonfig.h>
|
#include <fficonfig.h>
|
||||||
#include <ffi.h>
|
#include <ffi.h>
|
||||||
@@ -42,6 +43,7 @@
|
|||||||
|
|
||||||
.align 8
|
.align 8
|
||||||
.globl C(ffi_call_win64)
|
.globl C(ffi_call_win64)
|
||||||
|
FFI_HIDDEN(C(ffi_call_win64))
|
||||||
|
|
||||||
SEH(.seh_proc ffi_call_win64)
|
SEH(.seh_proc ffi_call_win64)
|
||||||
C(ffi_call_win64):
|
C(ffi_call_win64):
|
||||||
@@ -169,6 +171,7 @@ E(0b, FFI_TYPE_SMALL_STRUCT_4B)
|
|||||||
|
|
||||||
.align 8
|
.align 8
|
||||||
.globl C(ffi_go_closure_win64)
|
.globl C(ffi_go_closure_win64)
|
||||||
|
FFI_HIDDEN(C(ffi_go_closure_win64))
|
||||||
|
|
||||||
SEH(.seh_proc ffi_go_closure_win64)
|
SEH(.seh_proc ffi_go_closure_win64)
|
||||||
C(ffi_go_closure_win64):
|
C(ffi_go_closure_win64):
|
||||||
@@ -188,6 +191,7 @@ C(ffi_go_closure_win64):
|
|||||||
|
|
||||||
.align 8
|
.align 8
|
||||||
.globl C(ffi_closure_win64)
|
.globl C(ffi_closure_win64)
|
||||||
|
FFI_HIDDEN(C(ffi_closure_win64))
|
||||||
|
|
||||||
SEH(.seh_proc ffi_closure_win64)
|
SEH(.seh_proc ffi_closure_win64)
|
||||||
C(ffi_closure_win64):
|
C(ffi_closure_win64):
|
||||||
@@ -226,6 +230,7 @@ C(ffi_closure_win64):
|
|||||||
|
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
SEH(.seh_endproc)
|
SEH(.seh_endproc)
|
||||||
|
#endif /* __x86_64__ */
|
||||||
|
|
||||||
#if defined __ELF__ && defined __linux__
|
#if defined __ELF__ && defined __linux__
|
||||||
.section .note.GNU-stack,"",@progbits
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
|||||||
Reference in New Issue
Block a user