From 13fc3e3cf91463688635bc4e8a0549c0ea28eb32 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 24 Feb 2012 14:06:29 +0000 Subject: [PATCH] 2012-02-24 Pedro Alves * gdb.threads/attach-into-signal.exp (corefunc): Use with_test_prefix. --- gdb/testsuite/ChangeLog | 5 + .../gdb.threads/attach-into-signal.exp | 220 +++++++++--------- 2 files changed, 113 insertions(+), 112 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 772c5bfbde6..8187f658c6e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-02-24 Pedro Alves + + * gdb.threads/attach-into-signal.exp (corefunc): Use + with_test_prefix. + 2012-02-24 Jan Kratochvil Fix false FAILs on old CPUs without SSE. diff --git a/gdb/testsuite/gdb.threads/attach-into-signal.exp b/gdb/testsuite/gdb.threads/attach-into-signal.exp index e072e51905f..8560584d946 100644 --- a/gdb/testsuite/gdb.threads/attach-into-signal.exp +++ b/gdb/testsuite/gdb.threads/attach-into-signal.exp @@ -39,141 +39,137 @@ proc corefunc { threadtype executable } { global objdir global subdir global gdb_prompt - global pf_prefix - set save_pf_prefix $pf_prefix - lappend pf_prefix "$threadtype:" + with_test_prefix "$threadtype" { + clean_restart ${executable} - clean_restart ${executable} + set binfile ${objdir}/${subdir}/${executable} + set escapedbinfile [string_to_regexp ${objdir}/${subdir}/${executable}] - set binfile ${objdir}/${subdir}/${executable} - set escapedbinfile [string_to_regexp ${objdir}/${subdir}/${executable}] - - if [get_compiler_info ${binfile}] { - set pf_prefix $save_pf_prefix - return -1 - } - - gdb_test "handle SIGALRM stop print pass" "Yes.*Yes.*Yes.*" - - # Start the program running and then wait for a bit, to be sure - # that it can be attached to. - # Statistically there is a better chance without giving process a nice. - - set testpid [eval exec $binfile &] - exec sleep 2 - - # Run 2 passes of the test. - # The C file inferior stops pending its signals if a single one is lost, - # we test successful redelivery of the caught signal by the 2nd pass. + if [get_compiler_info ${binfile}] { + return -1 + } - # linux-2.6.20.4.x86_64 had maximal attempt # 20 in 4 test runs. - set attempts 100 - set attempt 1 - set passes 1 - while { $passes < 3 && $attempt <= $attempts } { - set stoppedtry 0 - while { $stoppedtry < 10 } { - if [catch {open /proc/${testpid}/status r} fileid] { - set stoppedtry 10 - break + gdb_test "handle SIGALRM stop print pass" "Yes.*Yes.*Yes.*" + + # Start the program running and then wait for a bit, to be sure + # that it can be attached to. + # Statistically there is a better chance without giving process a nice. + + set testpid [eval exec $binfile &] + exec sleep 2 + + # Run 2 passes of the test. + # The C file inferior stops pending its signals if a single one is lost, + # we test successful redelivery of the caught signal by the 2nd pass. + + # linux-2.6.20.4.x86_64 had maximal attempt # 20 in 4 test runs. + set attempts 100 + set attempt 1 + set passes 1 + while { $passes < 3 && $attempt <= $attempts } { + set stoppedtry 0 + while { $stoppedtry < 10 } { + if [catch {open /proc/${testpid}/status r} fileid] { + set stoppedtry 10 + break + } + gets $fileid line1; + gets $fileid line2; + close $fileid; + + if {![string match "*(stopped)*" $line2]} { + # No PASS message as we may be looping in multiple + # attempts. + break + } + sleep 1 + set stoppedtry [expr $stoppedtry + 1] } - gets $fileid line1; - gets $fileid line2; - close $fileid; - - if {![string match "*(stopped)*" $line2]} { - # No PASS message as we may be looping in multiple attempts. + if { $stoppedtry >= 10 } { + verbose -log $line2 + set test "process is still running on the attempt # $attempt of $attempts" break } - sleep 1 - set stoppedtry [expr $stoppedtry + 1] - } - if { $stoppedtry >= 10 } { - verbose -log $line2 - set test "process is still running on the attempt # $attempt of $attempts" - break - } - # Main test: - set test "attach (pass $passes), pending signal catch" - if {[gdb_test_multiple "attach $testpid" $test { - -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*Program received signal SIGALRM.*$gdb_prompt $" { - # nonthreaded: - pass $test - verbose -log "$test succeeded on the attempt # $attempt of $attempts" - set passes [expr $passes + 1] - } - -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" { - set ok 0 - - if { $threadtype == "threaded" } { - # In the threaded case, the signal is left pending - # on the second thread. Check for that by peeking - # at the thread's siginfo. SIGALRM is 14, SIGSTOP - # is 19. - - # With remote targets, we need to pull the thread - # list explicitly before GDB even knows about - # thread 2. - set test2 "pull thread list" - gdb_test_multiple "info threads" $test2 { - -re "\r\n$gdb_prompt $" { + # Main test: + set test "attach (pass $passes), pending signal catch" + if {[gdb_test_multiple "attach $testpid" $test { + -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*Program received signal SIGALRM.*$gdb_prompt $" { + # nonthreaded: + pass $test + verbose -log "$test succeeded on the attempt # $attempt of $attempts" + set passes [expr $passes + 1] + } + -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" { + set ok 0 + + if { $threadtype == "threaded" } { + # In the threaded case, the signal is left + # pending on the second thread. Check for + # that by peeking at the thread's siginfo. + # SIGALRM is 14, SIGSTOP is 19. + + # With remote targets, we need to pull the + # thread list explicitly before GDB even knows + # about thread 2. + set test2 "pull thread list" + gdb_test_multiple "info threads" $test2 { + -re "\r\n$gdb_prompt $" { + } } - } - set test2 "thread apply 2 print \$_siginfo.si_signo" - gdb_test_multiple $test2 $test2 { - -re " = 14\r\n$gdb_prompt $" { - set ok 1 - } - -re " = 19\r\n$gdb_prompt $" { + set test2 "thread apply 2 print \$_siginfo.si_signo" + gdb_test_multiple $test2 $test2 { + -re " = 14\r\n$gdb_prompt $" { + set ok 1 + } + -re " = 19\r\n$gdb_prompt $" { + } } + } else { + # In the nonthreaded case, GDB should tell the + # user about having seen a signal. } - } else { - # In the nonthreaded case, GDB should tell the - # user about having seen a signal. - } - if { $ok == 0} { - # We just lack the luck, we should try it again. - set attempt [expr $attempt + 1] - } else { - pass $test - verbose -log "$test succeeded on the attempt # $attempt of $attempts" - set passes [expr $passes + 1] + if { $ok == 0} { + # We just lack the luck, we should try it again. + set attempt [expr $attempt + 1] + } else { + pass $test + verbose -log "$test succeeded on the attempt # $attempt of $attempts" + set passes [expr $passes + 1] + } } + }] != 0 } { + break } - }] != 0 } { - break - } - gdb_test "detach" "Detaching from.*" "" - } - if {$passes < 3} { - if {$attempt > $attempts} { - unresolved $test - } else { - fail $test + gdb_test "detach" "Detaching from.*" "" + } + if {$passes < 3} { + if {$attempt > $attempts} { + unresolved $test + } else { + fail $test + } } - } - # Exit and detach the process. + # Exit and detach the process. - gdb_exit + gdb_exit - # Make sure we don't leave a process around to confuse - # the next test run (and prevent the compile by keeping - # the text file busy), in case the "set should_exit" didn't - # work. + # Make sure we don't leave a process around to confuse the + # next test run (and prevent the compile by keeping the text + # file busy), in case the "set should_exit" didn't work. - # Continue the program - some Linux kernels need it before -9 if the - # process is stopped. - remote_exec build "kill -s CONT ${testpid}" + # Continue the program - some Linux kernels need it before -9 if the + # process is stopped. + remote_exec build "kill -s CONT ${testpid}" - remote_exec build "kill -9 ${testpid}" + remote_exec build "kill -9 ${testpid}" - set pf_prefix $save_pf_prefix + } } # build the test case first without threads -- 2.30.2