diff options
author | Tom Tromey <tromey@adacore.com> | 2023-07-31 11:30:30 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-08-10 11:42:38 -0600 |
commit | 78e7f66e75f93d49a7accf3a7552b2378533b52b (patch) | |
tree | 614f0f60692a0d8cb938c97c3ab3e6522d7de688 | |
parent | d0ffdf6482024331dc43d9c221c7afc5863a300b (diff) | |
download | gdb-78e7f66e75f93d49a7accf3a7552b2378533b52b.zip gdb-78e7f66e75f93d49a7accf3a7552b2378533b52b.tar.gz gdb-78e7f66e75f93d49a7accf3a7552b2378533b52b.tar.bz2 |
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
-rw-r--r-- | gdb/testsuite/gdb.python/py-thread-exited.c | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-thread-exited.exp | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/gdb/testsuite/gdb.python/py-thread-exited.c b/gdb/testsuite/gdb.python/py-thread-exited.c index fd0342b..d62133b 100644 --- a/gdb/testsuite/gdb.python/py-thread-exited.c +++ b/gdb/testsuite/gdb.python/py-thread-exited.c @@ -24,14 +24,14 @@ pthread_t thread3_id; void* do_thread (void* d) { - return NULL; + return NULL; /* In thread */ } int main (void) { pthread_create (&thread2_id, NULL, do_thread, NULL); - pthread_join (thread2_id, NULL); pthread_create (&thread3_id, NULL, do_thread, NULL); + pthread_join (thread2_id, NULL); pthread_join (thread3_id, NULL); - return 12; + return 12; /* Done */ } diff --git a/gdb/testsuite/gdb.python/py-thread-exited.exp b/gdb/testsuite/gdb.python/py-thread-exited.exp index 9575859..9378161 100644 --- a/gdb/testsuite/gdb.python/py-thread-exited.exp +++ b/gdb/testsuite/gdb.python/py-thread-exited.exp @@ -36,9 +36,17 @@ if ![runto_main] { return -1 } -gdb_breakpoint 37 "last of main" -gdb_continue_to_breakpoint "continue to breakpoint" +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.*" |