diff options
| author | Raghuram Subramani <raghus2247@gmail.com> | 2022-06-19 19:47:51 +0530 | 
|---|---|---|
| committer | Raghuram Subramani <raghus2247@gmail.com> | 2022-06-19 19:47:51 +0530 | 
| commit | 4fd287655a72b9aea14cdac715ad5b90ed082ed2 (patch) | |
| tree | 65d393bc0e699dd12d05b29ba568e04cea666207 /circuitpython/lib/libffi/testsuite/libffi.go/closure1.c | |
| parent | 0150f70ce9c39e9e6dd878766c0620c85e47bed0 (diff) | |
add circuitpython code
Diffstat (limited to 'circuitpython/lib/libffi/testsuite/libffi.go/closure1.c')
| -rw-r--r-- | circuitpython/lib/libffi/testsuite/libffi.go/closure1.c | 28 | 
1 files changed, 28 insertions, 0 deletions
| diff --git a/circuitpython/lib/libffi/testsuite/libffi.go/closure1.c b/circuitpython/lib/libffi/testsuite/libffi.go/closure1.c new file mode 100644 index 0000000..7b34afc --- /dev/null +++ b/circuitpython/lib/libffi/testsuite/libffi.go/closure1.c @@ -0,0 +1,28 @@ +/* { dg-do run } */ + +#include "ffitest.h" + +void doit(ffi_cif *cif, void *rvalue, void **avalue, void *closure) +{ +  (void)cif; +  (void)avalue; +  *(void **)rvalue = closure; +} + +typedef void * (*FN)(void); + +int main() +{ +  ffi_cif cif; +  ffi_go_closure cl; +  void *result; + +  CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK); +  CHECK(ffi_prep_go_closure(&cl, &cif, doit) == FFI_OK); + +  ffi_call_go(&cif, FFI_FN(*(FN *)&cl), &result, NULL, &cl); + +  CHECK(result == &cl); + +  exit(0); +} | 
