This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Use software watchpoints if hardware watchpoints are not available when testing gdb.base/watch-bitfi


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f24a38c5143e6515c91888223af045d2acaeebf0

commit f24a38c5143e6515c91888223af045d2acaeebf0
Author: Luis Machado <lgustavo@codesourcery.com>
Date:   Wed Apr 29 12:22:24 2015 -0300

    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.

Diff:
---
 gdb/testsuite/ChangeLog                    | 5 +++++
 gdb/testsuite/gdb.base/watch-bitfields.exp | 5 +++++
 2 files changed, 10 insertions(+)

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]