summaryrefslogtreecommitdiff
path: root/src/aarch64
diff options
context:
space:
mode:
authorJeremy Huddleston Sequoia <jeremyhu@users.noreply.github.com>2021-03-20 06:06:28 -0700
committerGitHub <noreply@github.com>2021-03-20 09:06:28 -0400
commitd271dbe0a8b230e566fa3385babdc9cc0ca214ea (patch)
treea65294110f463767e8f3f1f0af902f8b3c6a231b /src/aarch64
parentbae695da367b6abd83152f8f1e9b1a8b79794c8d (diff)
downloadlibffi-d271dbe0a8b230e566fa3385babdc9cc0ca214ea.tar.gz
Add some missing #if conditionals from Apple's code drop (#620)
* arm/aarch64: Add FFI_CLOSURES conditionals where appropriate Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> * aarch64: Don't emit the do_closure label when building without FFI_GO_CLOSURES Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Diffstat (limited to 'src/aarch64')
-rw-r--r--src/aarch64/ffi.c4
-rw-r--r--src/aarch64/sysv.S5
2 files changed, 9 insertions, 0 deletions
diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c
index 8e24a96..fccc7f2 100644
--- a/src/aarch64/ffi.c
+++ b/src/aarch64/ffi.c
@@ -770,6 +770,8 @@ ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
ffi_call_int (cif, fn, rvalue, avalue, NULL);
}
+#if FFI_CLOSURES
+
#ifdef FFI_GO_CLOSURES
void
ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue,
@@ -1054,4 +1056,6 @@ ffi_tramp_arch (size_t *tramp_size, size_t *map_size)
}
#endif
+#endif /* FFI_CLOSURES */
+
#endif /* (__aarch64__) || defined(__arm64__)|| defined (_M_ARM64)*/
diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S
index a3c1508..bc10da8 100644
--- a/src/aarch64/sysv.S
+++ b/src/aarch64/sysv.S
@@ -213,6 +213,8 @@ CNAME(ffi_call_SYSV):
.size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
#endif
+#if FFI_CLOSURES
+
/* ffi_closure_SYSV
Closure invocation glue. This is the low level code invoked directly by
@@ -271,7 +273,9 @@ CNAME(ffi_closure_SYSV):
/* Load ffi_closure_inner arguments. */
ldp PTR_REG(0), PTR_REG(1), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET] /* load cif, fn */
ldr PTR_REG(2), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET+PTR_SIZE*2] /* load user_data */
+#ifdef FFI_GO_CLOSURES
.Ldo_closure:
+#endif
add x3, sp, #16 /* load context */
add x4, sp, #ffi_closure_SYSV_FS /* load stack */
add x5, sp, #16+CALL_CONTEXT_SIZE /* load rvalue */
@@ -513,6 +517,7 @@ CNAME(ffi_go_closure_SYSV):
.size CNAME(ffi_go_closure_SYSV), . - CNAME(ffi_go_closure_SYSV)
#endif
#endif /* FFI_GO_CLOSURES */
+#endif /* FFI_CLOSURES */
#endif /* __arm64__ */
#if defined __ELF__ && defined __linux__