# static.exp -- test script, for GDB, the GNU debugger. # Copyright 2004, 2005, 2007, 2008, 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 . # Based on manythreads written by Jeff Johnston, contributed by Red # Hat. if $tracelevel then { strace $tracelevel } set testfile "staticthreads" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} set static_flag "-static" if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ executable \ [list debug "incdir=${objdir}" "additional_flags=${static_flag}" \ ]] != "" } { return -1 } gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} gdb_test "set print sevenbit-strings" "" # See if the static multi-threaded program runs. runto_main gdb_test "break sem_post" set test "Continue to main's call of sem_post" gdb_test_multiple "continue" "$test" { -re "Breakpoint .*, .*sem_post .*$gdb_prompt " { pass "$test" } -re "Program received signal .*$gdb_prompt " { kfail gdb/1328 "$test" } } # See if handle SIG32 helps (a little) with a static multi-threaded # program. set sig "SIG32" # SIGRTMIN is 37 on hppa-linux and hpux if [istarget hppa*-*-*] { set sig "SIG37" } rerun_to_main gdb_test "handle $sig nostop noprint pass" set test "Handle $sig helps" gdb_test "continue" " .*sem_post .*" "handle $sig helps" # See if info threads produces anything approaching a thread list. set test "info threads" gdb_test_multiple "info threads" "$test" { -re " Thread .*$gdb_prompt " { pass "$test" } -re "$gdb_prompt " { kfail gdb/1328 "$test" } } # Check that the program can be quit. set test "GDB exits with static thread program" gdb_test_multiple "quit" "$test" { -re "Quit anyway\\? \\(y or n\\) $" { send_gdb "y\n" exp_continue } eof { pass "$test" } }