aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2011-02-21 14:57:38 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2011-02-21 14:57:38 +0000
commitb800ec70e34b8115b645deea9f661a1769149c0a (patch)
treebd007a2df331da8862204f7cd4d5789b9967e343 /gdb
parente25b2cfa2a4fb779f95971926973dd7b77901f81 (diff)
downloadbinutils-b800ec70e34b8115b645deea9f661a1769149c0a.zip
binutils-b800ec70e34b8115b645deea9f661a1769149c0a.tar.gz
binutils-b800ec70e34b8115b645deea9f661a1769149c0a.tar.bz2
* lib/gdb.exp (skip_hw_breakpoint_tests): New procedure.
(skip_hw_watchpoint_tests): Likewise. (skip_hw_watchpoint_multi_tests): Likewise. (skip_hw_watchpoint_access_tests): Likewise. * gdb.base/hbreak.exp: Use appropriate skip_hw_..._tests checks. * gdb.base/pr11022.exp: Likewise. * gdb.base/watch-read.exp: Likewise. * gdb.base/watch_thread_num.exp: Likewise. * gdb.base/watchpoint-hw-hit-once.exp: Likewise. * gdb.base/watchpoint-hw.exp: Likewise. * gdb.base/watchpoint.exp: Likewise. * gdb.threads/local-watch-wrong-thread.exp: Likewise. * gdb.threads/watchthreads-reorder.exp: Likewise. * gdb.threads/watchthreads.exp: Likewise. * gdb.threads/watchthreads2.exp: Likewise.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog19
-rw-r--r--gdb/testsuite/gdb.base/hbreak.exp8
-rw-r--r--gdb/testsuite/gdb.base/pr11022.exp6
-rw-r--r--gdb/testsuite/gdb.base/watch-read.exp5
-rw-r--r--gdb/testsuite/gdb.base/watch_thread_num.exp4
-rw-r--r--gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp8
-rw-r--r--gdb/testsuite/gdb.base/watchpoint-hw.exp9
-rw-r--r--gdb/testsuite/gdb.base/watchpoint.exp8
-rw-r--r--gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp4
-rw-r--r--gdb/testsuite/gdb.threads/watchthreads-reorder.exp5
-rw-r--r--gdb/testsuite/gdb.threads/watchthreads.exp4
-rw-r--r--gdb/testsuite/gdb.threads/watchthreads2.exp4
-rw-r--r--gdb/testsuite/lib/gdb.exp70
13 files changed, 114 insertions, 40 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index c40ce29..e86d6fa 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,22 @@
+2011-02-21 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * lib/gdb.exp (skip_hw_breakpoint_tests): New procedure.
+ (skip_hw_watchpoint_tests): Likewise.
+ (skip_hw_watchpoint_multi_tests): Likewise.
+ (skip_hw_watchpoint_access_tests): Likewise.
+
+ * gdb.base/hbreak.exp: Use appropriate skip_hw_..._tests checks.
+ * gdb.base/pr11022.exp: Likewise.
+ * gdb.base/watch-read.exp: Likewise.
+ * gdb.base/watch_thread_num.exp: Likewise.
+ * gdb.base/watchpoint-hw-hit-once.exp: Likewise.
+ * gdb.base/watchpoint-hw.exp: Likewise.
+ * gdb.base/watchpoint.exp: Likewise.
+ * gdb.threads/local-watch-wrong-thread.exp: Likewise.
+ * gdb.threads/watchthreads-reorder.exp: Likewise.
+ * gdb.threads/watchthreads.exp: Likewise.
+ * gdb.threads/watchthreads2.exp: Likewise.
+
2011-02-21 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/packed_array.exp: Add xfail for "print u_var" if
diff --git a/gdb/testsuite/gdb.base/hbreak.exp b/gdb/testsuite/gdb.base/hbreak.exp
index 7f797e3..7612bcc 100644
--- a/gdb/testsuite/gdb.base/hbreak.exp
+++ b/gdb/testsuite/gdb.base/hbreak.exp
@@ -13,12 +13,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Arch not supporting hw watchpoints does not imply no_hardware_watchpoints set.
-if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"]
- && ![istarget "ia64-*-*"])
- || [target_info exists gdb,no_hardware_watchpoints]} then {
- verbose "Skipping hbreak test."
- return
+if {[skip_hw_breakpoint_tests]} {
+ return 0
}
set test hbreak
diff --git a/gdb/testsuite/gdb.base/pr11022.exp b/gdb/testsuite/gdb.base/pr11022.exp
index 7115f22..ec7bc33 100644
--- a/gdb/testsuite/gdb.base/pr11022.exp
+++ b/gdb/testsuite/gdb.base/pr11022.exp
@@ -17,10 +17,8 @@ if $tracelevel then {
strace $tracelevel
}
-if [target_info exists gdb,no_hardware_watchpoints] {
- # This test requires HW watchpoints
- untested pr11022.exp
- return -1
+if {[skip_hw_watchpoint_tests]} {
+ return 0
}
set testfile "pr11022"
diff --git a/gdb/testsuite/gdb.base/watch-read.exp b/gdb/testsuite/gdb.base/watch-read.exp
index bf62987..052de84 100644
--- a/gdb/testsuite/gdb.base/watch-read.exp
+++ b/gdb/testsuite/gdb.base/watch-read.exp
@@ -27,9 +27,8 @@
set testfile "watch-read"
set srcfile ${testfile}.c
-if { [target_info exists gdb,no_hardware_watchpoints] } {
- untested ${testfile}.exp
- return -1
+if {[skip_hw_watchpoint_access_tests]} {
+ return 0
}
if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
diff --git a/gdb/testsuite/gdb.base/watch_thread_num.exp b/gdb/testsuite/gdb.base/watch_thread_num.exp
index e980746..3a78edb 100644
--- a/gdb/testsuite/gdb.base/watch_thread_num.exp
+++ b/gdb/testsuite/gdb.base/watch_thread_num.exp
@@ -25,8 +25,8 @@ if $tracelevel then {
# This test verifies that a watchpoint is detected in the proper thread
# so the test is only meaningful on a system with hardware watchpoints.
-if [target_info exists gdb,no_hardware_watchpoints] {
- return 0;
+if {[skip_hw_watchpoint_tests]} {
+ return 0
}
set testfile watch_thread_num
diff --git a/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp b/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp
index e560606..171b89b 100644
--- a/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp
+++ b/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp
@@ -13,12 +13,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Arch not supporting hw watchpoints does not imply no_hardware_watchpoints set.
-if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"]
- && ![istarget "ia64-*-*"])
- || [target_info exists gdb,no_hardware_watchpoints]} then {
- verbose "Skipping watchpoint-hw-hit-once test."
- return
+if {[skip_hw_watchpoint_access_tests]} {
+ return 0
}
set test watchpoint-hw-hit-once
diff --git a/gdb/testsuite/gdb.base/watchpoint-hw.exp b/gdb/testsuite/gdb.base/watchpoint-hw.exp
index 3925929..3706699 100644
--- a/gdb/testsuite/gdb.base/watchpoint-hw.exp
+++ b/gdb/testsuite/gdb.base/watchpoint-hw.exp
@@ -13,12 +13,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Arch not supporting hw watchpoints does not imply no_hardware_watchpoints set.
-if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"]
- && ![istarget "ia64-*-*"] && ![istarget "s390*-*-*"])
- || [target_info exists gdb,no_hardware_watchpoints]} then {
- verbose "Skipping watchpoint-hw test."
- return
+
+if {[skip_hw_watchpoint_tests]} {
+ return 0
}
set testfile watchpoint-hw
diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp
index 02df9a1..7450602 100644
--- a/gdb/testsuite/gdb.base/watchpoint.exp
+++ b/gdb/testsuite/gdb.base/watchpoint.exp
@@ -688,10 +688,10 @@ proc test_inaccessible_watchpoint {} {
"$watchpoint_msg \[0-9\]+: \-location: \\*global_ptr"
delete_breakpoints
- # This step requires two HW watchpoints. Since PPC Server only has
- # a single one, it will use a SW watchpoint in this case.
- if [istarget powerpc64-*] {
- set watchpoint_msg "Watchpoint"
+ # This step requires two HW watchpoints. Since some platforms only
+ # have a single one, accept either SW or HW watchpoint in this case.
+ if {[skip_hw_watchpoint_multi_tests]} {
+ set watchpoint_msg "(Watchpoint|Hardware watchpoint)"
}
gdb_test "watch *global_ptr" "$watchpoint_msg \[0-9\]+: \\\*global_ptr"
diff --git a/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp b/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp
index 0247fbd..74f6268 100644
--- a/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp
+++ b/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp
@@ -19,8 +19,8 @@
# thread other than the thread the local watchpoint was set in stops
# for a breakpoint.
-if [target_info exists gdb,no_hardware_watchpoints] {
- return 0;
+if {[skip_hw_watchpoint_multi_tests]} {
+ return 0
}
set testfile "local-watch-wrong-thread"
diff --git a/gdb/testsuite/gdb.threads/watchthreads-reorder.exp b/gdb/testsuite/gdb.threads/watchthreads-reorder.exp
index 7a232e0..38e8b74 100644
--- a/gdb/testsuite/gdb.threads/watchthreads-reorder.exp
+++ b/gdb/testsuite/gdb.threads/watchthreads-reorder.exp
@@ -25,9 +25,8 @@
# could be assigned during continuation of a thread with pending SIGTRAP to the
# different/new watchpoint, just based on the watchpoint/debug register number.
-if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"]
- && ![istarget "ia64-*-*"])
- || [target_info exists gdb,no_hardware_watchpoints]
+if {[skip_hw_watchpoint_access_tests]
+ || [skip_hw_watchpoint_multi_tests]
|| ![istarget *-*-linux*]} {
return 0
}
diff --git a/gdb/testsuite/gdb.threads/watchthreads.exp b/gdb/testsuite/gdb.threads/watchthreads.exp
index c852e5e..a46cd60 100644
--- a/gdb/testsuite/gdb.threads/watchthreads.exp
+++ b/gdb/testsuite/gdb.threads/watchthreads.exp
@@ -24,8 +24,8 @@ if $tracelevel {
# This test verifies that a watchpoint is detected in the proper thread
# so the test is only meaningful on a system with hardware watchpoints.
-if [target_info exists gdb,no_hardware_watchpoints] {
- return 0;
+if {[skip_hw_watchpoint_multi_tests]} {
+ return 0
}
proc target_no_stopped_data { } {
diff --git a/gdb/testsuite/gdb.threads/watchthreads2.exp b/gdb/testsuite/gdb.threads/watchthreads2.exp
index b3c774d..76ab1d4 100644
--- a/gdb/testsuite/gdb.threads/watchthreads2.exp
+++ b/gdb/testsuite/gdb.threads/watchthreads2.exp
@@ -28,8 +28,8 @@ if $tracelevel {
# This test verifies that a watchpoint is detected in the proper thread
# so the test is only meaningful on a system with hardware watchpoints.
-if [target_info exists gdb,no_hardware_watchpoints] {
- return 0;
+if {[skip_hw_watchpoint_tests]} {
+ return 0
}
set testfile "watchthreads2"
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index d523d8e..3ba5488 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1783,6 +1783,76 @@ proc skip_inline_var_tests {} {
return 0
}
+# Return a 1 if we should skip tests that require hardware breakpoints
+
+proc skip_hw_breakpoint_tests {} {
+ # Skip tests if requested by the board (note that no_hardware_watchpoints
+ # disables both watchpoints and breakpoints)
+ if { [target_info exists gdb,no_hardware_watchpoints]} {
+ return 1
+ }
+
+ # These targets support hardware breakpoints natively
+ if { [istarget "i?86-*-*"]
+ || [istarget "x86_64-*-*"]
+ || [istarget "ia64-*-*"] } {
+ return 0
+ }
+
+ return 1
+}
+
+# Return a 1 if we should skip tests that require hardware watchpoints
+
+proc skip_hw_watchpoint_tests {} {
+ # Skip tests if requested by the board
+ if { [target_info exists gdb,no_hardware_watchpoints]} {
+ return 1
+ }
+
+ # These targets support hardware watchpoints natively
+ if { [istarget "i?86-*-*"]
+ || [istarget "x86_64-*-*"]
+ || [istarget "ia64-*-*"]
+ || [istarget "powerpc*-*-linux*"]
+ || [istarget "s390*-*-*"] } {
+ return 0
+ }
+
+ return 1
+}
+
+# Return a 1 if we should skip tests that require *multiple* hardware
+# watchpoints to be active at the same time
+
+proc skip_hw_watchpoint_multi_tests {} {
+ if { [skip_hw_watchpoint_tests] } {
+ return 1
+ }
+
+ # These targets support just a single hardware watchpoint
+ if { [istarget "powerpc*-*-linux*"] } {
+ return 1
+ }
+
+ return 0
+}
+
+# Return a 1 if we should skip tests that require read/access watchpoints
+
+proc skip_hw_watchpoint_access_tests {} {
+ if { [skip_hw_watchpoint_tests] } {
+ return 1
+ }
+
+ # These targets support just write watchpoints
+ if { [istarget "s390*-*-*"] } {
+ return 1
+ }
+
+ return 0
+}
+
set compiler_info "unknown"
set gcc_compiled 0
set hp_cc_compiler 0