[pushed,gdb/testsuite] Fix gdb.threads/thread-specific-bp.exp on native-gdbserver

Message ID 20230309113151.18356-1-tdevries@suse.de
State Committed
Headers
Series [pushed,gdb/testsuite] Fix gdb.threads/thread-specific-bp.exp on native-gdbserver |

Commit Message

Tom de Vries March 9, 2023, 11:31 a.m. UTC
  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 | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)


base-commit: 64c9b6398c287901119bf282a26c6a27df330663
  

Patch

diff --git a/gdb/testsuite/gdb.threads/thread-specific-bp.exp b/gdb/testsuite/gdb.threads/thread-specific-bp.exp
index cecf946f5c4..2d1c71a68e3 100644
--- a/gdb/testsuite/gdb.threads/thread-specific-bp.exp
+++ b/gdb/testsuite/gdb.threads/thread-specific-bp.exp
@@ -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 {