Hello, I have attached a patch resolving reported issue on mips architecture. We believe that this fix will work also on other 32-bit big endian architectures, but additional work will be needed for 64-bit big endian. Could someone, please test this patch on other big endian architectures.
Best regards, Jurica
Description: patch resolve issues on mips big endian architecture. Author: Jurica Stanojkovic <jurica.stanojko...@imgtec.com> --- libglib-object-introspection-perl-0.016.orig/gperl-i11n-invoke-c.c +++ libglib-object-introspection-perl-0.016/gperl-i11n-invoke-c.c @@ -180,7 +180,32 @@ invoke_c_code (GICallableInfo *info, ccroak ("Could not prepare a call interface"); } - ffi_call (&cif, func_pointer, &return_value, iinfo.args); + if(iinfo.return_type_ffi==&ffi_type_sint8) + { + ffi_sarg result; + ffi_call (&cif, func_pointer, &result, iinfo.args); + return_value.v_int8=result; + } + else if(iinfo.return_type_ffi==&ffi_type_uint8) + { + ffi_arg result; + ffi_call (&cif, func_pointer, &result, iinfo.args); + return_value.v_uint8=result; + } + else if(iinfo.return_type_ffi==&ffi_type_sint16) + { + ffi_sarg result; + ffi_call (&cif, func_pointer, &result, iinfo.args); + return_value.v_int16=result; + } + else if(iinfo.return_type_ffi==&ffi_type_uint16) + { + ffi_arg result; + ffi_call (&cif, func_pointer, &result, iinfo.args); + return_value.v_uint16=result; + } + else + ffi_call (&cif, func_pointer, &return_value, iinfo.args); /* free call-scoped data */ _invoke_free_after_call_handlers (&iinfo);