]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix gdb.threads/thread-specific-bp.exp on native-gdbserver
authorTom de Vries <tdevries@suse.de>
Thu, 9 Mar 2023 11:31:26 +0000 (12:31 +0100)
committerTom de Vries <tdevries@suse.de>
Thu, 9 Mar 2023 11:31:26 +0000 (12:31 +0100)
With test-case gdb.threads/thread-specific-bp.exp and target board
native-gdbserver I run into:
...
(gdb) PASS: gdb.threads/thread-specific-bp.exp: non_stop=off: thread 1 selected
continue^M
Continuing.^M
Thread-specific breakpoint 3 deleted - thread 2 no longer in the thread list.^M
^M
Thread 1 "thread-specific" hit Breakpoint 4, end () at \
  thread-specific-bp.c:29^M
29      }^M
(gdb) FAIL: gdb.threads/thread-specific-bp.exp: non_stop=off: \
  continue to end (timeout)
...

The problem is that the test-case tries to match the "[Thread ... exited]"
message which we do see with native testing:
...
Continuing.^M
[Thread 0x7ffff746e700 (LWP 7047) exited]^M
Thread-specific breakpoint 3 deleted - thread 2 no longer in the thread list.^M
...

The fact that the message is missing was reported as PR remote/30129.

We could add a KFAIL for this, but the functionality the test-case is trying
to test has nothing to do with the message, so it should pass.  I only added
matching of the message in commit 2e5843d87c4 ("[gdb/testsuite] Fix
gdb.threads/thread-specific-bp.exp") to handle a race, not realizing doing so
broke testing on native-gdbserver.

Fix this by matching the "Thread-specific breakpoint $decimal deleted" message
instead.

Tested on x86_64-linux.

gdb/testsuite/gdb.threads/thread-specific-bp.exp

index cecf946f5c4988d97e9f9b8691d4bd56d8f36fea..2d1c71a68e3616b70f513c6762ce22b8f9189eb7 100644 (file)
@@ -90,8 +90,14 @@ proc check_thread_specific_breakpoint {non_stop} {
     set test "continue to end"
     set thread_exited 0
     set prompt 0
+    set msg_re \
+       [join \
+            [list \
+                 "Thread-specific breakpoint 3 deleted" \
+                 "-" \
+                 "thread 2 no longer in the thread list\\."]]
     gdb_test_multiple "$cmd" $test -lbl {
-       -re "(^|\r\n)\\\[Thread \[^\r\n\]* exited](?=\r\n)" {
+       -re "(^|\r\n)${msg_re}(?=\r\n)" {
            if { $prompt } {
                pass $gdb_test_name
            } else {