From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18689 invoked by alias); 31 Oct 2013 13:05:51 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 18677 invoked by uid 89); 31 Oct 2013 13:05:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.2 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mms1.broadcom.com Received: from mms1.broadcom.com (HELO mms1.broadcom.com) (216.31.210.17) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 31 Oct 2013 13:05:48 +0000 Received: from [10.9.208.57] by mms1.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Thu, 31 Oct 2013 06:05:32 -0700 X-Server-Uuid: 06151B78-6688-425E-9DE2-57CB27892261 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS08.corp.ad.broadcom.com (10.9.208.57) with Microsoft SMTP Server (TLS) id 14.1.438.0; Thu, 31 Oct 2013 06:04:23 -0700 Received: from mail-irva-13.broadcom.com (10.10.10.20) by IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) with Microsoft SMTP Server id 14.1.438.0; Thu, 31 Oct 2013 06:04:23 -0700 Received: from [10.177.73.52] (unknown [10.177.73.52]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 760FF246A3; Thu, 31 Oct 2013 06:04:22 -0700 (PDT) Message-ID: <52725555.3080009@broadcom.com> Date: Thu, 31 Oct 2013 13:05:00 -0000 From: "Andrew Burgess" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 MIME-Version: 1.0 To: gdb-patches@sourceware.org cc: "Eli Zaretskii" , "Pedro Alves" Subject: Re: [PATCH] Extra error message from update_watchpoint References: <5260FD66.7090506@broadcom.com> <52616D4B.3020209@redhat.com> <526FE5E9.3000909@broadcom.com> <83ob68dmfb.fsf@gnu.org> <526FF27B.8090209@broadcom.com> <5270F23E.7010602@broadcom.com> <83a9hqepgt.fsf@gnu.org> <52713E2F.2030709@broadcom.com> <837gcueh56.fsf@gnu.org> In-Reply-To: <837gcueh56.fsf@gnu.org> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2013-10/txt/msg00933.txt.bz2 On 30/10/2013 6:40 PM, Eli Zaretskii wrote: >> Date: Wed, 30 Oct 2013 17:13:19 +0000 >> From: "Andrew Burgess" >> cc: "gdb-patches@sourceware.org" >> >> I'd rather make you happy if possible, never hurts to suck up right ;-) > > Thank you! > >> The following follows the structure you gave, I'd be happy to go with >> this except that it's longer than 80 character... is that an issue? >> >> "Can't set read/access watchpoint, software read/access watchpoints not >> supported, and hardware watchpoints disabled (see set/show >> can-use-hw-watchpoints)." > > This is indeed much better. > > As for length, I can suggest a shorter variant: > > Can't set read/access watchpoint when hardware watchpoints are disabled. I've now pushed a version using this shorter message. Pedro, Eli, thanks for the reviews. Andrew gdb/ChangeLog 2013-10-31 Andrew Burgess * breakpoint.c (update_watchpoint): Update error message and add an additional error message. gdb/testsuite/ChangeLog 2013-10-31 Andrew Burgess * gdb.base/watchpoint.exp (test_no_hw_watchpoints): Add additional tests and update expected error message. (test_watch_register_location): New tests. (do_tests): Call test_watch_register_location. * gdb.base/watchpoints.exp: Update expected error message. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 608463d..1782c99 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1805,7 +1805,8 @@ update_watchpoint (struct watchpoint *b, int reparse) if (b->base.ops->works_in_software_mode (&b->base)) b->base.type = bp_watchpoint; else - error (_("Software read/access watchpoints not supported.")); + error (_("Can't set read/access watchpoint when " + "hardware watchpoints are disabled.")); } } else if (within_current_scope && b->exp) @@ -1946,8 +1947,14 @@ update_watchpoint (struct watchpoint *b, int reparse) } } else if (!b->base.ops->works_in_software_mode (&b->base)) - error (_("Expression cannot be implemented with " - "read/access watchpoint.")); + { + if (!can_use_hw_watchpoints) + error (_("Can't set read/access watchpoint when " + "hardware watchpoints are disabled.")); + else + error (_("Expression cannot be implemented with " + "read/access watchpoint.")); + } else b->base.type = bp_watchpoint; diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp index e0d4f81..9576a9e 100644 --- a/gdb/testsuite/gdb.base/watchpoint.exp +++ b/gdb/testsuite/gdb.base/watchpoint.exp @@ -825,8 +825,12 @@ proc test_no_hw_watchpoints {} { # refrains from using them. # gdb_test "rwatch ival3" \ - "Expression cannot be implemented with read/access watchpoint..*" \ + "Can't set read/access watchpoint when hardware watchpoints are disabled." \ "rwatch disallowed when can-set-hw-watchpoints cleared" + gdb_test "awatch ival3" \ + "Can't set read/access watchpoint when hardware watchpoints are disabled." \ + "awatch disallowed when can-set-hw-watchpoints cleared" + # Re-enable hardware watchpoints if necessary. if ![target_info exists gdb,no_hardware_watchpoints] { @@ -879,6 +883,22 @@ proc test_watchpoint_in_big_blob {} { gdb_test_no_output "delete \$bpnum" "delete watch buf" } +proc test_watch_register_location {} { + global no_hw + + if {!$no_hw && ![target_info exists gdb,no_hardware_watchpoints]} { + # Non-memory read/access watchpoints are not supported, they would + # require software read/access watchpoint support (which is not + # currently available). + gdb_test "rwatch \$pc" \ + "Expression cannot be implemented with read/access watchpoint..*" \ + "rwatch disallowed for register based expression" + gdb_test "awatch \$pc" \ + "Expression cannot be implemented with read/access watchpoint..*" \ + "awatch disallowed for register based expression" + } +} + # Start with a fresh gdb. set prev_timeout $timeout @@ -940,6 +960,8 @@ proc do_tests {} { test_wide_location_1 test_wide_location_2 + + test_watch_register_location } # On targets that can do hardware watchpoints, run the tests twice: diff --git a/gdb/testsuite/gdb.base/watchpoints.exp b/gdb/testsuite/gdb.base/watchpoints.exp index b70e86c..4e21d14 100644 --- a/gdb/testsuite/gdb.base/watchpoints.exp +++ b/gdb/testsuite/gdb.base/watchpoints.exp @@ -41,10 +41,10 @@ with_test_prefix "before inferior start" { # and read watchpoints require hardware watchpoint support, with this # turned off these can't be created. gdb_test "awatch ival1" \ - "Software read/access watchpoints not supported." \ + "Can't set read/access watchpoint when hardware watchpoints are disabled." \ "create access watchpoint" gdb_test "rwatch ival1" \ - "Software read/access watchpoints not supported." \ + "Can't set read/access watchpoint when hardware watchpoints are disabled." \ "create read watchpoint" }