From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id waPoCGV2fGpIlCAAWB0awg (envelope-from ) for ; Wed, 12 Aug 2026 09:34:29 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Ni9MY80z; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 1EB671E166; Wed, 12 Aug 2026 09:34:29 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id EA7531E033 for ; Wed, 12 Aug 2026 09:34:27 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2040A4BB3B91 for ; Wed, 12 Aug 2026 13:34:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2040A4BB3B91 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Ni9MY80z Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by sourceware.org (Postfix) with ESMTPS id 2E61F4BB3B8D for ; Wed, 12 Aug 2026 13:29:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2E61F4BB3B8D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2E61F4BB3B8D Authentication-Results: sourceware.org; arc=none smtp.remote-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786541383; cv=none; b=BPZfgvXkt0hooCMS17ZVoZKSvRY+jZvUixTpHxSUoIweZZueKOftubnh85VbPNSVaSJ7fZm7zS+hEI/acpWVhh1LA39bMN5D9b9xqXBo8+EJBK5BW2BP91405psHNNtAhX8opKxmsnZuwM+rHmhA13YrYMiCaC302yBuk1CkOz0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786541383; c=relaxed/simple; bh=9jgjRlVverZF1H75ds14RGqyWbAjRvvygtzV8OVEvLc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=B1kdUwILglgAl9PGwOXAZb7Ai7jToIqtMkELCzM7WRC9MZBHghds3y7HcT0ocrPylzzqeIdziWgLgWdOkGx14tMJKFjQtep8XZNH2GtP6QtQmLa0Y2GPx3Xj5Bvrw0CE5ANlEiInNp4WfjjahpTEZBaATKG36n9THWv1P0GIg5Q= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Ni9MY80z DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2E61F4BB3B8D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1786541383; x=1818077383; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=9jgjRlVverZF1H75ds14RGqyWbAjRvvygtzV8OVEvLc=; b=Ni9MY80zPy+s29yrocbcBrHe8fMm2y0BVTEMtZ6BBUcdudkOK62k3dIK XVswlkrEFIWJw90GGmNQHungSqhHjkqAmL2GwtY4xKr1pjG+sh2v2g4n5 vPV5ddbWD4GN6tFyGZFj9Q/bE0FYjj5TjQRc7KNjD60ULm2kXtlPoEbRs KBwoTFqsJBR5ZXMTo6+aVS9skCaq6RCS2ucqxdVZ1pbEyltsJ4UyBEg1v lrAgZBwZbarNOPawd3MPo9QETqbYekDf5LmblEKazCTNpYNnCMdm8O2oL 1mfqVioLxK08SO9niCTn8ufj6CGGWSOrjAAwIpCLtXoQurfIrN63VlS1U Q==; X-CSE-ConnectionGUID: xTKdkjJLQSCAumpgY7oDGw== X-CSE-MsgGUID: 5BzDoaHNRf6tRH0Q2Qx6xg== X-IronPort-AV: E=McAfee;i="6800,10657,11872"; a="97757908" X-IronPort-AV: E=Sophos;i="6.25,219,1779174000"; d="scan'208";a="97757908" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2026 06:29:42 -0700 X-CSE-ConnectionGUID: cCrratgGTGyGp9WtB9GukQ== X-CSE-MsgGUID: MJFIqoVAShG8gDN/Zi0uBw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,219,1779174000"; d="scan'208";a="259817969" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by fmviesa010-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2026 06:29:40 -0700 From: Markus Metzger To: gdb-patches@sourceware.org Subject: [PATCH v4 30/44] gdb: keep target registered in inferior_event_handler() Date: Wed, 12 Aug 2026 15:27:50 +0200 Message-ID: <20260812132805.380163-31-markus.t.metzger@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260812132805.380163-1-markus.t.metzger@intel.com> References: <20260812132805.380163-1-markus.t.metzger@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Even if no threads are currently running, maybe because there are currently no threads, the target may still generate events, e.g. new threads getting dispatched onto a GPU, new modules getting loaded, or new stop replies in response to interrupt requests. The test (added in a subsequent patch) gdb.arch/intelgt-interrupt-exited-thread.exp resumes a GPU inferior with no threads and schedule-multiple off, then interrupts it. We disable schedule-multiple to mimic a scenario where we're only debugging the GPU part. In response to vCtrlC, gdbserver-intelgt sends %Stop:N to indicate that there are still no threads on the GPU. GDB, however, is not able to receive the stop notification, causing the C-c to not have any effect. Subsequent C-c enqueue more stop replies but are not able to interrupt the inferior. GDB appears to hang. Similarly, GDB would not be able to receive %Library notifications, causing the host inferior to hang when GDB is not acknowledging the new library. While we could re-enable target_async() in pass_ctrlc(), this wouldn't solve the inferior hang on library acknowledgement. Several tests that enable debug output need changes because there is debug output after the prompt. Changes are included in this patch. This patch causes regressions in gdb.base/multi-forks.exp because inferiors are pruned from fetch_inferior_event() right after detaching or killing them, whereas the test expects inferiors to remain in the inferior list. Changes to make the test tolerate the new behavior are included in this patch. And in gdb.threads/killed-outside.exp because the SIGKILL is fetched early, and when the target is resumed, the command is aborted when regcache_read_pc() throws in status_callback() from linux_nat_wait_1() because the signalled leader, the only remaining thread, is still stopped at a breakpoint. This patch contains a fix. And in gdb.base/annota-input-while-running.exp gdb.base/annota1.exp gdb.cp/annota2.exp because there may be additional frames-invalid annotations after the pre-prompt (gdb) prompt annotation sequence. Changes to make the tests tolerate the new behavior are included in this patch. And in gdb.threads/process-dies-while-detaching.exp because exited threads are pruned right after killing them, leaving GDB without a live thread for the 'continue' command that is expected to notice thread exits. Changes to make the test tolerate the new behavior are included in this patch. And in gdb.threads/signal-while-stepping-over-bp-other-thread.exp because of an additional fetch_inferior_event cycle after the prompt. Changes to make the test tolerate the new behavior are included in this patch. --- gdb/inf-loop.c | 11 +++-------- gdb/linux-nat.c | 3 +++ .../gdb.base/annota-input-while-running.exp | 2 +- gdb/testsuite/gdb.base/annota1.exp | 4 ++-- .../gdb.base/breakpoint-in-ro-region.exp | 4 ++-- gdb/testsuite/gdb.base/multi-forks.exp | 12 +++++++++++- .../gdb.base/premature-dummy-frame-removal.exp | 16 +++++++++++----- gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp | 4 ++-- gdb/testsuite/gdb.base/ui-redirect.exp | 2 +- gdb/testsuite/gdb.cp/annota2.exp | 2 +- gdb/testsuite/gdb.threads/ia64-sigill.exp | 8 ++++---- .../gdb.threads/process-dies-while-detaching.exp | 5 +++-- ...ignal-while-stepping-over-bp-other-thread.exp | 2 +- .../gdb.threads/stepi-random-signal.exp | 4 ++-- .../gdb.threads/watchthreads-reorder.exp | 4 ++-- 15 files changed, 49 insertions(+), 34 deletions(-) diff --git a/gdb/inf-loop.c b/gdb/inf-loop.c index 95fd4f8a2c5..a68eb740d93 100644 --- a/gdb/inf-loop.c +++ b/gdb/inf-loop.c @@ -43,14 +43,9 @@ inferior_event_handler (enum inferior_event_type event_type) break; case INF_EXEC_COMPLETE: - if (!non_stop) - { - /* Unregister the inferior from the event loop. This is done - so that when the inferior is not running we don't get - distracted by spurious inferior output. */ - if (target_has_execution () && target_can_async_p ()) - target_async (false); - } + /* We need to keep the inferior registered with the event loop. + Even if there are currently no threads in the inferior, so + nothing is running, we may get notifications from the target. */ /* Do all continuations associated with the whole inferior (not a particular thread). */ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 9e015b57379..f28e9367c2c 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -2627,6 +2627,9 @@ status_callback (struct lwp_info *lp) if (!lwp_status_pending_p (lp)) return false; + if (is_lwp_marked_dead (lp)) + return true; + if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT || lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT) { diff --git a/gdb/testsuite/gdb.base/annota-input-while-running.exp b/gdb/testsuite/gdb.base/annota-input-while-running.exp index 747175f0ab5..f825bf7a7a3 100644 --- a/gdb/testsuite/gdb.base/annota-input-while-running.exp +++ b/gdb/testsuite/gdb.base/annota-input-while-running.exp @@ -36,7 +36,7 @@ if {![runto_main]} { # gdb_test_multiple. set old_gdb_prompt $gdb_prompt -set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n" +set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n(\r\n\032\032frames-invalid\r\n)?" # Like gdb_test, but cope with the annotation prompt. proc gdb_annota_test {command pattern message} { diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp index 35eaf26103e..2839c2de12f 100644 --- a/gdb/testsuite/gdb.base/annota1.exp +++ b/gdb/testsuite/gdb.base/annota1.exp @@ -57,7 +57,7 @@ gdb_test "break ${srcfile}:${main_line}" \ # true with this annotated prompt. set old_gdb_prompt $gdb_prompt -set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n" +set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n(\r\n\032\032frames-invalid\r\n)?" # # Escape all the characters in the path that need it. For instance @@ -546,7 +546,7 @@ proc thread_test {} { gdb_breakpoint "$linenum" set gdb_prompt \ - "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n" + "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n(\r\n\032\032frames-invalid\r\n)?" gdb_test_multiple "set annotate 2" "" { -re "set annotate 2\r\n$gdb_prompt$" { diff --git a/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp b/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp index b7ae91155d4..24bc69a3f90 100644 --- a/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp +++ b/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp @@ -44,11 +44,11 @@ proc probe_target_hardware_step {} { gdb_test_no_output "set debug target 1" set test "probe target hardware step" gdb_test_multiple "pipe si | grep resume" $test { - -re "resume \\(\[^\r\n\]+, step, .*$gdb_prompt $" { + -re "resume \\(\[^\r\n\]+, step, .*$gdb_prompt" { set hw_step 1 pass $test } - -re "$gdb_prompt $" { + -re "$gdb_prompt" { pass $test } } diff --git a/gdb/testsuite/gdb.base/multi-forks.exp b/gdb/testsuite/gdb.base/multi-forks.exp index 63e83ca023a..a9d6e3ccc98 100644 --- a/gdb/testsuite/gdb.base/multi-forks.exp +++ b/gdb/testsuite/gdb.base/multi-forks.exp @@ -186,5 +186,15 @@ gdb_test "detach inferior 5" "Detaching .*" "detach 5" for {set i 6} { $i <= 16} {incr i} { gdb_test_no_output "kill inferior $i" "kill $i" - gdb_test "info inferior $i" ".*" "did kill $i" + gdb_test_multiple "info inferior $i" "did kill $i" { + -re -wrap ".*" { + pass $gdb_test_name + } + -re -wrap "No inferiors." { + pass $gdb_test_name + } + -re -wrap ".*" { + fail $gdb_test_name + } + } } diff --git a/gdb/testsuite/gdb.base/premature-dummy-frame-removal.exp b/gdb/testsuite/gdb.base/premature-dummy-frame-removal.exp index 39c59736420..1aaab6369b0 100644 --- a/gdb/testsuite/gdb.base/premature-dummy-frame-removal.exp +++ b/gdb/testsuite/gdb.base/premature-dummy-frame-removal.exp @@ -80,10 +80,16 @@ gdb_test_multiple "p some_func ()" "" { # debug, to format of which isn't fixed. All we care about is that # GDB is still running afterwards. # -gdb_test_no_output "set debug frame on" -gdb_test_lines "p some_func ()" \ - "repeat p some_func () with frame debug on" \ - ".*" -gdb_test_no_output "set debug frame off" +gdb_test "set debug frame on" +gdb_test_multiple "p some_func ()" \ + "repeat p some_func () with frame debug on" { + -re "$gdb_prompt" { + pass $gdb_test_name + } + -re "\[^\r\n\]*\r\n" { + exp_continue + } + } +gdb_test "set debug frame off" gdb_test "p 1 + 2 + 3" " = 6" diff --git a/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp b/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp index be215045048..b7f279b528a 100644 --- a/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp +++ b/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp @@ -65,11 +65,11 @@ gdb_test_no_output "set debug target 1" set hardware_step 0 set test "probe target hardware step" gdb_test_multiple "pipe si | grep resume" $test { - -re "resume \\(\[^\r\n\]+, step, .*$gdb_prompt $" { + -re "resume \\(\[^\r\n\]+, step, .*$gdb_prompt" { set hardware_step 1 pass $test } - -re "$gdb_prompt $" { + -re "$gdb_prompt" { pass $test } } diff --git a/gdb/testsuite/gdb.base/ui-redirect.exp b/gdb/testsuite/gdb.base/ui-redirect.exp index bed11bd2e87..36c60e38782 100644 --- a/gdb/testsuite/gdb.base/ui-redirect.exp +++ b/gdb/testsuite/gdb.base/ui-redirect.exp @@ -119,7 +119,7 @@ with_test_prefix "debugging" { "Copying output to /dev/null.*Copying debug output to /dev/null\\." gdb_test \ - -prompt "$gdb_prompt \\\[infrun\\\] fetch_inferior_event: exit\r\n$" \ + -prompt "$gdb_prompt \\\[infrun\\\] fetch_inferior_event: exit\r\n" \ "continue" \ "Continuing.*\\\[infrun\\\] .*\\\[infrun\\\] .*Breakpoint ${::decimal}, foo.*" diff --git a/gdb/testsuite/gdb.cp/annota2.exp b/gdb/testsuite/gdb.cp/annota2.exp index 466cab05b8a..7243e74435d 100644 --- a/gdb/testsuite/gdb.cp/annota2.exp +++ b/gdb/testsuite/gdb.cp/annota2.exp @@ -62,7 +62,7 @@ gdb_test "break 25" \ # set old_gdb_prompt $gdb_prompt -set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n" +set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n(\r\n\032\032frames-invalid\r\n)?" send_gdb "set annotate 2\n" gdb_expect { diff --git a/gdb/testsuite/gdb.threads/ia64-sigill.exp b/gdb/testsuite/gdb.threads/ia64-sigill.exp index b19c62e8ded..782d0dbb3e7 100644 --- a/gdb/testsuite/gdb.threads/ia64-sigill.exp +++ b/gdb/testsuite/gdb.threads/ia64-sigill.exp @@ -64,7 +64,7 @@ gdb_test_multiple "continue" "continue" -prompt $prompt { set ok 1 exp_continue } - -re -wrap "" { + -re "$gdb_prompt" { gdb_assert { $ok } $gdb_test_name } -re "\r\n\[^\r\n\]*(?=\r\n\[^\r\n\]*\r\n)" { @@ -72,7 +72,7 @@ gdb_test_multiple "continue" "continue" -prompt $prompt { } } -gdb_test_no_output {delete $sigill_bpnum} +gdb_test {delete $sigill_bpnum} set ok 0 gdb_test_multiple "continue" "continue for the pending signal" -prompt $prompt { @@ -80,10 +80,10 @@ gdb_test_multiple "continue" "continue for the pending signal" -prompt $prompt { # Breakpoint has been skipped in the other thread. set ok 1 } - -re " received signal .*\r\n$gdb_prompt $" { + -re " received signal .*\r\n$gdb_prompt" { fail $gdb_test_name } - -re -wrap "" { + -re "$gdb_prompt" { gdb_assert { $ok } $gdb_test_name } -re "\r\n\[^\r\n\]*(?=\r\n\[^\r\n\]*\r\n)" { diff --git a/gdb/testsuite/gdb.threads/process-dies-while-detaching.exp b/gdb/testsuite/gdb.threads/process-dies-while-detaching.exp index edc15f25b06..fe5e1d42c46 100644 --- a/gdb/testsuite/gdb.threads/process-dies-while-detaching.exp +++ b/gdb/testsuite/gdb.threads/process-dies-while-detaching.exp @@ -166,6 +166,7 @@ proc do_detach {multi_process cmd child_exit} { error "unhandled \$child_exit: $child_exit" } + set no_live_thread_re "Cannot execute this command without a live selected thread." set is_remote [expr {[target_info exists gdb_protocol] && [target_info gdb_protocol] == "remote"}] @@ -184,7 +185,7 @@ proc do_detach {multi_process cmd child_exit} { } elseif {$cmd == "continue"} { # Make sure that continuing works and that the parent process # exits cleanly. - gdb_test "continue" $continue_re + gdb_test "continue" ($continue_re|$no_live_thread_re) } else { perror "unhandled command: $cmd" } @@ -197,7 +198,7 @@ proc do_detach {multi_process cmd child_exit} { if {$cmd == "detach"} { gdb_test "detach" "Detaching from .*, process ${decimal}\r\n\\\[Inferior $decimal \\(.*\\) detached\\\]$extra" } elseif {$cmd == "continue"} { - gdb_test "continue" $continue_re + gdb_test "continue" ($continue_re|$no_live_thread_re) } else { perror "unhandled command: $cmd" } diff --git a/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp b/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp index f7bc6cb36b9..d268299ff4a 100644 --- a/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp +++ b/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp @@ -97,7 +97,7 @@ gdb_test "set scheduler-locking off" gdb_test "set debug infrun 1" set test "step" -gdb_test_sequence $test $test -prompt "$gdb_prompt \\\[infrun\\\] fetch_inferior_event: exit\r\n$" { +gdb_test_sequence $test $test -prompt "$gdb_prompt .*\\\[infrun\\\] fetch_inferior_event: exit\r\n$" { "need to step-over" "resume_1: step=1," "signal arrived while stepping over breakpoint" diff --git a/gdb/testsuite/gdb.threads/stepi-random-signal.exp b/gdb/testsuite/gdb.threads/stepi-random-signal.exp index 64b07ec00bb..dc9aca7d759 100644 --- a/gdb/testsuite/gdb.threads/stepi-random-signal.exp +++ b/gdb/testsuite/gdb.threads/stepi-random-signal.exp @@ -83,13 +83,13 @@ if {$prev_addr == ""} { set seen 0 set test "stepi" -set prompt "$gdb_prompt \\\[infrun\\\] fetch_inferior_event: exit\r\n$" +set prompt "$gdb_prompt \\\[infrun\\\] fetch_inferior_event: exit\r\n" if {[gdb_test_multiple "stepi" "$test" -prompt $prompt { -re {\[infrun\] handle_signal_stop: random signal} { set seen 1 exp_continue } - -re "$prompt$" { + -re "$prompt" { } }] != 0} { return diff --git a/gdb/testsuite/gdb.threads/watchthreads-reorder.exp b/gdb/testsuite/gdb.threads/watchthreads-reorder.exp index 192996b51ca..42e611b33ca 100644 --- a/gdb/testsuite/gdb.threads/watchthreads-reorder.exp +++ b/gdb/testsuite/gdb.threads/watchthreads-reorder.exp @@ -89,9 +89,9 @@ foreach reorder {0 1} { with_test_prefix "reorder$reorder" { # found in the DEBUG_INFRUN code path. gdb_test "set debug infrun 1" - set prompt "$gdb_prompt \\\[infrun\\\] fetch_inferior_event: exit\r\n$" + set prompt "$gdb_prompt \\\[infrun\\\] fetch_inferior_event: exit\r\n" gdb_test_multiple "continue" "continue to breakpoint: break-at-exit" -prompt $prompt { - -re ".*break-at-exit.*$prompt$" { + -re ".*break-at-exit.*$prompt" { pass $gdb_test_name } } -- 2.43.0 ________________________________________ Intel Deutschland GmbH Registered Address: Dornacher Strasse 1, 85622 Feldkirchen, Germany Tel: +49 (89) 99143-0 www.intel.de Managing Directors: Candice Moore, Jeffrey Schneiderman, Ramachandran Sitaraman Chairperson of the Supervisory Board: Sonja Pierer Registered Seat: Munich Commercial Register B: Amtsgericht Munich HRB 186928 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.