aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.threads
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-12-19 10:31:43 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-12-19 10:31:43 +0000
commit049682ba03cd30cc582c8c485f6a61ca8a0594e5 (patch)
treef320a7009248a6239be3a2083d0480c7d00f14b1 /gdb/testsuite/gdb.threads
parentd0f136821434fa55b5c8099a83dd91672f01e579 (diff)
downloadgdb-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.exp51
-rw-r--r--gdb/testsuite/gdb.threads/attachstop-mt.c56
-rw-r--r--gdb/testsuite/gdb.threads/attachstop-mt.exp266
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