diff options
author | Pierre Muller <muller@sourceware.org> | 2007-10-15 07:17:56 +0000 |
---|---|---|
committer | Pierre Muller <muller@sourceware.org> | 2007-10-15 07:17:56 +0000 |
commit | 501b79c1d2f5903ad10f2904cc64cf724b55c29d (patch) | |
tree | e9469bca7577b0a0988b87406c7ebb984e9bb13e /gdb/testsuite/gdb.base/sigstep.c | |
parent | 72ec2876615bc14c34c3cbddcf6bebbbf8885b94 (diff) | |
download | binutils-501b79c1d2f5903ad10f2904cc64cf724b55c29d.zip binutils-501b79c1d2f5903ad10f2904cc64cf724b55c29d.tar.gz binutils-501b79c1d2f5903ad10f2904cc64cf724b55c29d.tar.bz2 |
2007/10/15 Pierre Muller <muller@ics.u-strasbg.fr>
* gdb.base/sigstep.c (main): Add checks for
return values for setitimer call.
Call setitimer again with itimer = ITIMER_REAL
if first call to setitimer fails.
Diffstat (limited to 'gdb/testsuite/gdb.base/sigstep.c')
-rw-r--r-- | gdb/testsuite/gdb.base/sigstep.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.base/sigstep.c b/gdb/testsuite/gdb.base/sigstep.c index c141c96..d5e2bba 100644 --- a/gdb/testsuite/gdb.base/sigstep.c +++ b/gdb/testsuite/gdb.base/sigstep.c @@ -21,6 +21,7 @@ #include <string.h> #include <signal.h> #include <sys/time.h> +#include <errno.h> static volatile int done; @@ -39,9 +40,11 @@ enum { itimer_virtual = ITIMER_VIRTUAL } itimer = ITIMER_VIRTUAL; +int main () { + int res; /* Set up the signal handler. */ memset (&action, 0, sizeof (action)); action.sa_handler = handler; @@ -59,9 +62,21 @@ main () /* Set up a one-off timer. A timer, rather than SIGSEGV, is used as after a timer handler finishes the interrupted code can safely resume. */ - setitimer (itimer, &itime, NULL); + res = setitimer (itimer, &itime, NULL); + if (res == -1) + { + printf ("First call to setitimer failed, errno = %d\r\n",errno); + itimer = ITIMER_REAL; + res = setitimer (itimer, &itime, NULL); + if (res == -1) + { + printf ("Second call to setitimer failed, errno = %d\r\n",errno); + return 1; + } + } /* Wait. */ while (!done); done = 0; } + return 0; } |