diff options
| author | Raghuram Subramani <raghus2247@gmail.com> | 2022-06-19 19:47:51 +0530 | 
|---|---|---|
| committer | Raghuram Subramani <raghus2247@gmail.com> | 2022-06-19 19:47:51 +0530 | 
| commit | 4fd287655a72b9aea14cdac715ad5b90ed082ed2 (patch) | |
| tree | 65d393bc0e699dd12d05b29ba568e04cea666207 /circuitpython/lib/libffi/testsuite/libffi.call/negint.c | |
| parent | 0150f70ce9c39e9e6dd878766c0620c85e47bed0 (diff) | |
add circuitpython code
Diffstat (limited to 'circuitpython/lib/libffi/testsuite/libffi.call/negint.c')
| -rw-r--r-- | circuitpython/lib/libffi/testsuite/libffi.call/negint.c | 52 | 
1 files changed, 52 insertions, 0 deletions
| diff --git a/circuitpython/lib/libffi/testsuite/libffi.call/negint.c b/circuitpython/lib/libffi/testsuite/libffi.call/negint.c new file mode 100644 index 0000000..6e2f26f --- /dev/null +++ b/circuitpython/lib/libffi/testsuite/libffi.call/negint.c @@ -0,0 +1,52 @@ +/* Area:	ffi_call +   Purpose:	Check that negative integers are passed correctly. +   Limitations:	none. +   PR:		none. +   Originator:	From the original ffitest.c  */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static int checking(int a, short b, signed char c) +{ + +  return (a < 0 && b < 0 && c < 0); +} + +int main (void) +{ +  ffi_cif cif; +  ffi_type *args[MAX_ARGS]; +  void *values[MAX_ARGS]; +  ffi_arg rint; + +  signed int si; +  signed short ss; +  signed char sc; + +  args[0] = &ffi_type_sint; +  values[0] = &si; +  args[1] = &ffi_type_sshort; +  values[1] = &ss; +  args[2] = &ffi_type_schar; +  values[2] = ≻ + +  /* Initialize the cif */ +  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, +		     &ffi_type_sint, args) == FFI_OK); + +  si = -6; +  ss = -12; +  sc = -1; + +  checking (si, ss, sc); + +  ffi_call(&cif, FFI_FN(checking), &rint, values); + +  printf ("%d vs %d\n", (int)rint, checking (si, ss, sc)); + +  CHECK(rint != 0); + +  exit (0); +} | 
