/* { 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); }