diff --git a/src/x86/ffi.c b/src/x86/ffi.c index 897498f6..021f6832 100644 --- a/src/x86/ffi.c +++ b/src/x86/ffi.c @@ -345,6 +345,15 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG); size_t align = FFI_SIZEOF_ARG; + /* Issue 434: For thiscall and fastcall, if the paramter passed + as 64-bit integer or struct, all following integer paramters + will be passed on stack. */ + if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL) + && (t == FFI_TYPE_SINT64 + || t == FFI_TYPE_UINT64 + || t == FFI_TYPE_STRUCT)) + narg_reg = 2; + /* Alignment rules for arguments are quite complex. Vectors and structures with 16 byte alignment get it. Note that long double on Darwin does have 16 byte alignment, and does not get this @@ -475,6 +484,15 @@ ffi_closure_inner (struct closure_frame *frame, char *stack) if (t == FFI_TYPE_STRUCT && ty->alignment >= 16) align = 16; + /* Issue 434: For thiscall and fastcall, if the paramter passed + as 64-bit integer or struct, all following integer paramters + will be passed on stack. */ + if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL) + && (t == FFI_TYPE_SINT64 + || t == FFI_TYPE_UINT64 + || t == FFI_TYPE_STRUCT)) + narg_reg = 2; + if (dir < 0) { /* ??? These reverse argument ABIs are probably too old diff --git a/testsuite/lib/libffi.exp b/testsuite/lib/libffi.exp index d5880ed5..76ef29c3 100644 --- a/testsuite/lib/libffi.exp +++ b/testsuite/lib/libffi.exp @@ -317,22 +317,23 @@ proc run-many-tests { testcases extra_flags } { set targetabis { "" } if [string match $compiler_vendor "gnu"] { - if [istarget "i?86-*-*"] { + if [libffi_feature_test "#ifdef __i386__"] { set targetabis { "" "-DABI_NUM=FFI_STDCALL -DABI_ATTR=__STDCALL__" "-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__" "-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__" } + } elseif { [istarget "x86_64-*-*"] \ + && [libffi_feature_test "#if !defined __ILP32__ \ + && !defined __i386__"] } { + set targetabis { + "" + "-DABI_NUM=FFI_WIN64 -DABI_ATTR=__MSABI__" + } } - # elseif { [istarget "x86_64-*-*"] \ - # && [libffi_feature_test "#ifndef __ILP32__"] } { - # set targetabis { - # "" - # "-DABI_NUM=FFI_WIN64 -DABI_ATTR=__MSABI__" - # } - # } } + set common [ concat $common $extra_flags ] foreach test $testcases { set testname [file tail $test] diff --git a/testsuite/libffi.bhaible/test-callback.c b/testsuite/libffi.bhaible/test-callback.c index 7ddee68b..c2633c79 100644 --- a/testsuite/libffi.bhaible/test-callback.c +++ b/testsuite/libffi.bhaible/test-callback.c @@ -1276,7 +1276,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_void); PREP_CALLBACK(cif,v_v_simulator,(void*)&v_v); - ((void (*) (void)) callback_code) (); + ((void (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); #endif @@ -1294,7 +1294,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_sint); PREP_CALLBACK(cif,i_v_simulator,(void*)&i_v); - ir = ((int (*) (void)) callback_code) (); + ir = ((int (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->%d\n",ir); @@ -1312,7 +1312,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_sint); PREP_CALLBACK(cif,i_i_simulator,(void*)&i_i); - ir = ((int (*) (int)) callback_code) (i1); + ir = ((int (ABI_ATTR *) (int)) callback_code) (i1); } FREE_CALLBACK(); fprintf(out,"->%d\n",ir); @@ -1330,7 +1330,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_sint); PREP_CALLBACK(cif,i_i2_simulator,(void*)&i_i2); - ir = ((int (*) (int,int)) callback_code) (i1,i2); + ir = ((int (ABI_ATTR *) (int,int)) callback_code) (i1,i2); } FREE_CALLBACK(); fprintf(out,"->%d\n",ir); @@ -1348,7 +1348,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_sint); PREP_CALLBACK(cif,i_i4_simulator,(void*)&i_i4); - ir = ((int (*) (int,int,int,int)) callback_code) (i1,i2,i3,i4); + ir = ((int (ABI_ATTR *) (int,int,int,int)) callback_code) (i1,i2,i3,i4); } FREE_CALLBACK(); fprintf(out,"->%d\n",ir); @@ -1366,7 +1366,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_sint); PREP_CALLBACK(cif,i_i8_simulator,(void*)&i_i8); - ir = ((int (*) (int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8); + ir = ((int (ABI_ATTR *) (int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8); } FREE_CALLBACK(); fprintf(out,"->%d\n",ir); @@ -1384,7 +1384,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_sint); PREP_CALLBACK(cif,i_i16_simulator,(void*)&i_i16); - ir = ((int (*) (int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16); + ir = ((int (ABI_ATTR *) (int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16); } FREE_CALLBACK(); fprintf(out,"->%d\n",ir); @@ -1406,7 +1406,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f_simulator,(void*)&f_f); - fr = ((float (*) (float)) callback_code) (f1); + fr = ((float (ABI_ATTR *) (float)) callback_code) (f1); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1424,7 +1424,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f2_simulator,(void*)&f_f2); - fr = ((float (*) (float,float)) callback_code) (f1,f2); + fr = ((float (ABI_ATTR *) (float,float)) callback_code) (f1,f2); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1442,7 +1442,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f4_simulator,(void*)&f_f4); - fr = ((float (*) (float,float,float,float)) callback_code) (f1,f2,f3,f4); + fr = ((float (ABI_ATTR *) (float,float,float,float)) callback_code) (f1,f2,f3,f4); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1460,7 +1460,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f8_simulator,(void*)&f_f8); - fr = ((float (*) (float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1478,7 +1478,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f16_simulator,(void*)&f_f16); - fr = ((float (*) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1496,7 +1496,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f24_simulator,(void*)&f_f24); - fr = ((float (*) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1519,7 +1519,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d_simulator,(void*)&d_d); - dr = ((double (*) (double)) callback_code) (d1); + dr = ((double (ABI_ATTR *) (double)) callback_code) (d1); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1537,7 +1537,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d2_simulator,(void*)&d_d2); - dr = ((double (*) (double,double)) callback_code) (d1,d2); + dr = ((double (ABI_ATTR *) (double,double)) callback_code) (d1,d2); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1555,7 +1555,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d4_simulator,(void*)&d_d4); - dr = ((double (*) (double,double,double,double)) callback_code) (d1,d2,d3,d4); + dr = ((double (ABI_ATTR *) (double,double,double,double)) callback_code) (d1,d2,d3,d4); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1573,7 +1573,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d8_simulator,(void*)&d_d8); - dr = ((double (*) (double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1591,7 +1591,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d16_simulator,(void*)&d_d16); - dr = ((double (*) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1613,7 +1613,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_pointer); PREP_CALLBACK(cif,vp_vpdpcpsp_simulator,(void*)&vp_vpdpcpsp); - vpr = ((void* (*) (void*,double*,char*,Int*)) callback_code) (&uc1,&d2,str3,&I4); + vpr = ((void* (ABI_ATTR *) (void*,double*,char*,Int*)) callback_code) (&uc1,&d2,str3,&I4); } FREE_CALLBACK(); fprintf(out,"->0x%p\n",vpr); @@ -1639,7 +1639,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_uchar); PREP_CALLBACK(cif,uc_ucsil_simulator,(void*)&uc_ucsil); - ucr = ((uchar (*) (uchar,ushort,uint,ulong)) callback_code) (uc1,us2,ui3,ul4); + ucr = ((uchar (ABI_ATTR *) (uchar,ushort,uint,ulong)) callback_code) (uc1,us2,ui3,ul4); } FREE_CALLBACK(); fprintf(out,"->%u\n",ucr); @@ -1657,7 +1657,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_iidd_simulator,(void*)&d_iidd); - dr = ((double (*) (int,int,double,double)) callback_code) (i1,i2,d3,d4); + dr = ((double (ABI_ATTR *) (int,int,double,double)) callback_code) (i1,i2,d3,d4); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1675,7 +1675,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_iiidi_simulator,(void*)&d_iiidi); - dr = ((double (*) (int,int,int,double,int)) callback_code) (i1,i2,i3,d4,i5); + dr = ((double (ABI_ATTR *) (int,int,int,double,int)) callback_code) (i1,i2,i3,d4,i5); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1693,7 +1693,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_idid_simulator,(void*)&d_idid); - dr = ((double (*) (int,double,int,double)) callback_code) (i1,d2,i3,d4); + dr = ((double (ABI_ATTR *) (int,double,int,double)) callback_code) (i1,d2,i3,d4); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1711,7 +1711,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_fdi_simulator,(void*)&d_fdi); - dr = ((double (*) (float,double,int)) callback_code) (f1,d2,i3); + dr = ((double (ABI_ATTR *) (float,double,int)) callback_code) (f1,d2,i3); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1729,7 +1729,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_ushort); PREP_CALLBACK(cif,us_cdcd_simulator,(void*)&us_cdcd); - usr = ((ushort (*) (char,double,char,double)) callback_code) (c1,d2,c3,d4); + usr = ((ushort (ABI_ATTR *) (char,double,char,double)) callback_code) (c1,d2,c3,d4); } FREE_CALLBACK(); fprintf(out,"->%u\n",usr); @@ -1747,7 +1747,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_iiilli_simulator,(void*)&ll_iiilli); - llr = ((long long (*) (int,int,int,long long,int)) callback_code) (i1,i2,i3,ll1,i13); + llr = ((long long (ABI_ATTR *) (int,int,int,long long,int)) callback_code) (i1,i2,i3,ll1,i13); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -1765,7 +1765,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_flli_simulator,(void*)&ll_flli); - llr = ((long long (*) (float,long long,int)) callback_code) (f13,ll1,i13); + llr = ((long long (ABI_ATTR *) (float,long long,int)) callback_code) (f13,ll1,i13); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -1783,7 +1783,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_fi_simulator,(void*)&f_fi); - fr = ((float (*) (float,int)) callback_code) (f1,i9); + fr = ((float (ABI_ATTR *) (float,int)) callback_code) (f1,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1801,7 +1801,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f2i_simulator,(void*)&f_f2i); - fr = ((float (*) (float,float,int)) callback_code) (f1,f2,i9); + fr = ((float (ABI_ATTR *) (float,float,int)) callback_code) (f1,f2,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1819,7 +1819,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f3i_simulator,(void*)&f_f3i); - fr = ((float (*) (float,float,float,int)) callback_code) (f1,f2,f3,i9); + fr = ((float (ABI_ATTR *) (float,float,float,int)) callback_code) (f1,f2,f3,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1837,7 +1837,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f4i_simulator,(void*)&f_f4i); - fr = ((float (*) (float,float,float,float,int)) callback_code) (f1,f2,f3,f4,i9); + fr = ((float (ABI_ATTR *) (float,float,float,float,int)) callback_code) (f1,f2,f3,f4,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1855,7 +1855,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f7i_simulator,(void*)&f_f7i); - fr = ((float (*) (float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,i9); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1873,7 +1873,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f8i_simulator,(void*)&f_f8i); - fr = ((float (*) (float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,i9); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1891,7 +1891,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f13i_simulator,(void*)&f_f13i); - fr = ((float (*) (float,float,float,float,float,float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -1909,7 +1909,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_di_simulator,(void*)&d_di); - dr = ((double (*) (double,int)) callback_code) (d1,i9); + dr = ((double (ABI_ATTR *) (double,int)) callback_code) (d1,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1927,7 +1927,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d2i_simulator,(void*)&d_d2i); - dr = ((double (*) (double,double,int)) callback_code) (d1,d2,i9); + dr = ((double (ABI_ATTR *) (double,double,int)) callback_code) (d1,d2,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1945,7 +1945,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d3i_simulator,(void*)&d_d3i); - dr = ((double (*) (double,double,double,int)) callback_code) (d1,d2,d3,i9); + dr = ((double (ABI_ATTR *) (double,double,double,int)) callback_code) (d1,d2,d3,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1963,7 +1963,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d4i_simulator,(void*)&d_d4i); - dr = ((double (*) (double,double,double,double,int)) callback_code) (d1,d2,d3,d4,i9); + dr = ((double (ABI_ATTR *) (double,double,double,double,int)) callback_code) (d1,d2,d3,d4,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1981,7 +1981,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d7i_simulator,(void*)&d_d7i); - dr = ((double (*) (double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,i9); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -1999,7 +1999,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d8i_simulator,(void*)&d_d8i); - dr = ((double (*) (double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,i9); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2017,7 +2017,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d12i_simulator,(void*)&d_d12i); - dr = ((double (*) (double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2035,7 +2035,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d13i_simulator,(void*)&d_d13i); - dr = ((double (*) (double,double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2061,7 +2061,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size1); PREP_CALLBACK(cif,S1_v_simulator,(void*)&S1_v); - r = ((Size1 (*) (void)) callback_code) (); + r = ((Size1 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c}\n",r.x1); @@ -2086,7 +2086,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size2); PREP_CALLBACK(cif,S2_v_simulator,(void*)&S2_v); - r = ((Size2 (*) (void)) callback_code) (); + r = ((Size2 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c}\n",r.x1,r.x2); @@ -2111,7 +2111,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size3); PREP_CALLBACK(cif,S3_v_simulator,(void*)&S3_v); - r = ((Size3 (*) (void)) callback_code) (); + r = ((Size3 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3); @@ -2136,7 +2136,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size4); PREP_CALLBACK(cif,S4_v_simulator,(void*)&S4_v); - r = ((Size4 (*) (void)) callback_code) (); + r = ((Size4 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4); @@ -2161,7 +2161,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size7); PREP_CALLBACK(cif,S7_v_simulator,(void*)&S7_v); - r = ((Size7 (*) (void)) callback_code) (); + r = ((Size7 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7); @@ -2186,7 +2186,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size8); PREP_CALLBACK(cif,S8_v_simulator,(void*)&S8_v); - r = ((Size8 (*) (void)) callback_code) (); + r = ((Size8 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8); @@ -2211,7 +2211,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size12); PREP_CALLBACK(cif,S12_v_simulator,(void*)&S12_v); - r = ((Size12 (*) (void)) callback_code) (); + r = ((Size12 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12); @@ -2236,7 +2236,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size15); PREP_CALLBACK(cif,S15_v_simulator,(void*)&S15_v); - r = ((Size15 (*) (void)) callback_code) (); + r = ((Size15 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15); @@ -2261,7 +2261,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF_NOARGS(cif,ffi_type_Size16); PREP_CALLBACK(cif,S16_v_simulator,(void*)&S16_v); - r = ((Size16 (*) (void)) callback_code) (); + r = ((Size16 (ABI_ATTR *) (void)) callback_code) (); } FREE_CALLBACK(); fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16); @@ -2298,7 +2298,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_Int); PREP_CALLBACK(cif,I_III_simulator,(void*)&I_III); - Ir = ((Int (*) (Int,Int,Int)) callback_code) (I1,I2,I3); + Ir = ((Int (ABI_ATTR *) (Int,Int,Int)) callback_code) (I1,I2,I3); } FREE_CALLBACK(); fprintf(out,"->{%d}\n",Ir.x); @@ -2322,7 +2322,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_Char); PREP_CALLBACK(cif,C_CdC_simulator,(void*)&C_CdC); - Cr = ((Char (*) (Char,double,Char)) callback_code) (C1,d2,C3); + Cr = ((Char (ABI_ATTR *) (Char,double,Char)) callback_code) (C1,d2,C3); } FREE_CALLBACK(); fprintf(out,"->{'%c'}\n",Cr.x); @@ -2346,7 +2346,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_Float); PREP_CALLBACK(cif,F_Ffd_simulator,(void*)&F_Ffd); - Fr = ((Float (*) (Float,float,double)) callback_code) (F1,f2,d3); + Fr = ((Float (ABI_ATTR *) (Float,float,double)) callback_code) (F1,f2,d3); } FREE_CALLBACK(); fprintf(out,"->{%g}\n",Fr.x); @@ -2370,7 +2370,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_Double); PREP_CALLBACK(cif,D_fDd_simulator,(void*)&D_fDd); - Dr = ((Double (*) (float,Double,double)) callback_code) (f1,D2,d3); + Dr = ((Double (ABI_ATTR *) (float,Double,double)) callback_code) (f1,D2,d3); } FREE_CALLBACK(); fprintf(out,"->{%g}\n",Dr.x); @@ -2394,7 +2394,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_Double); PREP_CALLBACK(cif,D_Dfd_simulator,(void*)&D_Dfd); - Dr = ((Double (*) (Double,float,double)) callback_code) (D1,f2,d3); + Dr = ((Double (ABI_ATTR *) (Double,float,double)) callback_code) (D1,f2,d3); } FREE_CALLBACK(); fprintf(out,"->{%g}\n",Dr.x); @@ -2418,7 +2418,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_J); PREP_CALLBACK(cif,J_JiJ_simulator,(void*)&J_JiJ); - Jr = ((J (*) (J,int,J)) callback_code) (J1,i2,J2); + Jr = ((J (ABI_ATTR *) (J,int,J)) callback_code) (J1,i2,J2); } FREE_CALLBACK(); fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2); @@ -2443,7 +2443,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_T); PREP_CALLBACK(cif,T_TcT_simulator,(void*)&T_TcT); - Tr = ((T (*) (T,char,T)) callback_code) (T1,' ',T2); + Tr = ((T (ABI_ATTR *) (T,char,T)) callback_code) (T1,' ',T2); } FREE_CALLBACK(); fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]); @@ -2468,7 +2468,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_X); PREP_CALLBACK(cif,X_BcdB_simulator,(void*)&X_BcdB); - Xr = ((X (*) (B,char,double,B)) callback_code) (B1,c2,d3,B2); + Xr = ((X (ABI_ATTR *) (B,char,double,B)) callback_code) (B1,c2,d3,B2); } FREE_CALLBACK(); fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1); @@ -2511,7 +2511,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slong); PREP_CALLBACK(cif,l_l0K_simulator,(void*)l_l0K); - lr = ((long (*) (K,long)) callback_code) (K1,l9); + lr = ((long (ABI_ATTR *) (K,long)) callback_code) (K1,l9); } FREE_CALLBACK(); fprintf(out,"->%ld\n",lr); @@ -2529,7 +2529,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slong); PREP_CALLBACK(cif,l_l1K_simulator,(void*)l_l1K); - lr = ((long (*) (long,K,long)) callback_code) (l1,K1,l9); + lr = ((long (ABI_ATTR *) (long,K,long)) callback_code) (l1,K1,l9); } FREE_CALLBACK(); fprintf(out,"->%ld\n",lr); @@ -2547,7 +2547,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slong); PREP_CALLBACK(cif,l_l2K_simulator,(void*)l_l2K); - lr = ((long (*) (long,long,K,long)) callback_code) (l1,l2,K1,l9); + lr = ((long (ABI_ATTR *) (long,long,K,long)) callback_code) (l1,l2,K1,l9); } FREE_CALLBACK(); fprintf(out,"->%ld\n",lr); @@ -2565,7 +2565,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slong); PREP_CALLBACK(cif,l_l3K_simulator,(void*)l_l3K); - lr = ((long (*) (long,long,long,K,long)) callback_code) (l1,l2,l3,K1,l9); + lr = ((long (ABI_ATTR *) (long,long,long,K,long)) callback_code) (l1,l2,l3,K1,l9); } FREE_CALLBACK(); fprintf(out,"->%ld\n",lr); @@ -2583,7 +2583,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slong); PREP_CALLBACK(cif,l_l4K_simulator,(void*)l_l4K); - lr = ((long (*) (long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,K1,l9); + lr = ((long (ABI_ATTR *) (long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,K1,l9); } FREE_CALLBACK(); fprintf(out,"->%ld\n",lr); @@ -2601,7 +2601,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slong); PREP_CALLBACK(cif,l_l5K_simulator,(void*)l_l5K); - lr = ((long (*) (long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,K1,l9); + lr = ((long (ABI_ATTR *) (long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,K1,l9); } FREE_CALLBACK(); fprintf(out,"->%ld\n",lr); @@ -2619,7 +2619,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slong); PREP_CALLBACK(cif,l_l6K_simulator,(void*)l_l6K); - lr = ((long (*) (long,long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,l6,K1,l9); + lr = ((long (ABI_ATTR *) (long,long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,l6,K1,l9); } FREE_CALLBACK(); fprintf(out,"->%ld\n",lr); @@ -2637,7 +2637,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_float); PREP_CALLBACK(cif,f_f17l3L_simulator,(void*)&f_f17l3L); - fr = ((float (*) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,long,long,long,L)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,long,long,long,L)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1); } FREE_CALLBACK(); fprintf(out,"->%g\n",fr); @@ -2655,7 +2655,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_d17l3L_simulator,(void*)&d_d17l3L); - dr = ((double (*) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,long,long,long,L)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,long,long,long,L)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2673,7 +2673,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_l2ll_simulator,(void*)ll_l2ll); - llr = ((long long (*) (long,long,long long,long)) callback_code) (l1,l2,ll1,l9); + llr = ((long long (ABI_ATTR *) (long,long,long long,long)) callback_code) (l1,l2,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -2691,7 +2691,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_l3ll_simulator,(void*)ll_l3ll); - llr = ((long long (*) (long,long,long,long long,long)) callback_code) (l1,l2,l3,ll1,l9); + llr = ((long long (ABI_ATTR *) (long,long,long,long long,long)) callback_code) (l1,l2,l3,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -2709,7 +2709,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_l4ll_simulator,(void*)ll_l4ll); - llr = ((long long (*) (long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,ll1,l9); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -2727,7 +2727,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_l5ll_simulator,(void*)ll_l5ll); - llr = ((long long (*) (long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -2745,7 +2745,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_l6ll_simulator,(void*)ll_l6ll); - llr = ((long long (*) (long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -2763,7 +2763,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); PREP_CALLBACK(cif,ll_l7ll_simulator,(void*)ll_l7ll); - llr = ((long long (*) (long,long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); @@ -2781,7 +2781,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_l2d_simulator,(void*)d_l2d); - dr = ((double (*) (long,long,double,long)) callback_code) (l1,l2,ll1,l9); + dr = ((double (ABI_ATTR *) (long,long,double,long)) callback_code) (l1,l2,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2799,7 +2799,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_l3d_simulator,(void*)d_l3d); - dr = ((double (*) (long,long,long,double,long)) callback_code) (l1,l2,l3,ll1,l9); + dr = ((double (ABI_ATTR *) (long,long,long,double,long)) callback_code) (l1,l2,l3,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2817,7 +2817,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_l4d_simulator,(void*)d_l4d); - dr = ((double (*) (long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,ll1,l9); + dr = ((double (ABI_ATTR *) (long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2835,7 +2835,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_l5d_simulator,(void*)d_l5d); - dr = ((double (*) (long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9); + dr = ((double (ABI_ATTR *) (long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2853,7 +2853,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_l6d_simulator,(void*)d_l6d); - dr = ((double (*) (long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9); + dr = ((double (ABI_ATTR *) (long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr); @@ -2871,7 +2871,7 @@ int main (void) ffi_cif cif; FFI_PREP_CIF(cif,argtypes,ffi_type_double); PREP_CALLBACK(cif,d_l7d_simulator,(void*)d_l7d); - dr = ((double (*) (long,long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9); + dr = ((double (ABI_ATTR *) (long,long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9); } FREE_CALLBACK(); fprintf(out,"->%g\n",dr);