aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Machado <lgustavo@codesourcery.com>2015-04-29 12:22:24 -0300
committerLuis Machado <lgustavo@codesourcery.com>2015-04-29 12:22:24 -0300
commitf24a38c5143e6515c91888223af045d2acaeebf0 (patch)
tree362c04241fd14a2f34c436b5454c0afd16d65157
parentecbf2b3c4f5ee6c00cf058b87fa49708d4030d7f (diff)
downloadgdb-f24a38c5143e6515c91888223af045d2acaeebf0.zip
gdb-f24a38c5143e6515c91888223af045d2acaeebf0.tar.gz
gdb-f24a38c5143e6515c91888223af045d2acaeebf0.tar.bz2
Use software watchpoints if hardware watchpoints are not available when testing gdb.base/watch-bitfields.exp
There are targets GDB thinks support hardware watchpoints, but in reality they don't. Though it may seem that hardware watchpoint creation was successful, the actual insertion of such watchpoint will fail when GDB moves the inferior. (gdb) watch -location q.a^M Hardware watchpoint 2: -location q.a^M (gdb) PASS: gdb.base/watch-bitfields.exp: -location watch against bitfields: watch -location q.a watch -location q.e^M Hardware watchpoint 3: -location q.e^M (gdb) PASS: gdb.base/watch-bitfields.exp: -location watch against bitfields: watch -location q.e print q.a^M $1 = 0^M (gdb) PASS: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.a: 0->1: print expression before continue^M Continuing.^M Warning:^M Could not insert hardware watchpoint 2.^M Could not insert hardware watchpoint 3.^M Could not insert hardware breakpoints:^M You may have requested too many hardware breakpoints/watchpoints.^M ^M (gdb) FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.a: 0->1: continue This leads to a number of FAILs: FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.a: 0->1: continue FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.a: 0->1: print expression after FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.e: 0->5: continue FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.e: 0->5: print expression after FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.a: 1->0: print expression before FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.a: 1->0: continue FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.e: 5->4: print expression before FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.e: 5->4: continue FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: q.e: 5->4: print expression after FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: continue until exit FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 0->4: continue FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 0->4: print expression after FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 4->10: print expression before FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 4->10: continue FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 4->10: print expression after FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 10->3: print expression before FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 10->3: continue FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 10->3: print expression after FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 3->2: print expression before FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 3->2: continue FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 3->2: print expression after FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 2->1: print expression before FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 2->1: continue FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 2->1: print expression after FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 1->0: print expression before FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: q.d + q.f + q.g: 1->0: continue FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: continue until exit We can avoid these errors/FAILs by checking the board data and switching to software watchpoints if the board does not support hardware watchpoints. gdb/testsuite/ChangeLog: 2015-04-29 Luis Machado <lgustavo@codesourcery.com> * gdb.base/watch-bitfields.exp: Switch to software watchpoints if the target does not support hardware watchpoints.
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.base/watch-bitfields.exp5
2 files changed, 10 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3e2df8f..e54d1f6 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2015-04-29 Luis Machado <lgustavo@codesourcery.com>
+ * gdb.base/watch-bitfields.exp: Switch to software watchpoints if
+ the target does not support hardware watchpoints.
+
+2015-04-29 Luis Machado <lgustavo@codesourcery.com>
+
* gdb.base/break-always.exp: Abort testing if writing to memory
causes an error.
diff --git a/gdb/testsuite/gdb.base/watch-bitfields.exp b/gdb/testsuite/gdb.base/watch-bitfields.exp
index 4f97043..201058c 100644
--- a/gdb/testsuite/gdb.base/watch-bitfields.exp
+++ b/gdb/testsuite/gdb.base/watch-bitfields.exp
@@ -91,5 +91,10 @@ proc test_regular_watch {} {
}
}
+# Disable hardware watchpoints if the target does not support them.
+if [target_info exists gdb,no_hardware_watchpoints] {
+ gdb_test_no_output "set can-use-hw-watchpoints 0"
+}
+
test_watch_location
test_regular_watch