From: Andrew Burgess <aburgess@redhat.com>
To: gdb-patches@sourceware.org
Cc: Andrew Burgess <aburgess@redhat.com>
Subject: [PATCHv2 2/6] gdb/testsuite: don't try to set non-stop mode on a running target
Date: Fri, 20 Jan 2023 09:46:25 +0000 [thread overview]
Message-ID: <b60db013cdf181a9ac9d27a0f288c9542a4dcb41.1674207665.git.aburgess@redhat.com> (raw)
In-Reply-To: <cover.1674207665.git.aburgess@redhat.com>
The test gdb.threads/thread-specific-bp.exp tries to set non-stop mode
on a running target, something which the manual makes clear is not
allowed.
The consequence of this is that the gdb.threads/thread-specific-bp.exp
test has one failure when run with the native-extended-gdbserver
board.
This commit restructures the test a little, we now set the non-stop
mode as part of the GDBFLAGS, so the mode will be set before GDB
connects to the target. As a consequence I'm able to move the
with_test_prefix out of the check_thread_specific_breakpoint proc.
The check_thread_specific_breakpoint proc is now called within a loop.
After this commit the gdb.threads/thread-specific-bp.exp test has zero
failures for me with native-extended-gdbserver, native-gdbserver, and
the unix board.
---
.../gdb.threads/thread-specific-bp.exp | 138 +++++++++---------
1 file changed, 67 insertions(+), 71 deletions(-)
diff --git a/gdb/testsuite/gdb.threads/thread-specific-bp.exp b/gdb/testsuite/gdb.threads/thread-specific-bp.exp
index f603b24fa31..d33b4f47258 100644
--- a/gdb/testsuite/gdb.threads/thread-specific-bp.exp
+++ b/gdb/testsuite/gdb.threads/thread-specific-bp.exp
@@ -24,8 +24,6 @@ if {[gdb_compile_pthreads \
return -1
}
-clean_restart ${binfile}
-
# Extract and return the thread ID of the thread stopped at function
# FUNC.
@@ -45,86 +43,84 @@ proc get_thread_id {func} {
return $thre
}
-proc check_thread_specific_breakpoint {mode} {
- with_test_prefix "$mode" {
- global gdb_prompt
+proc check_thread_specific_breakpoint {non_stop} {
+ global gdb_prompt
- if ![runto_main] {
- return -1
- }
+ if ![runto_main] {
+ return -1
+ }
- set main_thre [get_thread_id "main"]
- if { $main_thre < 0 } {
- return -1
- }
+ set main_thre [get_thread_id "main"]
+ if { $main_thre < 0 } {
+ return -1
+ }
- gdb_breakpoint "start"
- gdb_continue_to_breakpoint "start"
+ gdb_breakpoint "start"
+ gdb_continue_to_breakpoint "start"
- set start_thre [get_thread_id "start"]
- if { $start_thre < 0 } {
- return -1
- }
+ set start_thre [get_thread_id "start"]
+ if { $start_thre < 0 } {
+ return -1
+ }
- # Set a thread-specific breakpoint at "main". This can't ever
- # be hit, but that's OK.
- gdb_breakpoint "main thread $start_thre"
- gdb_test "info break" ".*breakpoint.*thread $start_thre" "breakpoint set"
-
- # Set breakpoint at a place only reacheable after the "start"
- # thread exits.
- gdb_breakpoint "end"
-
- # Switch back to the main thread, and resume all threads. The
- # "start" thread exits, and the main thread reaches "end".
- gdb_test "thread $main_thre" \
- "Switching to thread $main_thre.*" \
- "thread $main_thre selected"
-
- if { $mode == "non-stop" } {
- set cmd "continue -a"
- } else {
- set cmd "continue"
- }
- set test "continue to end"
- set thread_exited 0
- set prompt 0
- gdb_test_multiple "$cmd" $test -lbl {
- -re "(^|\r\n)\\\[Thread \[^\r\n\]* exited](?=\r\n)" {
- if { $prompt } {
- pass $gdb_test_name
- } else {
- set thread_exited 1
- exp_continue
- }
+ # Set a thread-specific breakpoint at "main". This can't ever
+ # be hit, but that's OK.
+ gdb_breakpoint "main thread $start_thre"
+ gdb_test "info break" ".*breakpoint.*thread $start_thre" "breakpoint set"
+
+ # Set breakpoint at a place only reacheable after the "start"
+ # thread exits.
+ gdb_breakpoint "end"
+
+ # Switch back to the main thread, and resume all threads. The
+ # "start" thread exits, and the main thread reaches "end".
+ gdb_test "thread $main_thre" \
+ "Switching to thread $main_thre.*" \
+ "thread $main_thre selected"
+
+ if { $non_stop } {
+ set cmd "continue -a"
+ } else {
+ set cmd "continue"
+ }
+ set test "continue to end"
+ set thread_exited 0
+ set prompt 0
+ gdb_test_multiple "$cmd" $test -lbl {
+ -re "(^|\r\n)\\\[Thread \[^\r\n\]* exited](?=\r\n)" {
+ if { $prompt } {
+ pass $gdb_test_name
+ } else {
+ set thread_exited 1
+ exp_continue
}
- -re "\r\n$gdb_prompt " {
- if { $thread_exited } {
- pass $gdb_test_name
- } else {
- set prompt 1
- exp_continue
- }
+ }
+ -re "\r\n$gdb_prompt " {
+ if { $thread_exited } {
+ pass $gdb_test_name
+ } else {
+ set prompt 1
+ exp_continue
}
}
+ }
- set test "thread-specific breakpoint was deleted"
- gdb_test_multiple "info breakpoint" $test {
- -re "thread $start_thre\n$gdb_prompt $" {
- fail $test
- }
- -re "$gdb_prompt $" {
- pass $test
- }
+ set test "thread-specific breakpoint was deleted"
+ gdb_test_multiple "info breakpoint" $test {
+ -re "thread $start_thre\n$gdb_prompt $" {
+ fail $test
+ }
+ -re "$gdb_prompt $" {
+ pass $test
}
}
}
-# Test all-stop mode.
-check_thread_specific_breakpoint "all-stop"
-
-clean_restart ${binfile}
+foreach_with_prefix non_stop {on off} {
+ save_vars { GDBFLAGS } {
+ append GDBFLAGS " -ex \"set non-stop $non_stop\""
+ clean_restart $binfile
+ }
-# Test non-stop mode.
-gdb_test_no_output "set non-stop on" "set non-stop mode"
-check_thread_specific_breakpoint "non-stop"
+ check_thread_specific_breakpoint $non_stop
+}
--
2.25.4
next prev parent reply other threads:[~2023-01-20 9:46 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-28 11:25 [PATCH 0/6] Inferior specific breakpoints Andrew Burgess
2022-11-28 11:25 ` [PATCH 1/6] gdb/remote: announce thread exit events for remote targets Andrew Burgess
2022-11-28 11:25 ` [PATCH 2/6] gdb/testsuite: don't try to set non-stop mode on a running target Andrew Burgess
2022-11-28 11:25 ` [PATCH 3/6] gdb: fix display of thread condition for multi-location breakpoints Andrew Burgess
2022-12-23 8:37 ` Aktemur, Tankut Baris
2022-11-28 11:25 ` [PATCH 4/6] gdb: error if 'thread' or 'task' keywords are overused Andrew Burgess
2022-11-28 13:10 ` Eli Zaretskii
2022-11-28 11:25 ` [PATCH 5/6] gdb: add inferior-specific breakpoints and watchpoints Andrew Burgess
2022-11-28 13:18 ` Eli Zaretskii
2022-12-23 10:05 ` Aktemur, Tankut Baris
2023-01-19 19:13 ` Andrew Burgess
2023-01-20 13:12 ` Aktemur, Tankut Baris
2022-11-28 11:25 ` [PATCH 6/6] gdb: convert the 'start' breakpoint to use inferior keyword Andrew Burgess
2022-12-23 10:17 ` Aktemur, Tankut Baris
2022-12-23 10:55 ` [PATCH 0/6] Inferior specific breakpoints Aktemur, Tankut Baris
2023-01-20 9:46 ` [PATCHv2 " Andrew Burgess
2023-01-20 9:46 ` [PATCHv2 1/6] gdb/remote: announce thread exit events for remote targets Andrew Burgess
2023-02-02 17:50 ` Pedro Alves
2023-02-04 15:46 ` Andrew Burgess
2023-01-20 9:46 ` Andrew Burgess [this message]
2023-02-04 16:22 ` [PATCHv2 2/6] gdb/testsuite: don't try to set non-stop mode on a running target Andrew Burgess
2023-01-20 9:46 ` [PATCHv2 3/6] gdb: fix display of thread condition for multi-location breakpoints Andrew Burgess
2023-02-02 18:13 ` Pedro Alves
2023-02-06 14:48 ` Andrew Burgess
2023-02-06 17:01 ` Pedro Alves
2023-02-07 14:42 ` Andrew Burgess
2023-01-20 9:46 ` [PATCHv2 4/6] gdb: error if 'thread' or 'task' keywords are overused Andrew Burgess
2023-01-20 13:22 ` Eli Zaretskii
2023-02-02 14:08 ` Andrew Burgess
2023-02-02 14:31 ` Eli Zaretskii
2023-02-02 18:21 ` Pedro Alves
2023-02-03 16:41 ` Andrew Burgess
2023-02-04 5:52 ` Joel Brobecker
2023-02-04 15:40 ` Andrew Burgess
2023-02-06 11:06 ` Andrew Burgess
2023-01-20 9:46 ` [PATCHv2 5/6] gdb: add inferior-specific breakpoints and watchpoints Andrew Burgess
2023-01-20 13:25 ` Eli Zaretskii
2023-02-02 19:17 ` Pedro Alves
2023-02-03 16:55 ` Andrew Burgess
2023-02-06 17:24 ` Pedro Alves
2023-02-16 12:56 ` Aktemur, Tankut Baris
2023-01-20 9:46 ` [PATCHv2 6/6] gdb: convert the 'start' breakpoint to use inferior keyword Andrew Burgess
2023-02-16 12:59 ` Aktemur, Tankut Baris
2023-03-16 17:03 ` [PATCHv3 0/2] Inferior specific breakpoints Andrew Burgess
2023-03-16 17:03 ` [PATCHv3 1/2] gdb: cleanup around some set_momentary_breakpoint_at_pc calls Andrew Burgess
2023-04-03 14:12 ` Andrew Burgess
2023-03-16 17:03 ` [PATCHv3 2/2] gdb: add inferior-specific breakpoints Andrew Burgess
2023-04-03 14:14 ` [PATCHv4] " Andrew Burgess
2023-05-15 19:15 ` [PATCHv5] " Andrew Burgess
2023-05-30 20:41 ` [PATCHv6] " Andrew Burgess
2023-07-07 10:23 ` [PATCHv7] " Andrew Burgess
2023-08-17 15:53 ` [PUSHEDv8] " Andrew Burgess
2023-08-23 8:06 ` [PUSHED] gdb: add missing notify_breakpoint_modified call Andrew Burgess
2023-08-23 8:19 ` [PUSHED] gdb/testsuite: improve MI support for inferior specific breakpoints Andrew Burgess
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b60db013cdf181a9ac9d27a0f288c9542a4dcb41.1674207665.git.aburgess@redhat.com \
--to=aburgess@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).