summaryrefslogtreecommitdiff
path: root/testsuite/libffi.call/err_bad_abi.c
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/libffi.call/err_bad_abi.c')
-rw-r--r--testsuite/libffi.call/err_bad_abi.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/testsuite/libffi.call/err_bad_abi.c b/testsuite/libffi.call/err_bad_abi.c
new file mode 100644
index 0000000..a21a3fd
--- /dev/null
+++ b/testsuite/libffi.call/err_bad_abi.c
@@ -0,0 +1,37 @@
+/* Area: ffi_prep_cif, ffi_prep_closure
+ Purpose: Test error return for bad ABIs.
+ Limitations: none.
+ PR: none.
+ Originator: Blake Chaffin 6/6/2007 */
+
+/* { dg-do run { xfail *-*-* } } */
+#include "ffitest.h"
+
+static void
+dummy_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
+ void** args __UNUSED__, void* userdata __UNUSED__)
+{}
+
+int main (void)
+{
+ ffi_cif cif;
+ void *code;
+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
+ void* args[1];
+ ffi_type* arg_types[1];
+
+ arg_types[0] = NULL;
+ args[0] = NULL;
+
+ CHECK(ffi_prep_cif(&cif, 255, 0, &ffi_type_void,
+ arg_types) == FFI_BAD_ABI);
+
+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_void,
+ arg_types) == FFI_OK);
+
+ cif.abi= 255;
+
+ CHECK(ffi_prep_closure_loc(pcl, &cif, dummy_fn, NULL, code) == FFI_BAD_ABI);
+
+ exit(0);
+}