diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 19 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/hbreak.exp | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/pr11022.exp | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/watch-read.exp | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/watch_thread_num.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/watchpoint-hw.exp | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/watchpoint.exp | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/watchthreads-reorder.exp | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/watchthreads.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/watchthreads2.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 70 |
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 |