diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-12-19 10:31:43 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-12-19 10:31:43 +0000 |
commit | 049682ba03cd30cc582c8c485f6a61ca8a0594e5 (patch) | |
tree | f320a7009248a6239be3a2083d0480c7d00f14b1 /gdb/testsuite/gdb.threads | |
parent | d0f136821434fa55b5c8099a83dd91672f01e579 (diff) | |
download | gdb-049682ba03cd30cc582c8c485f6a61ca8a0594e5.zip gdb-049682ba03cd30cc582c8c485f6a61ca8a0594e5.tar.gz gdb-049682ba03cd30cc582c8c485f6a61ca8a0594e5.tar.bz2 |
gdb/testsuite/
* gdb.threads/attach-stopped.exp (continue (*: attach2 continue))
(*: attach2 stop interrupt, *: attach2, exit leaves process sleeping):
Remove.
* gdb.threads/attachstop-mt.c: Remove.
* gdb.threads/attachstop-mt.exp: Remove.
Diffstat (limited to 'gdb/testsuite/gdb.threads')
-rw-r--r-- | gdb/testsuite/gdb.threads/attach-stopped.exp | 51 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/attachstop-mt.c | 56 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/attachstop-mt.exp | 266 |
3 files changed, 3 insertions, 370 deletions
diff --git a/gdb/testsuite/gdb.threads/attach-stopped.exp b/gdb/testsuite/gdb.threads/attach-stopped.exp index 3fabb03..0731f54 100644 --- a/gdb/testsuite/gdb.threads/attach-stopped.exp +++ b/gdb/testsuite/gdb.threads/attach-stopped.exp @@ -78,61 +78,16 @@ proc corefunc { threadtype } { } else { gdb_test "bt" ".*sleep.*main.*" "$threadtype: attach2 to stopped bt" } - # This breakpoint is there for old/non-x86 kernels not restarting syscalls. - gdb_breakpoint $srcfile:[gdb_get_line_number "Second sleep"] - set test "$threadtype: attach2 continue" - gdb_test_multiple "continue" "continue ($test)" { - -re "Continuing" { - pass "continue ($test)" - } - } - - # For this to work we must be sure to consume the "Continuing." - # message first, or GDB's signal handler may not be in place. - after 1000 {send_gdb "\003"} - set test "$threadtype: attach2 stop interrupt" - gdb_expect 10 { - -re "Program received signal SIGINT.*$gdb_prompt $" - { - pass $test - } - -re "Breakpoint \[0-9\].*$srcfile.*$gdb_prompt $" - { - pass $test - } - timeout - { - fail $test - } - } gdb_exit # Avoid some race: sleep 2 - # At this point, the process should be sleeping + # At this point, the process may be sleeping or T (Stopped) depending on + # the Linux kernel version. The behavior is not tested as it is not + # dependent on GDB. - if [catch {open /proc/${testpid}/status r} fileid2] { - set line2 "NOTFOUND" - } else { - gets $fileid2 line1; - gets $fileid2 line2; - close $fileid2; - } - - set test "$threadtype: attach2, exit leaves process sleeping" - if {[string match "*(sleeping)*" $line2]} { - pass $test - } else { - fail $test - } - - # 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. - remote_exec build "kill -9 ${testpid}" } diff --git a/gdb/testsuite/gdb.threads/attachstop-mt.c b/gdb/testsuite/gdb.threads/attachstop-mt.c deleted file mode 100644 index 6335a0e..0000000 --- a/gdb/testsuite/gdb.threads/attachstop-mt.c +++ /dev/null @@ -1,56 +0,0 @@ -/* This testcase is part of GDB, the GNU debugger. - - Copyright 2008, 2009, 2010, 2011 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -/* This program is intended to be started outside of gdb, then - manually stopped via a signal. */ - -#include <unistd.h> -#include <pthread.h> -#include <stdio.h> -#include <string.h> - -/* Red Hat BZ PR 197584.c */ - -void *func (void *arg) -{ - sleep (10000); /* Ridiculous time, but we will eventually kill it. */ - sleep (10000); /* RHEL3U8 kernel-2.4.21-47.EL will cut the sleep time. */ - - return NULL; /* thread-sleep */ -} - -int main () -{ - pthread_t t1,t2; - int ret; - - ret = pthread_create (&t1, NULL, func, NULL); - if (ret) - fprintf(stderr, "pthread_create(): %s", strerror (ret)); - ret = pthread_create (&t2, NULL, func, NULL); - if (ret) - fprintf(stderr, "pthread_create(): %s", strerror (ret)); - - ret = pthread_join (t1, NULL); - if (ret) /* first-join */ - fprintf(stderr, "pthread_join(): %s", strerror (ret)); - ret = pthread_join (t2, NULL); - if (ret) - fprintf(stderr, "pthread_join(): %s", strerror (ret)); - - return 0; -} diff --git a/gdb/testsuite/gdb.threads/attachstop-mt.exp b/gdb/testsuite/gdb.threads/attachstop-mt.exp deleted file mode 100644 index c939f35..0000000 --- a/gdb/testsuite/gdb.threads/attachstop-mt.exp +++ /dev/null @@ -1,266 +0,0 @@ -# Copyright 2008, 2009, 2010, 2011 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# This test is based on gdb.base/attach.exp with modifications by Jeff Johnston -# <jjohnstn@redhat.com> and Jan Kratochvil <jan.kratochvil@redhat.com>. - -# This test only works on Linux -if { ![isnative] || [is_remote host] || [target_info exists use_gdb_stub] - || ![istarget *-linux*] } { - continue -} - -set testfile "attachstop-mt" -set srcfile ${testfile}.c -set binfile ${objdir}/${subdir}/${testfile} -set escapedbinfile [string_to_regexp ${objdir}/${subdir}/${testfile}] - -#execute_anywhere "rm -f ${binfile}" -remote_exec build "rm -f ${binfile}" -# For debugging this test -# -#log_user 1 - -# build the test case -# -if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { - untested attachstop-mt.exp - return -1 -} - -if [get_compiler_info ${binfile}] { - return -1 -} - -# Start the program running and then wait for a bit, to be sure -# that it can be attached to. - -set testpid [eval exec $binfile &] - -# No race -sleep 2 - -# The testcase has three threads, find some other thread TID for $testpid2. -set tids [exec sh -c "echo /proc/$testpid/task/*"] -regsub -all /proc/$testpid/task/ $tids {} tids -if {$tids == "*"} { - unresolved "/proc/PID/task is not supported (kernel-2.4?)" - remote_exec build "kill -9 ${testpid}" - return -1 -} -set tids [lsort -integer [split $tids]] -if {[llength $tids] != 3 || [lindex $tids 0] != $testpid} { - verbose -log "Invalid TIDs <$tids> for PID $testpid" - fail "Invalid TIDs found" - remote_exec build "kill -9 ${testpid}" - return -1 -} -set testpid2 [lindex $tids 2] - -# Initial sanity test it is normally sleeping -set status2 /proc/${testpid}/task/${testpid2}/status -set fileid0 [open $status2 r]; -gets $fileid0 line1; -gets $fileid0 line2; -close $fileid0; - -set test "attach0, initial sanity check of the sleeping state" -if {[string match "*(sleeping)*" $line2]} { - pass $test -} else { - fail $test -} - -# Sttach and detach to test it will not become stopped -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -gdb_load ${binfile} - -set test "attach0 to sleeping" -gdb_test_multiple "attach $testpid" "$test" { - -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" { - pass "$test" - } -} - -gdb_test "gcore /dev/null" ".*aved corefile.*" "attach0 to sleeping gcore invocation" - -gdb_test "thread 2" ".*witching to thread 2 .*" "attach0 to sleeping switch thread" - -gdb_test "bt" ".*sleep.*func.*" "attach0 to sleeping bt" - -# Exit and detach the process. - -gdb_exit - -# No race -sleep 2 - -# Check it did not get stopped by our gdb -set fileid1 [open $status2 r]; -gets $fileid1 line1; -gets $fileid1 line2; -close $fileid1; - -set test "attach1, post-gdb sanity check of the sleeping state - Red Hat BZ 197584" -if {[string match "*(sleeping)*" $line2]} { - pass $test -} else { - fail $test -} - -# Stop the program -remote_exec build "kill -s STOP ${testpid}" - -# No race -sleep 2 - -# Check it really got stopped by kill(1) -set fileid2 [open $status2 r]; -gets $fileid2 line1; -gets $fileid2 line2; -close $fileid2; - -set test "attach2, initial sanity check of the stopped state" -if {[string match "*(stopped)*" $line2]} { - pass $test -} else { - fail $test -} - -# Start with clean gdb -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -gdb_load ${binfile} - -# Verify that we can attach to the process by first giving its -# executable name via the file command, and using attach with the -# process ID. - -set test "set file, before attach3 to stopped process" -gdb_test_multiple "file $binfile" "$test" { - -re "Load new symbol table from.*y or n. $" { - gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \ - "$test (re-read)" - } - -re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $" { - pass "$test" - } -} - -set test "attach3 to stopped, after setting file" -gdb_test_multiple "attach $testpid" "$test" { - -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" { - pass "$test" - } -} - -# We may be already after the threads phase. -# `thread 2' command is important for the test to switch the current thread to -# a non-primary one for the detach process. - -gdb_test "thread 2" ".*(witching to thread 2 |hread ID 2 not known).*" "attach3 to stopped switch thread" -gdb_test "bt" ".*sleep.*(func|main).*" "attach3 to stopped bt" - -# Exit and detach the process. -gdb_exit - -# Stop the program -remote_exec build "kill -s STOP ${testpid}" - -# No race -sleep 2 - -# Continue the test as we would hit another expected bug regarding -# Program received signal SIGSTOP, Stopped (signal). -# across NPTL threads. - -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -gdb_load ${binfile} - -# Verify that we can attach to the process just by giving the -# process ID. - -set test "attach4 to stopped, after setting file" -gdb_test_multiple "attach $testpid" "$test" { - -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" { - pass "$test" - } -} - -# We may be already after the threads phase. -# `thread 2' command is important for the test to switch the current thread to -# a non-primary one for the detach process. - -gdb_test "thread 2" ".*(witching to thread 2 |hread ID 2 not known).*" "attach4 to stopped switch thread" -gdb_test "bt" ".*sleep.*(func|main).*" "attach4 to stopped bt" - -# RHEL3U8 kernel-2.4.21-47.EL will not return SIGINT but only shorten the sleep. -gdb_breakpoint $srcfile:[gdb_get_line_number "Ridiculous time"] -gdb_breakpoint $srcfile:[gdb_get_line_number "cut the sleep time"] -set test "attach4 continue" -gdb_test_multiple "continue" "continue ($test)" { - -re "Continuing" { - pass "continue ($test)" - } -} - -# For this to work we must be sure to consume the "Continuing." -# message first, or GDB's signal handler may not be in place. -after 1000 {send_gdb "\003"} -set test "attach4 stop by interrupt" -gdb_expect { - -re "Program received signal SIGINT.*$gdb_prompt $" - { - pass $test - } - -re "Breakpoint \[0-9\].*$srcfile.*$gdb_prompt $" - { - pass $test - } - timeout - { - fail "$test (timeout)" - } -} - -gdb_exit - -# No race -sleep 2 - -# At this point, the process should be sleeping - -set fileid4 [open $status2 r]; -gets $fileid4 line1; -gets $fileid4 line2; -close $fileid4; - -set test "attach4, exit leaves process sleeping" -if {[string match "*(sleeping)*" $line2]} { - pass $test -} else { - fail $test -} - -# 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. - -remote_exec build "kill -9 ${testpid}" - -return 0 |