From patchwork Fri Mar 4 16:40:44 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulrich Weigand X-Patchwork-Id: 346 Return-Path: Delivered-To: unknown Received: from imap.gmail.com (74.125.159.109) by localhost6.localdomain6 with IMAP4-SSL; 08 Jun 2011 14:41:51 -0000 Delivered-To: patches@linaro.org Received: by 10.224.60.68 with SMTP id o4cs20870qah; Fri, 4 Mar 2011 08:40:47 -0800 (PST) Received: by 10.213.8.146 with SMTP id h18mr581283ebh.85.1299256846514; Fri, 04 Mar 2011 08:40:46 -0800 (PST) Received: from mtagate7.uk.ibm.com (mtagate7.uk.ibm.com [194.196.100.167]) by mx.google.com with ESMTPS id k50si5370443eei.45.2011.03.04.08.40.45 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 04 Mar 2011 08:40:46 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning uweigand@de.ibm.com does not designate 194.196.100.167 as permitted sender) client-ip=194.196.100.167; Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning uweigand@de.ibm.com does not designate 194.196.100.167 as permitted sender) smtp.mail=uweigand@de.ibm.com Received: from d06nrmr1307.portsmouth.uk.ibm.com (d06nrmr1307.portsmouth.uk.ibm.com [9.149.38.129]) by mtagate7.uk.ibm.com (8.13.1/8.13.1) with ESMTP id p24Gejxo030735 for ; Fri, 4 Mar 2011 16:40:45 GMT Received: from d06av02.portsmouth.uk.ibm.com (d06av02.portsmouth.uk.ibm.com [9.149.37.228]) by d06nrmr1307.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p24GewVE1630306 for ; Fri, 4 Mar 2011 16:40:58 GMT Received: from d06av02.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av02.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p24Gejjp008085 for ; Fri, 4 Mar 2011 09:40:45 -0700 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d06av02.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with SMTP id p24Geia4008082 for ; Fri, 4 Mar 2011 09:40:44 -0700 Message-Id: <201103041640.p24Geia4008082@d06av02.portsmouth.uk.ibm.com> Received: by tuxmaker.boeblingen.de.ibm.com (sSMTP sendmail emulation); Fri, 04 Mar 2011 17:40:44 +0100 Subject: [rfc, testsuite] Standardize tests for HW watchpoint capabilities To: patches@linaro.org Date: Fri, 4 Mar 2011 17:40:44 +0100 (CET) From: "Ulrich Weigand" X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 http://sourceware.org/ml/gdb-patches/2011-02/msg00415.html ChangeLog: * 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. Index: gdb/testsuite/gdb.base/hbreak.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/hbreak.exp,v retrieving revision 1.4 diff -u -p -r1.4 hbreak.exp --- gdb/testsuite/gdb.base/hbreak.exp 1 Jan 2011 15:33:42 -0000 1.4 +++ gdb/testsuite/gdb.base/hbreak.exp 16 Feb 2011 18:30:03 -0000 @@ -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 Index: gdb/testsuite/gdb.base/pr11022.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/pr11022.exp,v retrieving revision 1.4 diff -u -p -r1.4 pr11022.exp --- gdb/testsuite/gdb.base/pr11022.exp 1 Jan 2011 15:33:42 -0000 1.4 +++ gdb/testsuite/gdb.base/pr11022.exp 16 Feb 2011 18:30:03 -0000 @@ -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" Index: gdb/testsuite/gdb.base/watch-read.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/watch-read.exp,v retrieving revision 1.2 diff -u -p -r1.2 watch-read.exp --- gdb/testsuite/gdb.base/watch-read.exp 1 Jan 2011 15:33:43 -0000 1.2 +++ gdb/testsuite/gdb.base/watch-read.exp 16 Feb 2011 18:30:03 -0000 @@ -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}] } { Index: gdb/testsuite/gdb.base/watch_thread_num.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/watch_thread_num.exp,v retrieving revision 1.13 diff -u -p -r1.13 watch_thread_num.exp --- gdb/testsuite/gdb.base/watch_thread_num.exp 1 Jan 2011 15:33:43 -0000 1.13 +++ gdb/testsuite/gdb.base/watch_thread_num.exp 16 Feb 2011 18:30:03 -0000 @@ -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 Index: gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp,v retrieving revision 1.4 diff -u -p -r1.4 watchpoint-hw-hit-once.exp --- gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp 1 Jan 2011 15:33:43 -0000 1.4 +++ gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp 16 Feb 2011 18:30:03 -0000 @@ -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 Index: gdb/testsuite/gdb.base/watchpoint-hw.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/watchpoint-hw.exp,v retrieving revision 1.4 diff -u -p -r1.4 watchpoint-hw.exp --- gdb/testsuite/gdb.base/watchpoint-hw.exp 1 Jan 2011 15:33:43 -0000 1.4 +++ gdb/testsuite/gdb.base/watchpoint-hw.exp 16 Feb 2011 18:30:03 -0000 @@ -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 Index: gdb/testsuite/gdb.base/watchpoint.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/watchpoint.exp,v retrieving revision 1.34 diff -u -p -r1.34 watchpoint.exp --- gdb/testsuite/gdb.base/watchpoint.exp 1 Jan 2011 15:33:43 -0000 1.34 +++ gdb/testsuite/gdb.base/watchpoint.exp 16 Feb 2011 18:30:04 -0000 @@ -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" Index: gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp,v retrieving revision 1.5 diff -u -p -r1.5 local-watch-wrong-thread.exp --- gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp 1 Jan 2011 15:33:50 -0000 1.5 +++ gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp 16 Feb 2011 18:30:04 -0000 @@ -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" Index: gdb/testsuite/gdb.threads/watchthreads-reorder.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.threads/watchthreads-reorder.exp,v retrieving revision 1.4 diff -u -p -r1.4 watchthreads-reorder.exp --- gdb/testsuite/gdb.threads/watchthreads-reorder.exp 1 Jan 2011 15:33:50 -0000 1.4 +++ gdb/testsuite/gdb.threads/watchthreads-reorder.exp 16 Feb 2011 18:30:04 -0000 @@ -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 } Index: gdb/testsuite/gdb.threads/watchthreads.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.threads/watchthreads.exp,v retrieving revision 1.14 diff -u -p -r1.14 watchthreads.exp --- gdb/testsuite/gdb.threads/watchthreads.exp 1 Jan 2011 15:33:50 -0000 1.14 +++ gdb/testsuite/gdb.threads/watchthreads.exp 16 Feb 2011 18:30:04 -0000 @@ -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 { } { Index: gdb/testsuite/gdb.threads/watchthreads2.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.threads/watchthreads2.exp,v retrieving revision 1.6 diff -u -p -r1.6 watchthreads2.exp --- gdb/testsuite/gdb.threads/watchthreads2.exp 1 Jan 2011 15:33:50 -0000 1.6 +++ gdb/testsuite/gdb.threads/watchthreads2.exp 16 Feb 2011 18:30:04 -0000 @@ -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" Index: gdb/testsuite/lib/gdb.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v retrieving revision 1.162 diff -u -p -r1.162 gdb.exp --- gdb/testsuite/lib/gdb.exp 1 Jan 2011 15:33:51 -0000 1.162 +++ gdb/testsuite/lib/gdb.exp 16 Feb 2011 18:30:05 -0000 @@ -1782,6 +1782,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