Fixes for AIX xlc compiler.
This commit is contained in:
14
ChangeLog
14
ChangeLog
@@ -1,3 +1,17 @@
|
||||
2013-02-07 Anthony Green <green@moxielogic.com>
|
||||
|
||||
* testsuite/libffi.call/cls_double_va.c (main): Replace // style
|
||||
comments with /* */ for xlc compiler.
|
||||
* testsuite/libffi.call/stret_large.c (main): Ditto.
|
||||
* testsuite/libffi.call/stret_large2.c (main): Ditto.
|
||||
* testsuite/libffi.call/nested_struct1.c (main): Ditto.
|
||||
* testsuite/libffi.call/huge_struct.c (main): Ditto.
|
||||
* testsuite/libffi.call/float_va.c (main): Ditto.
|
||||
* testsuite/libffi.call/cls_struct_va1.c (main): Ditto.
|
||||
* testsuite/libffi.call/cls_pointer_stack.c (main): Ditto.
|
||||
* testsuite/libffi.call/cls_pointer.c (main): Ditto.
|
||||
* testsuite/libffi.call/cls_longdouble_va.c (main): Ditto.
|
||||
|
||||
2013-02-06 Anthony Green <green@moxielogic.com>
|
||||
|
||||
* man/ffi_prep_cif.3: Clean up for debian lintian checker.
|
||||
|
||||
@@ -45,9 +45,9 @@ int main (void)
|
||||
args[2] = NULL;
|
||||
|
||||
ffi_call(&cif, FFI_FN(printf), &res, args);
|
||||
// { dg-output "7.0" }
|
||||
/* { dg-output "7.0" } */
|
||||
printf("res: %d\n", (int) res);
|
||||
// { dg-output "\nres: 4" }
|
||||
/* { dg-output "\nres: 4" } */
|
||||
|
||||
/* The call to cls_double_va_fn is static, so have to use a normal prep_cif */
|
||||
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint, arg_types) == FFI_OK);
|
||||
@@ -55,9 +55,9 @@ int main (void)
|
||||
CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, code) == FFI_OK);
|
||||
|
||||
res = ((int(*)(char*, double))(code))(format, doubleArg);
|
||||
// { dg-output "\n7.0" }
|
||||
/* { dg-output "\n7.0" } */
|
||||
printf("res: %d\n", (int) res);
|
||||
// { dg-output "\nres: 4" }
|
||||
/* { dg-output "\nres: 4" } */
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -45,9 +45,9 @@ int main (void)
|
||||
args[2] = NULL;
|
||||
|
||||
ffi_call(&cif, FFI_FN(printf), &res, args);
|
||||
// { dg-output "7.0" }
|
||||
/* { dg-output "7.0" } */
|
||||
printf("res: %d\n", (int) res);
|
||||
// { dg-output "\nres: 4" }
|
||||
/* { dg-output "\nres: 4" } */
|
||||
|
||||
/* The call to cls_longdouble_va_fn is static, so have to use a normal prep_cif */
|
||||
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint,
|
||||
@@ -56,9 +56,9 @@ int main (void)
|
||||
CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, code) == FFI_OK);
|
||||
|
||||
res = ((int(*)(char*, long double))(code))(format, ldArg);
|
||||
// { dg-output "\n7.0" }
|
||||
/* { dg-output "\n7.0" } */
|
||||
printf("res: %d\n", (int) res);
|
||||
// { dg-output "\nres: 4" }
|
||||
/* { dg-output "\nres: 4" } */
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ int main (void)
|
||||
void *code;
|
||||
ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
||||
void* args[3];
|
||||
// ffi_type cls_pointer_type;
|
||||
/* ffi_type cls_pointer_type; */
|
||||
ffi_type* arg_types[3];
|
||||
|
||||
/* cls_pointer_type.size = sizeof(void*);
|
||||
|
||||
@@ -98,7 +98,7 @@ int main (void)
|
||||
void *code;
|
||||
ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
|
||||
void* args[3];
|
||||
// ffi_type cls_pointer_type;
|
||||
/* ffi_type cls_pointer_type; */
|
||||
ffi_type* arg_types[3];
|
||||
|
||||
/* cls_pointer_type.size = sizeof(void*);
|
||||
@@ -125,18 +125,18 @@ int main (void)
|
||||
ffi_call(&cif, FFI_FN(cls_pointer_fn1), &res, args);
|
||||
|
||||
printf("res: 0x%08x\n", (unsigned int) res);
|
||||
// { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" }
|
||||
// { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" }
|
||||
// { dg-output "\nres: 0x8bf258bd" }
|
||||
/* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */
|
||||
/* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */
|
||||
/* { dg-output "\nres: 0x8bf258bd" } */
|
||||
|
||||
CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK);
|
||||
|
||||
res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2);
|
||||
|
||||
printf("res: 0x%08x\n", (unsigned int) res);
|
||||
// { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" }
|
||||
// { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" }
|
||||
// { dg-output "\nres: 0x8bf258bd" }
|
||||
/* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */
|
||||
/* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */
|
||||
/* { dg-output "\nres: 0x8bf258bd" } */
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -106,9 +106,9 @@ main (void)
|
||||
CHECK(ffi_prep_closure_loc(pcl, &cif, test_fn, NULL, code) == FFI_OK);
|
||||
|
||||
res = ((int (*)(int, ...))(code))(si, s1, l1, s2);
|
||||
// { dg-output "4 5 6 10 11 12 13 14 20 21" }
|
||||
/* { dg-output "4 5 6 10 11 12 13 14 20 21" } */
|
||||
printf("res: %d\n", (int) res);
|
||||
// { dg-output "\nres: 42" }
|
||||
/* { dg-output "\nres: 42" } */
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -56,9 +56,9 @@ int main (void)
|
||||
* different. */
|
||||
/* Call it statically and then via ffi */
|
||||
resfp=float_va_fn(0,2.0);
|
||||
// { dg-output "0: 2.0 : total: 2.0" }
|
||||
/* { dg-output "0: 2.0 : total: 2.0" } */
|
||||
printf("compiled: %.1f\n", resfp);
|
||||
// { dg-output "\ncompiled: 2.0" }
|
||||
/* { dg-output "\ncompiled: 2.0" } */
|
||||
|
||||
arg_types[0] = &ffi_type_uint;
|
||||
arg_types[1] = &ffi_type_double;
|
||||
@@ -71,16 +71,16 @@ int main (void)
|
||||
values[0] = &firstarg;
|
||||
values[1] = &doubles[0];
|
||||
ffi_call(&cif, FFI_FN(float_va_fn), &resfp, values);
|
||||
// { dg-output "\n0: 2.0 : total: 2.0" }
|
||||
/* { dg-output "\n0: 2.0 : total: 2.0" } */
|
||||
printf("ffi: %.1f\n", resfp);
|
||||
// { dg-output "\nffi: 2.0" }
|
||||
/* { dg-output "\nffi: 2.0" } */
|
||||
|
||||
/* Second test, float_va_fn(2,2.0,3.0,4.0), now with variadic params */
|
||||
/* Call it statically and then via ffi */
|
||||
resfp=float_va_fn(2,2.0,3.0,4.0);
|
||||
// { dg-output "\n2: 2.0 : 0:3.0 1:4.0 total: 11.0" }
|
||||
/* { dg-output "\n2: 2.0 : 0:3.0 1:4.0 total: 11.0" } */
|
||||
printf("compiled: %.1f\n", resfp);
|
||||
// { dg-output "\ncompiled: 11.0" }
|
||||
/* { dg-output "\ncompiled: 11.0" } */
|
||||
|
||||
arg_types[0] = &ffi_type_uint;
|
||||
arg_types[1] = &ffi_type_double;
|
||||
@@ -99,9 +99,9 @@ int main (void)
|
||||
values[2] = &doubles[1];
|
||||
values[3] = &doubles[2];
|
||||
ffi_call(&cif, FFI_FN(float_va_fn), &resfp, values);
|
||||
// { dg-output "\n2: 2.0 : 0:3.0 1:4.0 total: 11.0" }
|
||||
/* { dg-output "\n2: 2.0 : 0:3.0 1:4.0 total: 11.0" } */
|
||||
printf("ffi: %.1f\n", resfp);
|
||||
// { dg-output "\nffi: 11.0" }
|
||||
/* { dg-output "\nffi: 11.0" } */
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -295,7 +295,7 @@ main(int argc __UNUSED__, const char** argv __UNUSED__)
|
||||
CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 50, &ret_struct_type, argTypes) == FFI_OK);
|
||||
|
||||
ffi_call(&cif, FFI_FN(test_large_fn), &retVal, argValues);
|
||||
// { dg-output "1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
|
||||
/* { dg-output "1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
|
||||
printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
|
||||
"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
|
||||
"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
|
||||
@@ -308,7 +308,7 @@ main(int argc __UNUSED__, const char** argv __UNUSED__)
|
||||
retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj,
|
||||
retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
|
||||
retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx);
|
||||
// { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
|
||||
/* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
|
||||
|
||||
CHECK(ffi_prep_closure_loc(pcl, &cif, cls_large_fn, NULL, code) == FFI_OK);
|
||||
|
||||
@@ -323,7 +323,7 @@ main(int argc __UNUSED__, const char** argv __UNUSED__)
|
||||
ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
|
||||
ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
|
||||
ui8, si8);
|
||||
// { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
|
||||
/* { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
|
||||
printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
|
||||
"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
|
||||
"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
|
||||
@@ -336,7 +336,7 @@ main(int argc __UNUSED__, const char** argv __UNUSED__)
|
||||
retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj,
|
||||
retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
|
||||
retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx);
|
||||
// { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
|
||||
/* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -156,6 +156,6 @@ int main (void)
|
||||
CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii));
|
||||
CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd));
|
||||
CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff));
|
||||
// CHECK( 1 == 0);
|
||||
/* CHECK( 1 == 0); */
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
|
||||
#include "ffitest.h"
|
||||
|
||||
// 13 FPRs: 104 bytes
|
||||
// 14 FPRs: 112 bytes
|
||||
/* 13 FPRs: 104 bytes */
|
||||
/* 14 FPRs: 112 bytes */
|
||||
|
||||
typedef struct struct_108byte {
|
||||
double a;
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
|
||||
#include "ffitest.h"
|
||||
|
||||
// 13 FPRs: 104 bytes
|
||||
// 14 FPRs: 112 bytes
|
||||
/* 13 FPRs: 104 bytes */
|
||||
/* 14 FPRs: 112 bytes */
|
||||
|
||||
typedef struct struct_116byte {
|
||||
double a;
|
||||
|
||||
Reference in New Issue
Block a user