Home | History | Annotate | Download | only in libffi.call
      1 /* Area:	ffi_call
      2    Purpose:	Check return value unsigned char.
      3    Limitations:	none.
      4    PR:		none.
      5    Originator:	From the original ffitest.c  */
      6 
      7 /* { dg-do run } */
      8 #include "ffitest.h"
      9 
     10 static unsigned char return_uc(unsigned char uc)
     11 {
     12   return uc;
     13 }
     14 
     15 int main (void)
     16 {
     17   ffi_cif cif;
     18   ffi_type *args[MAX_ARGS];
     19   void *values[MAX_ARGS];
     20   ffi_arg rint;
     21 
     22   unsigned char uc;
     23 
     24   args[0] = &ffi_type_uchar;
     25   values[0] = &uc;
     26 
     27   /* Initialize the cif */
     28   CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
     29 		     &ffi_type_uchar, args) == FFI_OK);
     30 
     31   for (uc = (unsigned char) '\x00';
     32        uc < (unsigned char) '\xff'; uc++)
     33     {
     34       ffi_call(&cif, FFI_FN(return_uc), &rint, values);
     35       CHECK(rint == (signed int) uc);
     36     }
     37   exit(0);
     38 }
     39