]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.threads/thread-execl.exp
gdb/
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.threads / thread-execl.exp
CommitLineData
b3444185
PA
1# Copyright (C) 2009 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# Test that GDB doesn't get stuck when stepping over an exec call done
17# by a thread other than the main thread.
18
19# There's no support for exec events in the remote protocol.
20if { [is_remote target] } {
21 return 0
22}
23
24set testfile "thread-execl"
25set srcfile ${testfile}.c
26set binfile ${objdir}/${subdir}/${testfile}
27
28if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
29 executable [list debug "incdir=${objdir}"]] != "" } {
30 return -1
31}
32
33# Start with a fresh gdb.
34
35gdb_exit
36gdb_start
37gdb_reinitialize_dir $srcdir/$subdir
38gdb_load ${binfile}
39
40runto_main
41
42# Get ourselves to the thread that execs
43gdb_breakpoint "thread_execler"
44gdb_test "continue" ".*thread_execler.*" "continue to thread start"
45
46# Now set a breakpoint at `main', and step over the execl call. The
47# breakpoint at main should be reached. GDB should not try to revert
48# back to the old thread from the old image and resume stepping it
49# (since it is gone).
50gdb_breakpoint "main"
51gdb_test "next" ".*main.*" "get to main in new image"
52
53return 0