1# static.exp -- test script, for GDB, the GNU debugger. 2 3# Copyright 2004-2014 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 3 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, see <http://www.gnu.org/licenses/>. 17 18# Based on manythreads written by Jeff Johnston, contributed by Red 19# Hat. 20 21 22standard_testfile 23set static_flag "-static" 24 25if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ 26 executable \ 27 [list debug "additional_flags=${static_flag}" \ 28 ]] != "" } { 29 return -1 30} 31 32clean_restart ${binfile} 33gdb_test_no_output "set print sevenbit-strings" 34 35 36# See if the static multi-threaded program runs. 37 38runto_main 39gdb_test "break sem_post" 40set test "Continue to main's call of sem_post" 41gdb_test_multiple "continue" "$test" { 42 -re "Breakpoint .*, .*sem_post .*$gdb_prompt " { 43 pass "$test" 44 } 45 -re "Program received signal .*$gdb_prompt " { 46 kfail gdb/1328 "$test" 47 } 48} 49 50 51# See if handle SIG32 helps (a little) with a static multi-threaded 52# program. 53 54set sig "SIG32" 55 56# SIGRTMIN is 37 on hppa-linux and hpux 57if [istarget hppa*-*-*] { 58 set sig "SIG37" 59} 60 61rerun_to_main 62gdb_test "handle $sig nostop noprint pass" 63set test "Handle $sig helps" 64gdb_test "continue" " .*sem_post .*" "handle $sig helps" 65 66 67# See if info threads produces anything approaching a thread list. 68 69set test "info threads" 70gdb_test_multiple "info threads" "$test" { 71 -re " Thread .*$gdb_prompt " { 72 pass "$test" 73 } 74 -re "$gdb_prompt " { 75 kfail gdb/1328 "$test" 76 } 77} 78 79 80# Check that the program can be quit. 81 82set test "GDB exits with static thread program" 83gdb_test_multiple "quit" "$test" { 84 -re "Quit anyway\\? \\(y or n\\) $" { 85 send_gdb "y\n" 86 exp_continue 87 } 88 eof { 89 pass "$test" 90 } 91} 92