http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56033
--- Comment #6 from Andreas Krebbel <krebbel at gcc dot gnu.org> 2013-04-08 11:24:22 UTC --- Just noticed the example in libffi documentation which suggests that casting to the return type pointer should work: /* Acts like puts with the file given at time of enclosure. */ void puts_binding(ffi_cif *cif, unsigned int *ret, void* args[], FILE *stream) @{ *ret = fputs(*(char **)args[0], stream); @}