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 | |
parent | 72ec2876615bc14c34c3cbddcf6bebbbf8885b94 (diff) | |
download | gdb-501b79c1d2f5903ad10f2904cc64cf724b55c29d.zip gdb-501b79c1d2f5903ad10f2904cc64cf724b55c29d.tar.gz gdb-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.
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/sigstep.c | 17 |
2 files changed, 23 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ba9b0f4..2317941 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +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. + 2007-10-11 Kazu Hirata <kazu@codesourcery.com> * lib/gdb.exp (gdb_load_cmd): Print out $loadtimeout instead 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; } |