diff options
author | Jeremy Huddleston Sequoia <jeremyhu@users.noreply.github.com> | 2020-10-27 07:06:21 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-27 10:06:21 -0400 |
commit | 032b3cd6f7850f3ebc1269eeab7d1db3ea518d29 (patch) | |
tree | 617af1d0b461d33857dec398c577b323427cf5dd /src/x86 | |
parent | 93cf288ddd59c7cb203c1aba25de5e5b8f308da6 (diff) | |
download | libffi-032b3cd6f7850f3ebc1269eeab7d1db3ea518d29.tar.gz |
Support building x86 and arm64 without FFI_GO_CLOSURES (#586)
* x86: Support building without FFI_GO_CLOSURES
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
* arm: Support building without FFI_GO_CLOSURES
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Diffstat (limited to 'src/x86')
-rw-r--r-- | src/x86/ffi.c | 6 | ||||
-rw-r--r-- | src/x86/ffi64.c | 7 | ||||
-rw-r--r-- | src/x86/ffiw64.c | 5 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/x86/ffi.c b/src/x86/ffi.c index 5903793..5f7fd81 100644 --- a/src/x86/ffi.c +++ b/src/x86/ffi.c @@ -397,12 +397,14 @@ ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ffi_call_int (cif, fn, rvalue, avalue, NULL); } +#ifdef FFI_GO_CLOSURES void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue, void *closure) { ffi_call_int (cif, fn, rvalue, avalue, closure); } +#endif /** private members **/ @@ -575,6 +577,8 @@ ffi_prep_closure_loc (ffi_closure* closure, return FFI_OK; } +#ifdef FFI_GO_CLOSURES + void FFI_HIDDEN ffi_go_closure_EAX(void); void FFI_HIDDEN ffi_go_closure_ECX(void); void FFI_HIDDEN ffi_go_closure_STDCALL(void); @@ -611,6 +615,8 @@ ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, return FFI_OK; } +#endif /* FFI_GO_CLOSURES */ + /* ------- Native raw API support -------------------------------- */ #if !FFI_NO_RAW_API diff --git a/src/x86/ffi64.c b/src/x86/ffi64.c index ed82e23..39f9598 100644 --- a/src/x86/ffi64.c +++ b/src/x86/ffi64.c @@ -688,6 +688,8 @@ ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ffi_call_int (cif, fn, rvalue, avalue, NULL); } +#ifdef FFI_GO_CLOSURES + #ifndef __ILP32__ extern void ffi_call_go_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, @@ -708,6 +710,7 @@ ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_call_int (cif, fn, rvalue, avalue, closure); } +#endif /* FFI_GO_CLOSURES */ extern void ffi_closure_unix64(void) FFI_HIDDEN; extern void ffi_closure_unix64_sse(void) FFI_HIDDEN; @@ -856,6 +859,8 @@ ffi_closure_unix64_inner(ffi_cif *cif, return flags; } +#ifdef FFI_GO_CLOSURES + extern void ffi_go_closure_unix64(void) FFI_HIDDEN; extern void ffi_go_closure_unix64_sse(void) FFI_HIDDEN; @@ -885,4 +890,6 @@ ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, return FFI_OK; } +#endif /* FFI_GO_CLOSURES */ + #endif /* __x86_64__ */ diff --git a/src/x86/ffiw64.c b/src/x86/ffiw64.c index 034dffd..a43a9eb 100644 --- a/src/x86/ffiw64.c +++ b/src/x86/ffiw64.c @@ -187,7 +187,10 @@ EFI64(ffi_call_go)(ffi_cif *cif, void (*fn)(void), void *rvalue, extern void ffi_closure_win64(void) FFI_HIDDEN; + +#ifdef FFI_GO_CLOSURES extern void ffi_go_closure_win64(void) FFI_HIDDEN; +#endif ffi_status EFI64(ffi_prep_closure_loc)(ffi_closure* closure, @@ -227,6 +230,7 @@ EFI64(ffi_prep_closure_loc)(ffi_closure* closure, return FFI_OK; } +#ifdef FFI_GO_CLOSURES ffi_status EFI64(ffi_prep_go_closure)(ffi_go_closure* closure, ffi_cif* cif, void (*fun)(ffi_cif*, void*, void**, void*)) @@ -246,6 +250,7 @@ EFI64(ffi_prep_go_closure)(ffi_go_closure* closure, ffi_cif* cif, return FFI_OK; } +#endif struct win64_closure_frame { |