diff options
author | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:38:33 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:38:33 +0000 |
commit | 1fd5e000ace55b323124c7e556a7a864b972a5c4 (patch) | |
tree | dc4fcf1e5e22a040716ef92c496b8d94959b2baa /winsup/testsuite/winsup.api | |
parent | 369d8a8fd5e887eca547bf34bccfdf755c9e5397 (diff) | |
download | cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.tar.gz cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.tar.bz2 cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.zip |
import winsup-2000-02-17 snapshot
Diffstat (limited to 'winsup/testsuite/winsup.api')
-rw-r--r-- | winsup/testsuite/winsup.api/devzero.c | 113 | ||||
-rw-r--r-- | winsup/testsuite/winsup.api/samples/sample-fail.c | 4 | ||||
-rw-r--r-- | winsup/testsuite/winsup.api/samples/sample-miscompile.c | 1 | ||||
-rw-r--r-- | winsup/testsuite/winsup.api/samples/sample-pass.c | 4 | ||||
-rw-r--r-- | winsup/testsuite/winsup.api/winsup.exp | 43 |
5 files changed, 165 insertions, 0 deletions
diff --git a/winsup/testsuite/winsup.api/devzero.c b/winsup/testsuite/winsup.api/devzero.c new file mode 100644 index 000000000..85a2615b1 --- /dev/null +++ b/winsup/testsuite/winsup.api/devzero.c @@ -0,0 +1,113 @@ +#include <stdio.h> +#include <unistd.h> +#include <sys/types.h> +#include <fcntl.h> +#include <sys/mman.h> + +main() +{ + int fd, r, w, l; + char buf[1024]; + char *v; + + fd = open("/dev/zero", O_RDONLY); + if (fd < 0) + { + fprintf(stderr, "Unable to open /dev/zero for reading\n"); + perror("The error was"); + exit(1); + } + + l = read(fd, buf, 1024); + if (l != 1024) + { + fprintf(stderr, "Asked to read 1024 bytes, got %d\n", l); + exit(1); + } + + for (r=0; r<1024; r++) + if (buf[r] != 0) + { + fprintf(stderr, "/dev/zero returned a byte of %02x at offset %d\n", + buf[r], r); + exit(1); + } + + l = lseek(fd, 4096, 0); + if (l != 0) + { + fprintf(stderr, "l == %d\n", l); + exit(1); + } + + l = close(fd); + if (l != 0) + { + fprintf(stderr, "close: returned %d\n", l); + perror("The error was"); + exit(1); + } + + fd = open("/dev/zero", O_WRONLY); + if (fd < 0) + { + fprintf(stderr, "Unable to open /dev/zero for writing\n"); + perror("The error was"); + exit(1); + } + + l = write(fd, buf, 1024); + if (l != 1024) + { + fprintf(stderr, "Asked to write 1024 bytes, got %d\n", l); + exit(1); + } + + l = close(fd); + if (l != 0) + { + fprintf(stderr, "close: returned %d\n", l); + perror("The error was"); + exit(1); + } + + fd = open("/dev/zero", O_RDWR); + v = (char *)mmap(0, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + if (v == (char *)-1) + { + fprintf(stderr, "mmap r/w /dev/zero failed\n"); + perror("The error was"); + exit(1); + } + + for (r=0; r<65536; r++) + if (v[r] != 0) + { + fprintf(stderr, "mmap'd r/w /dev/zero has byte %d at offset %d\n", + v[r], r); + exit(1); + } + munmap(v, 65536); + close(fd); + + fd = open("/dev/zero", O_RDONLY); + v = (char *)mmap(0, 65536, PROT_READ, MAP_SHARED, fd, 0); + if (v == (char *)-1) + { + fprintf(stderr, "mmap /dev/zero r/o failed\n"); + perror("The error was"); + exit(1); + } + + for (r=0; r<65536; r++) + if (v[r] != 0) + { + fprintf(stderr, "mmap'd r/o /dev/zero has byte %d at offset %d\n", + v[r], r); + exit(1); + } + munmap(v, 65536); + close(fd); + + exit(0); +} diff --git a/winsup/testsuite/winsup.api/samples/sample-fail.c b/winsup/testsuite/winsup.api/samples/sample-fail.c new file mode 100644 index 000000000..d8beb90be --- /dev/null +++ b/winsup/testsuite/winsup.api/samples/sample-fail.c @@ -0,0 +1,4 @@ +main() +{ + return 1; +} diff --git a/winsup/testsuite/winsup.api/samples/sample-miscompile.c b/winsup/testsuite/winsup.api/samples/sample-miscompile.c new file mode 100644 index 000000000..bc0d21d2e --- /dev/null +++ b/winsup/testsuite/winsup.api/samples/sample-miscompile.c @@ -0,0 +1 @@ +foo bar grill diff --git a/winsup/testsuite/winsup.api/samples/sample-pass.c b/winsup/testsuite/winsup.api/samples/sample-pass.c new file mode 100644 index 000000000..893a0b605 --- /dev/null +++ b/winsup/testsuite/winsup.api/samples/sample-pass.c @@ -0,0 +1,4 @@ +main() +{ + return 0; +} diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp new file mode 100644 index 000000000..5c85cc00b --- /dev/null +++ b/winsup/testsuite/winsup.api/winsup.exp @@ -0,0 +1,43 @@ +source "site.exp" + +if { ! [isnative] } { + verbose "skipping winsup.api because it's not native" + return +} + +set rv "" + +proc ws_spawn {cmd args} { + global rv + verbose "running $cmd\n" + catch [eval "exec $cmd"] rv + verbose send "catchCode = $rv\n" +} + +foreach src [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.c] { + regsub "^$srcdir/$subdir/" $src "" testcase + regsub ".c$" $testcase "" base + regsub ".*/" $base "" basename + regsub "/" $base "-" base + + if { [regexp "^xf-" $basename] } { + setup_xfail "*-*-*" + } else { + clear_xfail + } + + ws_spawn "$CC $src $rootme/new-libcygwin.a -o $base.exe" + if { $rv != "" } { + verbose -log "$rv" + fail "$testcase (compile)" + } else { + ws_spawn "../cygrun ./$base.exe" + if { $rv != "" } { + verbose -log "$testcase: $rv" + fail "$testcase (execute)" + } else { + pass "$testcase" + file delete "$base.exe" + } + } +} |