1# static.exp -- test script, for GDB, the GNU debugger. 2 3# Copyright 2004 Free Software Foundation, Inc. 4 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19# Based on manythreads written by Jeff Johnston, contributed by Red 20# Hat. 21 22if $tracelevel then { 23 strace $tracelevel 24} 25 26set prms_id 0 27set bug_id 0 28 29set testfile "staticthreads" 30set srcfile ${testfile}.c 31set binfile ${objdir}/${subdir}/${testfile} 32set static_flag "-static" 33 34if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ 35 executable \ 36 [list debug "incdir=${objdir}" "additional_flags=${static_flag}" \ 37 ]] != "" } { 38 return -1 39} 40 41gdb_start 42gdb_reinitialize_dir $srcdir/$subdir 43gdb_load ${binfile} 44gdb_test "set print sevenbit-strings" "" 45 46 47# See if the static multi-threaded program runs. 48 49runto_main 50gdb_test "break sem_post" 51set test "Continue to main's call of sem_post" 52gdb_test_multiple "continue" "$test" { 53 -re " sem_post .*$gdb_prompt " { 54 pass "$test" 55 } 56 -re "Program received signal .*$gdb_prompt " { 57 kfail gdb/1328 "$test" 58 } 59} 60 61 62# See if handle SIG32 helps (a little) with a static multi-threaded 63# program. 64 65rerun_to_main 66gdb_test "handle SIG32 nostop noprint pass" 67set test "Handle SIG32 helps" 68gdb_test "continue" " sem_post .*" "handle SIG32 helps" 69 70 71# See if info threads produces anything approaching a thread list. 72 73set test "info threads" 74gdb_test_multiple "info threads" "$test" { 75 -re " Thread .*$gdb_prompt " { 76 pass "$test" 77 } 78 -re "$gdb_prompt " { 79 kfail gdb/1328 "$test" 80 } 81} 82 83 84# Check that the program can be quit. 85 86set test "GDB exits with static thread program" 87gdb_test_multiple "quit" "$test" { 88 -re "The program is running. Exit anyway\\? \\(y or n\\) $" { 89 send_gdb "y\n" 90 exp_continue 91 } 92 eof { 93 pass "$test" 94 } 95} 96