From 816395d6f1c433cddc1eaecba2248168c1dd4a5a Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 20 Mar 2010 19:58:29 +0100 Subject: Add support for dup3 to syscall.stp tapset. * tapset/aux_syscalls.stp (_dup3_flag_str): New helper function. * tapset/syscalls.stp (syscall.dup2): Add alternatives to handle dup3 also. * testsuite/systemtap.syscall/dup.c: New testcase. --- testsuite/systemtap.syscall/dup.c | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 testsuite/systemtap.syscall/dup.c (limited to 'testsuite/systemtap.syscall/dup.c') diff --git a/testsuite/systemtap.syscall/dup.c b/testsuite/systemtap.syscall/dup.c new file mode 100644 index 00000000..862f7e91 --- /dev/null +++ b/testsuite/systemtap.syscall/dup.c @@ -0,0 +1,43 @@ +/* COVERAGE: dup dup2 dup3 */ + +#define _GNU_SOURCE +#include +#include +#include +#include + +int main() +{ + dup(2); + //staptest// dup (2) = NNNN + + dup(256); + //staptest// dup (256) = -9 (EBADF) + + dup2(3, 4); + //staptest// dup2 (3, 4) = 4 + + dup2(255, 256); + //staptest// dup2 (255, 256) = -9 (EBADF) + + /* weird corner case oldfd == newfd */ + dup2(1, 1); + //staptest// dup2 (1, 1) = 1 + +#ifdef O_CLOEXEC + dup3 (4, 5, O_CLOEXEC); + //staptest// dup3 (4, 5, O_CLOEXEC) = 5 + + dup3 (256, 255, O_CLOEXEC); + //staptest// dup3 (256, 255, O_CLOEXEC) = -9 (EBADF) + + dup3 (5, 6, 666); + //staptest// dup3 (5, 6, UNKNOWN) = -22 (EINVAL) + + /* corner case not valid for dup3 */ + dup3 (1, 1, O_CLOEXEC); + //staptest// dup3 (1, 1, O_CLOEXEC) = -22 (EINVAL) +#endif + + return 0; +} -- cgit