diff options
Diffstat (limited to 'gdb/testsuite/gdb.threads')
-rw-r--r-- | gdb/testsuite/gdb.threads/tls.c | 67 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/tls.exp | 1 |
2 files changed, 34 insertions, 34 deletions
diff --git a/gdb/testsuite/gdb.threads/tls.c b/gdb/testsuite/gdb.threads/tls.c index c4f6a30432c..9b2145e652f 100644 --- a/gdb/testsuite/gdb.threads/tls.c +++ b/gdb/testsuite/gdb.threads/tls.c @@ -89,26 +89,28 @@ void *spin( vp ) fprintf (stderr, "th %d post on tell main\n", me); #endif - do + while (1) { - errno = 0; #ifdef START_DEBUG fprintf (stderr, "th %d start wait on tell_thread\n", me); #endif - if (sem_wait (&tell_thread) == -1) - { - if (errno != EINTR) - { - fprintf (stderr, "th %d wait on sem tell_thread failed\n", me); - print_error (); - return; - } + if (sem_wait (&tell_thread) == 0) + break; + + if (errno == EINTR) + { #ifdef START_DEBUG - fprintf (stderr, "th %d wait tell_thread got EINTR, rewaiting\n", me); + fprintf (stderr, "th %d wait tell_thread got EINTR, rewaiting\n", me); #endif + continue; + } + else + { + fprintf (stderr, "th %d wait on sem tell_thread failed\n", me); + print_error (); + return; } } - while (errno == EINTR); #ifdef START_DEBUG fprintf (stderr, "th %d Wait on tell_thread\n", me); @@ -151,33 +153,30 @@ do_pass() } for( i = 0; i < N_THREADS; i++ ) - { - do - { - errno = 0; - -#ifdef START_DEBUG - fprintf (stderr, "main %d start wait on tell_main\n", i); -#endif - if (sem_wait (&tell_main) == -1) - { - if (errno != EINTR) - { - fprintf (stderr, "main %d wait on sem tell_main failed\n", i); - print_error (); - return; - } + { + while (1) + { #ifdef START_DEBUG - fprintf (stderr, "main %d wait tell_main got EINTR, rewaiting\n", i); + fprintf (stderr, "main %d start wait on tell_main\n", i); #endif - } - } - while (errno == EINTR); + if (sem_wait (&tell_main) == 0) + break; + if (errno == EINTR) + { #ifdef START_DEBUG - fprintf (stderr, "main %d wait on tell_main\n",i); + fprintf (stderr, "main %d wait tell_main got EINTR, rewaiting\n", i); #endif - } + continue; + } + else + { + fprintf (stderr, "main %d wait on sem tell_main failed\n", i); + print_error (); + return; + } + } + } #ifdef START_DEBUG fprintf (stderr, "main done waiting on tell_main\n"); diff --git a/gdb/testsuite/gdb.threads/tls.exp b/gdb/testsuite/gdb.threads/tls.exp index 53376264e51..3f74993daa0 100644 --- a/gdb/testsuite/gdb.threads/tls.exp +++ b/gdb/testsuite/gdb.threads/tls.exp @@ -212,6 +212,7 @@ check_thread_local "third" gdb_test "continue" ".*Breakpoint 3.*still alive.*" "continue to synch point" +set no_of_threads 0 send_gdb "info thread\n" gdb_expect { -re "^info thread\[ \t\r\n\]+(\[0-9\]+) Thread.*$gdb_prompt $" { |