URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.threads/] [fork-thread-pending.exp] - Rev 227
Compare with Previous | Blame | View Log
# Copyright (C) 2009, 2010 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/>.# There's no support for `set follow-fork-mode' in the remote# protocol.if { [is_remote target] } {return 0}# Only GNU/Linux is known to support `set follow-fork-mode child'.#if { ! [istarget "*-*-linux*"] } {return 0}set testfile fork-thread-pendingset srcfile ${testfile}.cset binfile ${objdir}/${subdir}/${testfile}if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {return -1}gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}if ![runto_main] then {fail "Can't run to main"return 0}gdb_test "set follow-fork-mode child" "" "1, set follow-fork-mode child"gdb_test "catch fork" "Catchpoint \[0-9\]* \\(fork\\)" "1, insert fork catchpoint"gdb_breakpoint "start" "" "1, set breakpoint at start"gdb_test "continue" "Catchpoint.*" "1, get to the fork event"gdb_test "info threads" " Thread .* Thread .* Thread .* Thread .*" "1, multiple threads found"gdb_test "thread 2" "" "1, switched away from event thread"gdb_test "continue" "Not resuming.*" "1, refused to resume"set test "1, followed to the child, found one thread"gdb_test_multiple "info threads" "metest" {-re " Thread .* Thread .*$gdb_prompt $" {fail "$test"}-re " Thread .*$gdb_prompt $" {pass "$test"}-re "$gdb_prompt $" {fail "$test (unknown output)"}timeout {fail "$test (timeout)"}}gdb_test "continue" "Breakpoint 3, start.*" "1, get to the spawned thread in fork child"set test "1, followed to the child, found two threads"gdb_test_multiple "info threads" "$test" {-re " Thread .* Thread .* Thread .*$gdb_prompt $" {fail "$test"}-re " Thread .* Thread .*$gdb_prompt $" {pass "$test"}-re "$gdb_prompt $" {fail "$test (unknown output)"}timeout {fail "$test (timeout)"}}# Start over, but this time, don't switch away from the fork event thread.gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}if ![runto_main] then {fail "Can't run to main"return 0}gdb_test "set follow-fork-mode child" "" "2, set follow-fork-mode child"gdb_test "catch fork" "Catchpoint \[0-9\]* \\(fork\\)" "2, insert fork catchpoint"gdb_breakpoint "start"gdb_test "continue" "Catchpoint.*" "2, get to the fork event"gdb_test "info threads" " Thread .* Thread .* Thread .* Thread .*" "2, multiple threads found"gdb_test "continue" "Breakpoint 3, start.*" "2, get to the spawned thread in fork child"set test "2, followed to the child, found two threads"gdb_test_multiple "info threads" "$test" {-re " Thread .* Thread .* Thread .*$gdb_prompt $" {fail "$test"}-re " Thread .* Thread .*$gdb_prompt $" {pass "$test"}-re "$gdb_prompt $" {fail "$test (unknown output)"}timeout {fail "$test (timeout)"}}
