1# Copyright (C) 2003, 2007 Free Software Foundation, Inc.
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16# Please email any bugs, comments, and/or additions to this file to:
17# bug-gdb@prep.ai.mit.edu
18
19# This file was written by Daniel Jacobowitz <drow@mvista.com>.
20#
21# It tests that the correct thread is single-stepped.  Prior to the
22# introduction of vCont, we didn't pass enough information to remote
23# multi-threaded stubs to reliably get this correct; gdbserver defaulted
24# to the first thread.
25
26# TODO: we should also test explicitly changing threads with the "thread"
27# command.
28
29if $tracelevel then {
30	strace $tracelevel
31}
32
33set testfile "switch-threads"
34set srcfile ${testfile}.c
35set binfile ${objdir}/${subdir}/${testfile}
36
37if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}"]] != "" } {
38    return -1
39}
40
41gdb_exit
42gdb_start
43gdb_reinitialize_dir $srcdir/$subdir
44gdb_load ${binfile}
45
46runto_main
47
48gdb_breakpoint thread_func
49gdb_continue_to_breakpoint "continue to thread_func"
50gdb_test "next" ".*foo \\(\\);"
51
52