summaryrefslogtreecommitdiff
path: root/src/x86
diff options
context:
space:
mode:
authorJeremy Huddleston Sequoia <jeremyhu@users.noreply.github.com>2020-10-27 07:06:21 -0700
committerGitHub <noreply@github.com>2020-10-27 10:06:21 -0400
commit032b3cd6f7850f3ebc1269eeab7d1db3ea518d29 (patch)
tree617af1d0b461d33857dec398c577b323427cf5dd /src/x86
parent93cf288ddd59c7cb203c1aba25de5e5b8f308da6 (diff)
downloadlibffi-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.c6
-rw-r--r--src/x86/ffi64.c7
-rw-r--r--src/x86/ffiw64.c5
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
{