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