1817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose/* Area: ffi_prep_cif, ffi_prep_closure 2817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose Purpose: Test error return for bad ABIs. 3817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose Limitations: none. 4817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose PR: none. 5817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose Originator: Blake Chaffin 6/6/2007 */ 6817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 746ce27ab1e22ca98957e0900c6a2415b86578b2eGregory P. Smith/* { dg-do run } */ 846ce27ab1e22ca98957e0900c6a2415b86578b2eGregory P. Smith 9817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose#include "ffitest.h" 10817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 11817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klosestatic void 12817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klosedummy_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, 13817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose void** args __UNUSED__, void* userdata __UNUSED__) 14817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose{} 15817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 16817acef0e6c6b33ade68132b090ea745badbbeceMatthias Kloseint main (void) 17817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose{ 18817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose ffi_cif cif; 19817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose void *code; 20817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); 21817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose ffi_type* arg_types[1]; 22817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 23817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose arg_types[0] = NULL; 24817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 25817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose CHECK(ffi_prep_cif(&cif, 255, 0, &ffi_type_void, 26817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose arg_types) == FFI_BAD_ABI); 27817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 28817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_void, 29817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose arg_types) == FFI_OK); 30817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 31817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose cif.abi= 255; 32817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 33817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose CHECK(ffi_prep_closure_loc(pcl, &cif, dummy_fn, NULL, code) == FFI_BAD_ABI); 34817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose 35817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose exit(0); 36817acef0e6c6b33ade68132b090ea745badbbeceMatthias Klose} 37