Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Shahab Vahedi <shahab.vahedi@amd.com>
To: <gdb-patches@sourceware.org>
Cc: Shahab Vahedi <list+gdb@vahedi.org>,
	Lancelot SIX <lancelot.six@amd.com>,
	 Simon Marchi <simon.marchi@efficios.com>,
	Shahab Vahedi <shahab.vahedi@amd.com>
Subject: [PATCH 2/2] gdb.rocm/watchpoint-basic: add XFAILs for known configurations
Date: Fri, 24 Jul 2026 21:20:54 +0200	[thread overview]
Message-ID: <20260724192054.11399-3-shahab.vahedi@amd.com> (raw)
In-Reply-To: <20260724192054.11399-1-shahab.vahedi@amd.com>

Some of the tests in gdb.rom/watchpoint-basic are destined to fail
due to a problem in KFD.  This patch marks those tests as such on
configurations that this can happen.

Change-Id: Iafd40b18bf8eb7004c8653bca1407b8d86ca0032
---
 gdb/testsuite/gdb.rocm/watchpoint-basic.exp | 78 +++++++++++++++++----
 1 file changed, 66 insertions(+), 12 deletions(-)

diff --git a/gdb/testsuite/gdb.rocm/watchpoint-basic.exp b/gdb/testsuite/gdb.rocm/watchpoint-basic.exp
index 9626b32d5d2..bc30726515e 100644
--- a/gdb/testsuite/gdb.rocm/watchpoint-basic.exp
+++ b/gdb/testsuite/gdb.rocm/watchpoint-basic.exp
@@ -26,14 +26,25 @@ if {[build_executable "failed to prepare" $testfile $srcfile {debug hip}]} {
 }
 
 proc continue_to_watchpoint_hit { old_value new_value test } {
-    gdb_test "continue" \
-	[multi_line \
-	    "hit Hardware watchpoint $::decimal:.*" \
-	    "" \
-	    "Old value = $old_value" \
-	    "New value = $new_value" \
-	    ".*"] \
-	$test
+    set hit_re [multi_line \
+		   "hit Hardware watchpoint $::decimal:.*" \
+		   "" \
+		   "Old value = $old_value" \
+		   "New value = $new_value" \
+		   ".*"]
+
+    set ret false
+    gdb_test_multiple "continue" "$test" {
+	-re -wrap $hit_re {
+	    pass "$gdb_test_name"
+	    set ret true
+	}
+	-re -wrap ".*$::inferior_exited_re.*" {
+	    fail "$gdb_test_name"
+	    set ret false
+	}
+    }
+    return $ret
 }
 
 # Test inserting a watchpoint on a host variable before the runtime loads, and
@@ -78,6 +89,37 @@ proc_with_prefix test_host_watchpoint_after_runtime_load {} {
     }
 }
 
+# On some systems, KFD corrupts the watchpoint configurations
+# during the first dispatch's queue mapping.  This leads to
+# watchpoints not being triggered, if they were set before the
+# first dispatch.  As a result, those test scenarios run to the
+# end and exit prematurely.
+
+gdb_caching_proc target_has_xfail {} {
+    set xfail_arches {gfx1201}
+
+    set targets [find_amdgpu_devices]
+    if {[llength $targets] == 0} {
+	# Can't determine GPU type, don't set up xfail.  The test will probably
+	# not run correctly anyway.
+	return 0
+    }
+
+    # The test will run on GPU-0, so it should be the first of the list.
+    set target [lindex $targets 0]
+
+    return [expr {[lsearch -exact $xfail_arches $target] != -1}]
+}
+
+# This is used when dealing with the first watchpoints that are
+# set before the first dispatch.
+
+proc maybe_xfail {} {
+    if {[target_has_xfail]} {
+	setup_xfail "*-*-*" "watchpoint configuration corruption in kfd."
+    }
+}
+
 # Test inserting a watchpoint before the kernel is launched, then hitting
 # it when the kernel runs.
 
@@ -93,7 +135,10 @@ proc_with_prefix test_watchpoint_before_kernel {} {
 	    "Hardware watchpoint $::decimal: .*" \
 	    "set watchpoint on *ptr1"
 
-	continue_to_watchpoint_hit 0 10 "continue to watchpoint hit 1"
+	maybe_xfail
+	if {![continue_to_watchpoint_hit 0 10 "continue to watchpoint hit 1"]} {
+	    return
+	}
 	continue_to_watchpoint_hit 10 30 "continue to watchpoint hit 2"
 	continue_to_watchpoint_hit 30 40 "continue to watchpoint hit 3"
 	continue_to_watchpoint_hit 40 60 "continue to watchpoint hit 4"
@@ -145,7 +190,10 @@ proc_with_prefix test_remove_watchpoint_inside_kernel {} {
 	    "Hardware watchpoint $::decimal: .*" \
 	    "set watchpoint"
 
-	continue_to_watchpoint_hit 0 10 "continue to watchpoint hit"
+	maybe_xfail
+	if {![continue_to_watchpoint_hit 0 10 "continue to watchpoint hit"]} {
+	    return
+	}
 	gdb_test "with confirm off -- delete" "" "delete all breakpoints"
 
 	gdb_continue_to_end "" continue 1
@@ -170,7 +218,10 @@ proc_with_prefix test_multiple_watchpoints {} {
 	    "Hardware watchpoint $::decimal: .*" \
 	    "set watchpoint on *ptr2"
 
-	continue_to_watchpoint_hit 0 10 "continue to watchpoint hit 1"
+	maybe_xfail
+	if {![continue_to_watchpoint_hit 0 10 "continue to watchpoint hit 1"]} {
+	    return
+	}
 	continue_to_watchpoint_hit 0 100 "continue to watchpoint hit 2"
 	continue_to_watchpoint_hit 10 30 "continue to watchpoint hit 3"
 	continue_to_watchpoint_hit 100 300 "continue to watchpoint hit 4"
@@ -210,7 +261,10 @@ proc_with_prefix test_disable_enable_watchpoint {} {
 	    }
 	}
 
-	continue_to_watchpoint_hit 0 10 "continue to watchpoint hit 1"
+	maybe_xfail
+	if {![continue_to_watchpoint_hit 0 10 "continue to watchpoint hit 1"]} {
+	    return
+	}
 
 	gdb_test_no_output "disable $wp1_num" "disable watchpoint"
 
-- 
2.55.0


  parent reply	other threads:[~2026-07-24 19:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-24 19:20 [PATCH 0/2] gdb.rocm/watchpoint-basic: adjustments Shahab Vahedi
2026-07-24 19:20 ` [PATCH 1/2] gdb.rocm/watchpoint-basic: use gdb_continue_to_end Shahab Vahedi
2026-07-24 19:20 ` Shahab Vahedi [this message]
2026-07-27  8:19 ` [PATCH 0/2] gdb.rocm/watchpoint-basic: adjustments Luis

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=20260724192054.11399-3-shahab.vahedi@amd.com \
    --to=shahab.vahedi@amd.com \
    --cc=gdb-patches@sourceware.org \
    --cc=lancelot.six@amd.com \
    --cc=list+gdb@vahedi.org \
    --cc=simon.marchi@efficios.com \
    /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