From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9836 invoked by alias); 18 Oct 2013 09:20:52 -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 9826 invoked by uid 89); 18 Oct 2013 09:20:52 -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: mms2.broadcom.com Received: from mms2.broadcom.com (HELO mms2.broadcom.com) (216.31.210.18) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 18 Oct 2013 09:20:51 +0000 Received: from [10.9.208.55] by mms2.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Fri, 18 Oct 2013 02:20:34 -0700 X-Server-Uuid: 4500596E-606A-40F9-852D-14843D8201B2 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS07.corp.ad.broadcom.com (10.9.208.55) with Microsoft SMTP Server (TLS) id 14.1.438.0; Fri, 18 Oct 2013 02:20:40 -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; Fri, 18 Oct 2013 02:20:39 -0700 Received: from [10.177.73.67] (unknown [10.177.73.67]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 85B33246A4 for ; Fri, 18 Oct 2013 02:20:39 -0700 (PDT) Message-ID: <5260FD66.7090506@broadcom.com> Date: Fri, 18 Oct 2013 09:20: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" Subject: [PATCH] Extra error message from update_watchpoint Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2013-10/txt/msg00551.txt.bz2 While working on this: URL I found the error message: Expression cannot be implemented with read/access watchpoint. is also issued when hardware watchpoints are turned off, this error seems a little confusing as the problem is not the expression, but that software read/access watchpoints is not supported. After the patch I've ADDED an extra error message: Software read/access watchpoints not supported. Which will be selected where appropriate. OK to apply? Thanks, Andrew gdb/ChangeLog 2013-10-18 Andrew Burgess * breakpoint.c (update_watchpoint): Give a different error message when software watchpoints are explicitly turned off. gdb/testsuite/ChangeLog 2013-10-18 Andrew Burgess * gdb.base/watchpoint.exp: (test_no_hw_watchpoints): Update expected results, add additional test. (test_watch_register_location): New. (do_tests): Call test_watch_register_location. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index c630b87..6e87e22 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1946,8 +1946,13 @@ 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 (_("Software read/access watchpoints not supported.")); + 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..5a5f149 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..*" \ + "Software read/access watchpoints not supported..*" \ "rwatch disallowed when can-set-hw-watchpoints cleared" + gdb_test "awatch ival3" \ + "Software read/access watchpoints not supported..*" \ + "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: