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