From 332a539e88d26a0524c10a39283a3099d071ca10 Mon Sep 17 00:00:00 2001 From: Anthony Green Date: Fri, 22 Nov 2019 18:54:30 -0500 Subject: [PATCH] Move closure tests so we can easily XFAIL them for some targets --- testsuite/libffi.closures/closure.exp | 50 +++++++ .../closure_fn0.c | 0 .../closure_fn1.c | 0 .../closure_fn2.c | 0 .../closure_fn3.c | 0 .../closure_fn4.c | 0 .../closure_fn5.c | 0 .../closure_fn6.c | 0 .../closure_loc_fn0.c | 0 .../closure_simple.c | 0 .../cls_12byte.c | 0 .../cls_16byte.c | 0 .../cls_18byte.c | 0 .../cls_19byte.c | 0 .../cls_1_1byte.c | 0 .../cls_20byte.c | 0 .../cls_20byte1.c | 0 .../cls_24byte.c | 0 .../cls_2byte.c | 0 .../cls_3_1byte.c | 0 .../cls_3byte1.c | 0 .../cls_3byte2.c | 0 .../cls_3float.c | 0 .../cls_4_1byte.c | 0 .../cls_4byte.c | 0 .../cls_5_1_byte.c | 0 .../cls_5byte.c | 0 .../cls_64byte.c | 0 .../cls_6_1_byte.c | 0 .../cls_6byte.c | 0 .../cls_7_1_byte.c | 0 .../cls_7byte.c | 0 .../cls_8byte.c | 0 .../cls_9byte1.c | 0 .../cls_9byte2.c | 0 .../cls_align_double.c | 0 .../cls_align_float.c | 0 .../cls_align_longdouble.c | 0 .../cls_align_longdouble_split.c | 0 .../cls_align_longdouble_split2.c | 0 .../cls_align_pointer.c | 0 .../cls_align_sint16.c | 0 .../cls_align_sint32.c | 0 .../cls_align_sint64.c | 0 .../cls_align_uint16.c | 0 .../cls_align_uint32.c | 0 .../cls_align_uint64.c | 0 .../cls_dbls_struct.c | 0 .../cls_double.c | 0 .../cls_double_va.c | 0 .../cls_float.c | 0 .../cls_longdouble.c | 0 .../cls_longdouble_va.c | 0 .../cls_many_mixed_args.c | 0 .../cls_many_mixed_float_double.c | 0 .../cls_multi_schar.c | 0 .../cls_multi_sshort.c | 0 .../cls_multi_sshortchar.c | 0 .../cls_multi_uchar.c | 0 .../cls_multi_ushort.c | 0 .../cls_multi_ushortchar.c | 0 .../cls_pointer.c | 0 .../cls_pointer_stack.c | 0 .../cls_schar.c | 0 .../cls_sint.c | 0 .../cls_sshort.c | 0 .../cls_struct_va1.c | 0 .../cls_uchar.c | 0 .../cls_uchar_va.c | 0 .../cls_uint.c | 0 .../cls_uint_va.c | 0 .../cls_ulong_va.c | 0 .../cls_ulonglong.c | 0 .../cls_ushort.c | 0 .../cls_ushort_va.c | 0 testsuite/libffi.closures/ffitest.h | 138 ++++++++++++++++++ 76 files changed, 188 insertions(+) create mode 100644 testsuite/libffi.closures/closure.exp rename testsuite/{libffi.call => libffi.closures}/closure_fn0.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_fn1.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_fn2.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_fn3.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_fn4.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_fn5.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_fn6.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_loc_fn0.c (100%) rename testsuite/{libffi.call => libffi.closures}/closure_simple.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_12byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_16byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_18byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_19byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_1_1byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_20byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_20byte1.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_24byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_2byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_3_1byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_3byte1.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_3byte2.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_3float.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_4_1byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_4byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_5_1_byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_5byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_64byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_6_1_byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_6byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_7_1_byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_7byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_8byte.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_9byte1.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_9byte2.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_double.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_float.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_longdouble.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_longdouble_split.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_longdouble_split2.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_pointer.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_sint16.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_sint32.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_sint64.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_uint16.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_uint32.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_align_uint64.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_dbls_struct.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_double.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_double_va.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_float.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_longdouble.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_longdouble_va.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_many_mixed_args.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_many_mixed_float_double.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_multi_schar.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_multi_sshort.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_multi_sshortchar.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_multi_uchar.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_multi_ushort.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_multi_ushortchar.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_pointer.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_pointer_stack.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_schar.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_sint.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_sshort.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_struct_va1.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_uchar.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_uchar_va.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_uint.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_uint_va.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_ulong_va.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_ulonglong.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_ushort.c (100%) rename testsuite/{libffi.call => libffi.closures}/cls_ushort_va.c (100%) create mode 100644 testsuite/libffi.closures/ffitest.h diff --git a/testsuite/libffi.closures/closure.exp b/testsuite/libffi.closures/closure.exp new file mode 100644 index 0000000..eafbef0 --- /dev/null +++ b/testsuite/libffi.closures/closure.exp @@ -0,0 +1,50 @@ +# Copyright (C) 2003, 2006, 2009, 2010, 2014, 2019 Free Software Foundation, Inc. +# Copyright (C) 2019 Anthony Green + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# . + +dg-init +libffi-init + +global srcdir subdir + +if { [string match $compiler_vendor "microsoft"] } { + # -wd4005 macro redefinition + # -wd4244 implicit conversion to type of smaller size + # -wd4305 truncation to smaller type + # -wd4477 printf %lu of uintptr_t + # -wd4312 implicit conversion to type of greater size + # -wd4311 pointer truncation to unsigned long + # -EHsc C++ Exception Handling (no SEH exceptions) + set additional_options "-wd4005 -wd4244 -wd4305 -wd4477 -wd4312 -wd4311 -EHsc"; +} else { + set additional_options ""; +} + +set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.c]] + +if { [libffi_feature_test "#if FFI_CLOSURES"] } { + run-many-tests $tlist "" +} else { + foreach test $tlist { + unsupported "$test" + } +} + +dg-finish + +# Local Variables: +# tcl-indent-level:4 +# End: diff --git a/testsuite/libffi.call/closure_fn0.c b/testsuite/libffi.closures/closure_fn0.c similarity index 100% rename from testsuite/libffi.call/closure_fn0.c rename to testsuite/libffi.closures/closure_fn0.c diff --git a/testsuite/libffi.call/closure_fn1.c b/testsuite/libffi.closures/closure_fn1.c similarity index 100% rename from testsuite/libffi.call/closure_fn1.c rename to testsuite/libffi.closures/closure_fn1.c diff --git a/testsuite/libffi.call/closure_fn2.c b/testsuite/libffi.closures/closure_fn2.c similarity index 100% rename from testsuite/libffi.call/closure_fn2.c rename to testsuite/libffi.closures/closure_fn2.c diff --git a/testsuite/libffi.call/closure_fn3.c b/testsuite/libffi.closures/closure_fn3.c similarity index 100% rename from testsuite/libffi.call/closure_fn3.c rename to testsuite/libffi.closures/closure_fn3.c diff --git a/testsuite/libffi.call/closure_fn4.c b/testsuite/libffi.closures/closure_fn4.c similarity index 100% rename from testsuite/libffi.call/closure_fn4.c rename to testsuite/libffi.closures/closure_fn4.c diff --git a/testsuite/libffi.call/closure_fn5.c b/testsuite/libffi.closures/closure_fn5.c similarity index 100% rename from testsuite/libffi.call/closure_fn5.c rename to testsuite/libffi.closures/closure_fn5.c diff --git a/testsuite/libffi.call/closure_fn6.c b/testsuite/libffi.closures/closure_fn6.c similarity index 100% rename from testsuite/libffi.call/closure_fn6.c rename to testsuite/libffi.closures/closure_fn6.c diff --git a/testsuite/libffi.call/closure_loc_fn0.c b/testsuite/libffi.closures/closure_loc_fn0.c similarity index 100% rename from testsuite/libffi.call/closure_loc_fn0.c rename to testsuite/libffi.closures/closure_loc_fn0.c diff --git a/testsuite/libffi.call/closure_simple.c b/testsuite/libffi.closures/closure_simple.c similarity index 100% rename from testsuite/libffi.call/closure_simple.c rename to testsuite/libffi.closures/closure_simple.c diff --git a/testsuite/libffi.call/cls_12byte.c b/testsuite/libffi.closures/cls_12byte.c similarity index 100% rename from testsuite/libffi.call/cls_12byte.c rename to testsuite/libffi.closures/cls_12byte.c diff --git a/testsuite/libffi.call/cls_16byte.c b/testsuite/libffi.closures/cls_16byte.c similarity index 100% rename from testsuite/libffi.call/cls_16byte.c rename to testsuite/libffi.closures/cls_16byte.c diff --git a/testsuite/libffi.call/cls_18byte.c b/testsuite/libffi.closures/cls_18byte.c similarity index 100% rename from testsuite/libffi.call/cls_18byte.c rename to testsuite/libffi.closures/cls_18byte.c diff --git a/testsuite/libffi.call/cls_19byte.c b/testsuite/libffi.closures/cls_19byte.c similarity index 100% rename from testsuite/libffi.call/cls_19byte.c rename to testsuite/libffi.closures/cls_19byte.c diff --git a/testsuite/libffi.call/cls_1_1byte.c b/testsuite/libffi.closures/cls_1_1byte.c similarity index 100% rename from testsuite/libffi.call/cls_1_1byte.c rename to testsuite/libffi.closures/cls_1_1byte.c diff --git a/testsuite/libffi.call/cls_20byte.c b/testsuite/libffi.closures/cls_20byte.c similarity index 100% rename from testsuite/libffi.call/cls_20byte.c rename to testsuite/libffi.closures/cls_20byte.c diff --git a/testsuite/libffi.call/cls_20byte1.c b/testsuite/libffi.closures/cls_20byte1.c similarity index 100% rename from testsuite/libffi.call/cls_20byte1.c rename to testsuite/libffi.closures/cls_20byte1.c diff --git a/testsuite/libffi.call/cls_24byte.c b/testsuite/libffi.closures/cls_24byte.c similarity index 100% rename from testsuite/libffi.call/cls_24byte.c rename to testsuite/libffi.closures/cls_24byte.c diff --git a/testsuite/libffi.call/cls_2byte.c b/testsuite/libffi.closures/cls_2byte.c similarity index 100% rename from testsuite/libffi.call/cls_2byte.c rename to testsuite/libffi.closures/cls_2byte.c diff --git a/testsuite/libffi.call/cls_3_1byte.c b/testsuite/libffi.closures/cls_3_1byte.c similarity index 100% rename from testsuite/libffi.call/cls_3_1byte.c rename to testsuite/libffi.closures/cls_3_1byte.c diff --git a/testsuite/libffi.call/cls_3byte1.c b/testsuite/libffi.closures/cls_3byte1.c similarity index 100% rename from testsuite/libffi.call/cls_3byte1.c rename to testsuite/libffi.closures/cls_3byte1.c diff --git a/testsuite/libffi.call/cls_3byte2.c b/testsuite/libffi.closures/cls_3byte2.c similarity index 100% rename from testsuite/libffi.call/cls_3byte2.c rename to testsuite/libffi.closures/cls_3byte2.c diff --git a/testsuite/libffi.call/cls_3float.c b/testsuite/libffi.closures/cls_3float.c similarity index 100% rename from testsuite/libffi.call/cls_3float.c rename to testsuite/libffi.closures/cls_3float.c diff --git a/testsuite/libffi.call/cls_4_1byte.c b/testsuite/libffi.closures/cls_4_1byte.c similarity index 100% rename from testsuite/libffi.call/cls_4_1byte.c rename to testsuite/libffi.closures/cls_4_1byte.c diff --git a/testsuite/libffi.call/cls_4byte.c b/testsuite/libffi.closures/cls_4byte.c similarity index 100% rename from testsuite/libffi.call/cls_4byte.c rename to testsuite/libffi.closures/cls_4byte.c diff --git a/testsuite/libffi.call/cls_5_1_byte.c b/testsuite/libffi.closures/cls_5_1_byte.c similarity index 100% rename from testsuite/libffi.call/cls_5_1_byte.c rename to testsuite/libffi.closures/cls_5_1_byte.c diff --git a/testsuite/libffi.call/cls_5byte.c b/testsuite/libffi.closures/cls_5byte.c similarity index 100% rename from testsuite/libffi.call/cls_5byte.c rename to testsuite/libffi.closures/cls_5byte.c diff --git a/testsuite/libffi.call/cls_64byte.c b/testsuite/libffi.closures/cls_64byte.c similarity index 100% rename from testsuite/libffi.call/cls_64byte.c rename to testsuite/libffi.closures/cls_64byte.c diff --git a/testsuite/libffi.call/cls_6_1_byte.c b/testsuite/libffi.closures/cls_6_1_byte.c similarity index 100% rename from testsuite/libffi.call/cls_6_1_byte.c rename to testsuite/libffi.closures/cls_6_1_byte.c diff --git a/testsuite/libffi.call/cls_6byte.c b/testsuite/libffi.closures/cls_6byte.c similarity index 100% rename from testsuite/libffi.call/cls_6byte.c rename to testsuite/libffi.closures/cls_6byte.c diff --git a/testsuite/libffi.call/cls_7_1_byte.c b/testsuite/libffi.closures/cls_7_1_byte.c similarity index 100% rename from testsuite/libffi.call/cls_7_1_byte.c rename to testsuite/libffi.closures/cls_7_1_byte.c diff --git a/testsuite/libffi.call/cls_7byte.c b/testsuite/libffi.closures/cls_7byte.c similarity index 100% rename from testsuite/libffi.call/cls_7byte.c rename to testsuite/libffi.closures/cls_7byte.c diff --git a/testsuite/libffi.call/cls_8byte.c b/testsuite/libffi.closures/cls_8byte.c similarity index 100% rename from testsuite/libffi.call/cls_8byte.c rename to testsuite/libffi.closures/cls_8byte.c diff --git a/testsuite/libffi.call/cls_9byte1.c b/testsuite/libffi.closures/cls_9byte1.c similarity index 100% rename from testsuite/libffi.call/cls_9byte1.c rename to testsuite/libffi.closures/cls_9byte1.c diff --git a/testsuite/libffi.call/cls_9byte2.c b/testsuite/libffi.closures/cls_9byte2.c similarity index 100% rename from testsuite/libffi.call/cls_9byte2.c rename to testsuite/libffi.closures/cls_9byte2.c diff --git a/testsuite/libffi.call/cls_align_double.c b/testsuite/libffi.closures/cls_align_double.c similarity index 100% rename from testsuite/libffi.call/cls_align_double.c rename to testsuite/libffi.closures/cls_align_double.c diff --git a/testsuite/libffi.call/cls_align_float.c b/testsuite/libffi.closures/cls_align_float.c similarity index 100% rename from testsuite/libffi.call/cls_align_float.c rename to testsuite/libffi.closures/cls_align_float.c diff --git a/testsuite/libffi.call/cls_align_longdouble.c b/testsuite/libffi.closures/cls_align_longdouble.c similarity index 100% rename from testsuite/libffi.call/cls_align_longdouble.c rename to testsuite/libffi.closures/cls_align_longdouble.c diff --git a/testsuite/libffi.call/cls_align_longdouble_split.c b/testsuite/libffi.closures/cls_align_longdouble_split.c similarity index 100% rename from testsuite/libffi.call/cls_align_longdouble_split.c rename to testsuite/libffi.closures/cls_align_longdouble_split.c diff --git a/testsuite/libffi.call/cls_align_longdouble_split2.c b/testsuite/libffi.closures/cls_align_longdouble_split2.c similarity index 100% rename from testsuite/libffi.call/cls_align_longdouble_split2.c rename to testsuite/libffi.closures/cls_align_longdouble_split2.c diff --git a/testsuite/libffi.call/cls_align_pointer.c b/testsuite/libffi.closures/cls_align_pointer.c similarity index 100% rename from testsuite/libffi.call/cls_align_pointer.c rename to testsuite/libffi.closures/cls_align_pointer.c diff --git a/testsuite/libffi.call/cls_align_sint16.c b/testsuite/libffi.closures/cls_align_sint16.c similarity index 100% rename from testsuite/libffi.call/cls_align_sint16.c rename to testsuite/libffi.closures/cls_align_sint16.c diff --git a/testsuite/libffi.call/cls_align_sint32.c b/testsuite/libffi.closures/cls_align_sint32.c similarity index 100% rename from testsuite/libffi.call/cls_align_sint32.c rename to testsuite/libffi.closures/cls_align_sint32.c diff --git a/testsuite/libffi.call/cls_align_sint64.c b/testsuite/libffi.closures/cls_align_sint64.c similarity index 100% rename from testsuite/libffi.call/cls_align_sint64.c rename to testsuite/libffi.closures/cls_align_sint64.c diff --git a/testsuite/libffi.call/cls_align_uint16.c b/testsuite/libffi.closures/cls_align_uint16.c similarity index 100% rename from testsuite/libffi.call/cls_align_uint16.c rename to testsuite/libffi.closures/cls_align_uint16.c diff --git a/testsuite/libffi.call/cls_align_uint32.c b/testsuite/libffi.closures/cls_align_uint32.c similarity index 100% rename from testsuite/libffi.call/cls_align_uint32.c rename to testsuite/libffi.closures/cls_align_uint32.c diff --git a/testsuite/libffi.call/cls_align_uint64.c b/testsuite/libffi.closures/cls_align_uint64.c similarity index 100% rename from testsuite/libffi.call/cls_align_uint64.c rename to testsuite/libffi.closures/cls_align_uint64.c diff --git a/testsuite/libffi.call/cls_dbls_struct.c b/testsuite/libffi.closures/cls_dbls_struct.c similarity index 100% rename from testsuite/libffi.call/cls_dbls_struct.c rename to testsuite/libffi.closures/cls_dbls_struct.c diff --git a/testsuite/libffi.call/cls_double.c b/testsuite/libffi.closures/cls_double.c similarity index 100% rename from testsuite/libffi.call/cls_double.c rename to testsuite/libffi.closures/cls_double.c diff --git a/testsuite/libffi.call/cls_double_va.c b/testsuite/libffi.closures/cls_double_va.c similarity index 100% rename from testsuite/libffi.call/cls_double_va.c rename to testsuite/libffi.closures/cls_double_va.c diff --git a/testsuite/libffi.call/cls_float.c b/testsuite/libffi.closures/cls_float.c similarity index 100% rename from testsuite/libffi.call/cls_float.c rename to testsuite/libffi.closures/cls_float.c diff --git a/testsuite/libffi.call/cls_longdouble.c b/testsuite/libffi.closures/cls_longdouble.c similarity index 100% rename from testsuite/libffi.call/cls_longdouble.c rename to testsuite/libffi.closures/cls_longdouble.c diff --git a/testsuite/libffi.call/cls_longdouble_va.c b/testsuite/libffi.closures/cls_longdouble_va.c similarity index 100% rename from testsuite/libffi.call/cls_longdouble_va.c rename to testsuite/libffi.closures/cls_longdouble_va.c diff --git a/testsuite/libffi.call/cls_many_mixed_args.c b/testsuite/libffi.closures/cls_many_mixed_args.c similarity index 100% rename from testsuite/libffi.call/cls_many_mixed_args.c rename to testsuite/libffi.closures/cls_many_mixed_args.c diff --git a/testsuite/libffi.call/cls_many_mixed_float_double.c b/testsuite/libffi.closures/cls_many_mixed_float_double.c similarity index 100% rename from testsuite/libffi.call/cls_many_mixed_float_double.c rename to testsuite/libffi.closures/cls_many_mixed_float_double.c diff --git a/testsuite/libffi.call/cls_multi_schar.c b/testsuite/libffi.closures/cls_multi_schar.c similarity index 100% rename from testsuite/libffi.call/cls_multi_schar.c rename to testsuite/libffi.closures/cls_multi_schar.c diff --git a/testsuite/libffi.call/cls_multi_sshort.c b/testsuite/libffi.closures/cls_multi_sshort.c similarity index 100% rename from testsuite/libffi.call/cls_multi_sshort.c rename to testsuite/libffi.closures/cls_multi_sshort.c diff --git a/testsuite/libffi.call/cls_multi_sshortchar.c b/testsuite/libffi.closures/cls_multi_sshortchar.c similarity index 100% rename from testsuite/libffi.call/cls_multi_sshortchar.c rename to testsuite/libffi.closures/cls_multi_sshortchar.c diff --git a/testsuite/libffi.call/cls_multi_uchar.c b/testsuite/libffi.closures/cls_multi_uchar.c similarity index 100% rename from testsuite/libffi.call/cls_multi_uchar.c rename to testsuite/libffi.closures/cls_multi_uchar.c diff --git a/testsuite/libffi.call/cls_multi_ushort.c b/testsuite/libffi.closures/cls_multi_ushort.c similarity index 100% rename from testsuite/libffi.call/cls_multi_ushort.c rename to testsuite/libffi.closures/cls_multi_ushort.c diff --git a/testsuite/libffi.call/cls_multi_ushortchar.c b/testsuite/libffi.closures/cls_multi_ushortchar.c similarity index 100% rename from testsuite/libffi.call/cls_multi_ushortchar.c rename to testsuite/libffi.closures/cls_multi_ushortchar.c diff --git a/testsuite/libffi.call/cls_pointer.c b/testsuite/libffi.closures/cls_pointer.c similarity index 100% rename from testsuite/libffi.call/cls_pointer.c rename to testsuite/libffi.closures/cls_pointer.c diff --git a/testsuite/libffi.call/cls_pointer_stack.c b/testsuite/libffi.closures/cls_pointer_stack.c similarity index 100% rename from testsuite/libffi.call/cls_pointer_stack.c rename to testsuite/libffi.closures/cls_pointer_stack.c diff --git a/testsuite/libffi.call/cls_schar.c b/testsuite/libffi.closures/cls_schar.c similarity index 100% rename from testsuite/libffi.call/cls_schar.c rename to testsuite/libffi.closures/cls_schar.c diff --git a/testsuite/libffi.call/cls_sint.c b/testsuite/libffi.closures/cls_sint.c similarity index 100% rename from testsuite/libffi.call/cls_sint.c rename to testsuite/libffi.closures/cls_sint.c diff --git a/testsuite/libffi.call/cls_sshort.c b/testsuite/libffi.closures/cls_sshort.c similarity index 100% rename from testsuite/libffi.call/cls_sshort.c rename to testsuite/libffi.closures/cls_sshort.c diff --git a/testsuite/libffi.call/cls_struct_va1.c b/testsuite/libffi.closures/cls_struct_va1.c similarity index 100% rename from testsuite/libffi.call/cls_struct_va1.c rename to testsuite/libffi.closures/cls_struct_va1.c diff --git a/testsuite/libffi.call/cls_uchar.c b/testsuite/libffi.closures/cls_uchar.c similarity index 100% rename from testsuite/libffi.call/cls_uchar.c rename to testsuite/libffi.closures/cls_uchar.c diff --git a/testsuite/libffi.call/cls_uchar_va.c b/testsuite/libffi.closures/cls_uchar_va.c similarity index 100% rename from testsuite/libffi.call/cls_uchar_va.c rename to testsuite/libffi.closures/cls_uchar_va.c diff --git a/testsuite/libffi.call/cls_uint.c b/testsuite/libffi.closures/cls_uint.c similarity index 100% rename from testsuite/libffi.call/cls_uint.c rename to testsuite/libffi.closures/cls_uint.c diff --git a/testsuite/libffi.call/cls_uint_va.c b/testsuite/libffi.closures/cls_uint_va.c similarity index 100% rename from testsuite/libffi.call/cls_uint_va.c rename to testsuite/libffi.closures/cls_uint_va.c diff --git a/testsuite/libffi.call/cls_ulong_va.c b/testsuite/libffi.closures/cls_ulong_va.c similarity index 100% rename from testsuite/libffi.call/cls_ulong_va.c rename to testsuite/libffi.closures/cls_ulong_va.c diff --git a/testsuite/libffi.call/cls_ulonglong.c b/testsuite/libffi.closures/cls_ulonglong.c similarity index 100% rename from testsuite/libffi.call/cls_ulonglong.c rename to testsuite/libffi.closures/cls_ulonglong.c diff --git a/testsuite/libffi.call/cls_ushort.c b/testsuite/libffi.closures/cls_ushort.c similarity index 100% rename from testsuite/libffi.call/cls_ushort.c rename to testsuite/libffi.closures/cls_ushort.c diff --git a/testsuite/libffi.call/cls_ushort_va.c b/testsuite/libffi.closures/cls_ushort_va.c similarity index 100% rename from testsuite/libffi.call/cls_ushort_va.c rename to testsuite/libffi.closures/cls_ushort_va.c diff --git a/testsuite/libffi.closures/ffitest.h b/testsuite/libffi.closures/ffitest.h new file mode 100644 index 0000000..cfce1ad --- /dev/null +++ b/testsuite/libffi.closures/ffitest.h @@ -0,0 +1,138 @@ +#include +#include +#include +#include +#include +#include "fficonfig.h" + +#if defined HAVE_STDINT_H +#include +#endif + +#if defined HAVE_INTTYPES_H +#include +#endif + +#define MAX_ARGS 256 + +#define CHECK(x) (void)(!(x) ? (abort(), 1) : 0) + +/* Define macros so that compilers other than gcc can run the tests. */ +#undef __UNUSED__ +#if defined(__GNUC__) +#define __UNUSED__ __attribute__((__unused__)) +#define __STDCALL__ __attribute__((stdcall)) +#define __THISCALL__ __attribute__((thiscall)) +#define __FASTCALL__ __attribute__((fastcall)) +#define __MSABI__ __attribute__((ms_abi)) +#else +#define __UNUSED__ +#define __STDCALL__ __stdcall +#define __THISCALL__ __thiscall +#define __FASTCALL__ __fastcall +#endif + +#ifndef ABI_NUM +#define ABI_NUM FFI_DEFAULT_ABI +#define ABI_ATTR +#endif + +/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a + file open. */ +#ifdef HAVE_MMAP_ANON +# undef HAVE_MMAP_DEV_ZERO + +# include +# ifndef MAP_FAILED +# define MAP_FAILED -1 +# endif +# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON) +# define MAP_ANONYMOUS MAP_ANON +# endif +# define USING_MMAP + +#endif + +#ifdef HAVE_MMAP_DEV_ZERO + +# include +# ifndef MAP_FAILED +# define MAP_FAILED -1 +# endif +# define USING_MMAP + +#endif + +/* MinGW kludge. */ +#if defined(_WIN64) | defined(_WIN32) +#define PRIdLL "I64d" +#define PRIuLL "I64u" +#else +#define PRIdLL "lld" +#define PRIuLL "llu" +#endif + +/* Tru64 UNIX kludge. */ +#if defined(__alpha__) && defined(__osf__) +/* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit. */ +#undef PRIdLL +#define PRIdLL "ld" +#undef PRIuLL +#define PRIuLL "lu" +#define PRId8 "hd" +#define PRIu8 "hu" +#define PRId64 "ld" +#define PRIu64 "lu" +#define PRIuPTR "lu" +#endif + +/* PA HP-UX kludge. */ +#if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR) +#define PRIuPTR "lu" +#endif + +/* IRIX kludge. */ +#if defined(__sgi) +/* IRIX 6.5 provides all definitions, but only for C99 + compilations. */ +#define PRId8 "hhd" +#define PRIu8 "hhu" +#if (_MIPS_SZLONG == 32) +#define PRId64 "lld" +#define PRIu64 "llu" +#endif +/* This doesn't match , which always has "lld" here, but the + arguments are uint64_t, int64_t, which are unsigned long, long for + 64-bit in . */ +#if (_MIPS_SZLONG == 64) +#define PRId64 "ld" +#define PRIu64 "lu" +#endif +/* This doesn't match , which has "u" here, but the arguments + are uintptr_t, which is always unsigned long. */ +#define PRIuPTR "lu" +#endif + +/* Solaris < 10 kludge. */ +#if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR) +#if defined(__arch64__) || defined (__x86_64__) +#define PRIuPTR "lu" +#else +#define PRIuPTR "u" +#endif +#endif + +/* MSVC kludge. */ +#if defined _MSC_VER +#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) +#define PRIuPTR "lu" +#define PRIu8 "u" +#define PRId8 "d" +#define PRIu64 "I64u" +#define PRId64 "I64d" +#endif +#endif + +#ifndef PRIuPTR +#define PRIuPTR "u" +#endif -- 2.34.1