Files
binutils-gdb/gdb/testsuite/gdb.python/py-thread-exited.exp
Tom Tromey 78e7f66e75 Change py-thread-exited.exp to work with gdbserver
gdbserver does not notify gdb of new threads when they are created.
I'm not sure if this is documented anywhere, but it is mentioned on
this page:

https://sourceware.org/gdb/wiki/LocalRemoteFeatureParity

Search for "Finding new threads in the inferior".

This behavior is a bit unfortunate -- I would think that it would be
better to arrange for such notification if something on the gdb side
is interested.

Meanwhile, this patch fixes py-thread-exited.exp to work around this
problem.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30677
2023-08-10 11:42:38 -06:00

55 lines
1.8 KiB
Plaintext

# Copyright (C) 2022-2023 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/>.
require allow_python_tests
load_lib gdb-python.exp
standard_testfile
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
return -1
}
save_vars { GDBFLAGS } {
clean_restart $testfile
}
set pyfile [gdb_remote_download host ${srcdir}/${subdir}/py-thread-exited.py]
gdb_test_no_output "source ${pyfile}" "load python file"
gdb_test "test-events" "Event testers registered."
if ![runto_main] {
return -1
}
gdb_breakpoint [gdb_get_line_number "In thread" ${testfile}.c]
gdb_breakpoint [gdb_get_line_number "Done" ${testfile}.c]
# gdbserver does not notify new threads on creation. In order for
# this test to even see that the threads are created, we have to
# arrange to stop when they are running.
gdb_continue_to_breakpoint "continue to first in-thread breakpoint"
gdb_continue_to_breakpoint "continue to second in-thread breakpoint"
gdb_continue_to_breakpoint "continue to end breakpoint"
gdb_test "python print(threadOneExit)" \
".*event type: thread-exited. global num: 2.*"
gdb_test "python print(threadTwoExit)" \
".*event type: thread-exited. global num: 3.*"