1# Copyright (C) 2007-2020 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 16if [target_info exists gdb,nointerrupts] { 17 verbose "Skipping leader-exit.exp because of nointerrupts." 18 return 19} 20 21# Exit of the thread group leader should not break GDB. 22 23standard_testfile 24set executable ${testfile} 25 26if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 27 return -1 28} 29 30clean_restart ${executable} 31 32if ![runto_main] { 33 return -1 34} 35 36gdb_breakpoint [gdb_get_line_number "break-here"] 37gdb_continue_to_breakpoint "break-here" ".* break-here .*" 38 39gdb_test "info threads" \ 40 "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*" \ 41 "single thread has been left" 42 43# Test that ctrl-c works even if the leader has exited. 44 45set test "continue for ctrl-c" 46gdb_test_multiple "continue" $test { 47 -re "Continuing" { 48 pass $test 49 } 50} 51 52sleep 1 53 54send_gdb "\003" 55 56set test "caught interrupt" 57gdb_test_multiple "" $test { 58 -re "Thread .* received signal SIGINT.*$gdb_prompt $" { 59 pass $test 60 } 61} 62