# Copyright (C) 2018-2020 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. */ # multiple-successive-infcall.exp -- Test if GDB can invoke functions on # multiple inferiors, one after the other. standard_testfile if [get_compiler_info] { return -1 } if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ executable {debug}] != "" } { return -1 } clean_restart "${binfile}" if ![runto_main] then { fail "can't run to main" return 0 } # Ensure that each new thread is detected by GDB in the order that the # test case creates them, so the thread identifiers match between # test and test case. gdb_breakpoint [gdb_get_line_number "prethreadcreationmarker"] gdb_continue_to_breakpoint "prethreadcreationmarker" set after_new_thread_message "created new thread" foreach_with_prefix thread {5 4 3} { gdb_test_multiple "continue" "${after_new_thread_message}" { -re "\\\[New Thread ${hex} \\\(LWP \[0-9\]+\\\)\\\].*${gdb_prompt}" { pass "${after_new_thread_message}" } } } gdb_breakpoint [gdb_get_line_number "testmarker01"] gdb_continue_to_breakpoint "testmarker01" gdb_test_no_output "set scheduler-locking on" gdb_test "show scheduler-locking" \ "Mode for locking scheduler during execution is \"on\"." foreach_with_prefix thread {5 4 3 2 1} { gdb_test "thread ${thread}" "Switching to .*" gdb_test "call get_value()" "= ${thread}" \ "call inferior function" } |