* [PATCH] [arm] watchpoint-reuse-slot.exp: skip setting HW points on some address
@ 2015-04-10 13:01 Yao Qi
2015-04-10 13:57 ` Pedro Alves
0 siblings, 1 reply; 3+ messages in thread
From: Yao Qi @ 2015-04-10 13:01 UTC (permalink / raw)
To: gdb-patches
From: Yao Qi <yao.qi@linaro.org>
Hi,
ARM linux kernel has some requirements on the address/length setting
for HW breakpoints/watchpoints, but watchpoint-reuse-slot.exp doesn't
consider them and sets HW points on various addresses. Many fails
are causes as a result:
stepi^M
Warning:^M
Could not insert hardware watchpoint 20.^M
Could not insert hardware breakpoints:^M
You may have requested too many hardware breakpoints/watchpoints.^M
^M
(gdb) FAIL: gdb.base/watchpoint-reuse-slot.exp: always-inserted off: watch x watch: : width 2, iter 2: base + 1: stepi advanced
watch *(buf.byte + 2 + 1)@2^M
Hardware watchpoint 388: *(buf.byte + 2 + 1)@2^M
Warning:^M
Could not insert hardware watchpoint 388.^M
Could not insert hardware breakpoints:^M
You may have requested too many hardware breakpoints/watchpoints.^M
^M
(gdb) FAIL: gdb.base/watchpoint-reuse-slot.exp: always-inserted on: watch x watch: : width 2, iter 2: base + 1: watch *(buf.byte + 2 + 1)@2
This patch is to reflect kernel requirements in watchpoint-reuse-slot.exp
in order to skip some tests.
gdb/testsuite:
2015-04-10 Yao Qi <yao.qi@linaro.org>
* gdb.base/watchpoint-reuse-slot.exp (valid_addr_p): Return
false for some offset and width combinations which aren't
supported by linux kernel.
---
gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp | 27 ++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp b/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp
index 6d2c867..abe81d6 100644
--- a/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp
+++ b/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp
@@ -150,6 +150,33 @@ proc valid_addr_p {cmd offset width} {
return 0
}
}
+ } elseif { [istarget "arm*-*-linux*"] } {
+ if { $cmd == "hbreak" } {
+ # Breakpoints must be of length 2 (thumb) or 4 (ARM) bytes.
+ if { $width != 2 && $width != 4 } {
+ return 0
+ }
+ } else {
+ # Watchpoints can be of length 1, 2, 4 or 8 bytes.
+ if { [expr $width % 2] != 0 } {
+ return 0
+ }
+ }
+
+ if { [expr ($offset) % 8] == 0 && $width == 8 } {
+ # If WIDTH is 8 byte, the address should be 8-byte aligned.
+ return 1
+ } elseif { [expr ($offset) % 4] == 0 } {
+ return 1
+ } elseif { [expr ($offset) % 4] == 2 && $width == 2 } {
+ # Halfword watchpoints and breakpoints.
+ return 1
+ } elseif { [expr ($offset) % 4] == 1 && $width == 1 && $cmd != "hbreak" } {
+ # Single byte watchpoints.
+ return 1
+ } else {
+ return 0
+ }
}
return 1
--
1.9.1
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-04-10 15:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-10 13:01 [PATCH] [arm] watchpoint-reuse-slot.exp: skip setting HW points on some address Yao Qi
2015-04-10 13:57 ` Pedro Alves
2015-04-10 15:25 ` Yao Qi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox