OSDN Git Service

2012-01-16 Pedro Alves <palves@redhat.com>
[pf3gnuchains/pf3gnuchains4x.git] / gdb / testsuite / gdb.threads / staticthreads.exp
1 # static.exp -- test script, for GDB, the GNU debugger.
2
3 # Copyright 2004-2005, 2007-2012 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
22 set testfile "staticthreads"
23 set srcfile ${testfile}.c
24 set binfile ${objdir}/${subdir}/${testfile}
25 set static_flag "-static"
26
27 if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
28          executable \
29          [list debug "incdir=${objdir}" "additional_flags=${static_flag}" \
30              ]] != "" } {
31     return -1
32 }
33
34 gdb_start
35 gdb_reinitialize_dir $srcdir/$subdir
36 gdb_load ${binfile}
37 gdb_test_no_output "set print sevenbit-strings"
38
39
40 # See if the static multi-threaded program runs.
41
42 runto_main
43 gdb_test "break sem_post"
44 set test "Continue to main's call of sem_post"
45 gdb_test_multiple "continue" "$test" {
46     -re "Breakpoint .*, .*sem_post .*$gdb_prompt " {
47         pass "$test"
48     }
49     -re "Program received signal .*$gdb_prompt " {
50         kfail gdb/1328 "$test"
51     }
52 }
53     
54
55 # See if handle SIG32 helps (a little) with a static multi-threaded
56 # program.
57
58 set sig "SIG32"
59
60 # SIGRTMIN is 37 on hppa-linux and hpux
61 if [istarget hppa*-*-*] {
62   set sig "SIG37"
63 }
64
65 rerun_to_main
66 gdb_test "handle $sig nostop noprint pass"
67 set test "Handle $sig helps"
68 gdb_test "continue" " .*sem_post .*" "handle $sig helps"
69
70
71 # See if info threads produces anything approaching a thread list.
72
73 set test "info threads"
74 gdb_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
86 set test "GDB exits with static thread program"
87 gdb_test_multiple "quit" "$test" {
88     -re "Quit anyway\\? \\(y or n\\) $" {
89         send_gdb "y\n"
90         exp_continue
91     }
92     eof {
93         pass "$test"
94     }
95 }