From b800ec70e34b8115b645deea9f661a1769149c0a Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Mon, 21 Feb 2011 14:57:38 +0000 Subject: [PATCH] * 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. --- gdb/testsuite/ChangeLog | 19 +++++ gdb/testsuite/gdb.base/hbreak.exp | 8 +-- gdb/testsuite/gdb.base/pr11022.exp | 6 +- gdb/testsuite/gdb.base/watch-read.exp | 5 +- gdb/testsuite/gdb.base/watch_thread_num.exp | 4 +- .../gdb.base/watchpoint-hw-hit-once.exp | 8 +-- gdb/testsuite/gdb.base/watchpoint-hw.exp | 9 +-- gdb/testsuite/gdb.base/watchpoint.exp | 8 +-- .../gdb.threads/local-watch-wrong-thread.exp | 4 +- .../gdb.threads/watchthreads-reorder.exp | 5 +- gdb/testsuite/gdb.threads/watchthreads.exp | 4 +- gdb/testsuite/gdb.threads/watchthreads2.exp | 4 +- gdb/testsuite/lib/gdb.exp | 70 +++++++++++++++++++ 13 files changed, 114 insertions(+), 40 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c40ce299e07..e86d6fa69c7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,22 @@ +2011-02-21 Ulrich Weigand + + * 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 * 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 7f797e3e930..7612bcceb4b 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 . -# 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 7115f22ae74..ec7bc33b887 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 bf62987b674..052de8477ff 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 e9807465bc5..3a78edb9c3f 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 e560606fc65..171b89b506e 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 . -# 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 3925929649a..3706699037b 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 . -# 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 02df9a1c9cd..7450602075d 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 0247fbdd00f..74f62684466 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 7a232e0f45e..38e8b74e2a5 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 c852e5e25fd..a46cd6058a9 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 b3c774d8280..76ab1d497cd 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 d523d8e3626..3ba5488a09a 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 -- 2.30.2