diff options
author | Anthony Green <green@moxielogic.com> | 2009-10-04 08:11:33 -0400 |
---|---|---|
committer | Anthony Green <green@moxielogic.com> | 2009-10-04 08:11:33 -0400 |
commit | c6dddbd02bad9654ed58cdb0feb360934d105dec (patch) | |
tree | eac77260c97ba28f2869ec738dedc0e68745de1a /testsuite/libffi.call/.svn/text-base/strlen.c.svn-base | |
download | libffi-c6dddbd02bad9654ed58cdb0feb360934d105dec.tar.gz |
Initial commit
Diffstat (limited to 'testsuite/libffi.call/.svn/text-base/strlen.c.svn-base')
-rw-r--r-- | testsuite/libffi.call/.svn/text-base/strlen.c.svn-base | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/testsuite/libffi.call/.svn/text-base/strlen.c.svn-base b/testsuite/libffi.call/.svn/text-base/strlen.c.svn-base new file mode 100644 index 0000000..3de45de --- /dev/null +++ b/testsuite/libffi.call/.svn/text-base/strlen.c.svn-base @@ -0,0 +1,44 @@ +/* Area: ffi_call + Purpose: Check strlen function call. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +static size_t my_strlen(char *s) +{ + return (strlen(s)); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + char *s; + + args[0] = &ffi_type_pointer; + values[0] = (void*) &s; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sint, args) == FFI_OK); + + s = "a"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 1); + + s = "1234567"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 7); + + s = "1234567890123456789012345"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 25); + + exit (0); +} + |