From 501b79c1d2f5903ad10f2904cc64cf724b55c29d Mon Sep 17 00:00:00 2001 From: Pierre Muller Date: Mon, 15 Oct 2007 07:17:56 +0000 Subject: [PATCH] 2007/10/15 Pierre Muller * 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. --- gdb/testsuite/ChangeLog | 7 +++++++ gdb/testsuite/gdb.base/sigstep.c | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ba9b0f47a35..23179418354 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2007/10/15 Pierre Muller + + * 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 * 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 c141c9664af..d5e2bba756d 100644 --- a/gdb/testsuite/gdb.base/sigstep.c +++ b/gdb/testsuite/gdb.base/sigstep.c @@ -21,6 +21,7 @@ #include #include #include +#include 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; } -- 2.39.5