From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20411 invoked by alias); 24 Apr 2012 15:11:59 -0000 Received: (qmail 20403 invoked by uid 22791); 24 Apr 2012 15:11:58 -0000 X-SWARE-Spam-Status: No, hits=-4.2 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 24 Apr 2012 15:11:33 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1SMhOu-0006F5-Pg from Luis_Gustavo@mentor.com ; Tue, 24 Apr 2012 08:11:32 -0700 Received: from NA1-MAIL.mgc.mentorg.com ([147.34.98.181]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 24 Apr 2012 08:11:31 -0700 Received: from [0.0.0.0] ([172.16.63.104]) by NA1-MAIL.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 24 Apr 2012 08:11:32 -0700 Message-ID: <4F96C2A7.2010206@mentor.com> Date: Tue, 24 Apr 2012 15:11:00 -0000 From: Luis Gustavo Reply-To: "Gustavo, Luis" User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.27) Gecko/20120216 Lightning/1.0b2 Thunderbird/3.1.19 MIME-Version: 1.0 To: Xin Tong CC: gdb@sourceware.org Subject: Re: Hardware watchpoint for read References: <4F96A614.3040303@mentor.com> <4F96A812.4000008@mentor.com> <4F96B68C.3050703@mentor.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2012-04/txt/msg00199.txt.bz2 On 04/24/2012 12:06 PM, Xin Tong wrote: > On Tue, Apr 24, 2012 at 10:19 AM, Luis Gustavo wrote: >> On 04/24/2012 11:17 AM, Xin Tong wrote: >>> >>> On Tue, Apr 24, 2012 at 9:18 AM, Luis Gustavo >>> wrote: >>>> >>>> On 04/24/2012 10:15 AM, Xin Tong wrote: >>>>> >>>>> >>>>> On Tue, Apr 24, 2012 at 9:09 AM, Luis Gustavo >>>>> wrote: >>>>>> >>>>>> >>>>>> Hi, >>>>>> >>>>>> >>>>>> On 04/24/2012 10:02 AM, Xin Tong wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> Hello >>>>>>> >>>>>>> I am wondering that can gdb insert hardware watch point for read to >>>>>>> the watched memory ? can other debugger do that ? is it supported in >>>>>>> hardware watchpoint ? >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> Xin >>>>>>> >>>>>> >>>>>> Read watchpoints are hard to implement as soft-watchpoints, so they're >>>>>> usually implemented as hardware watchpoints. >>>>> >>>>> >>>>> >>>>> software write watchpoint is easier to implement ? do not software >>>>> watchpoint need to watch all memory accesses (read and write) to a >>>>> memory location in software ? >>>> >>>> >>>> >>>> Writes are "easier" to implemenet due to the fact that they usually >>>> change >>>> memory contents. Reads don't. >>> >>> >>> Either way, do not gdb need to instrument every memory accesses if a >>> software watch point is used ? >> >> >> It does things lazily. It single-steps instruction-by-instruction and checks >> for change of contents. > > ok, i see. so it does not dissasmble the instructions. but for read, > it may need to disassemble the instructions which makes it harder to > implement. Yes, this is the problem with read watchpoints implemented as software watchpoints. It's hard to determine a trigger without making it painfully slow, and the debugger needs knowledge about the arch's instructions. >> >> >>>> >>>> >>>>> >>>>>> >>>>>> If a debugger knows how to properly set the bits in the hardware, >>>>>> either >>>>>> through ptrace or other means, it can configure a read/write/read-write >>>>>> watchpoint. Depends on hardware support really. >>>>> >>>>> >>>>> >>>>> do you know whether this is supported on the x86 chips ? is thee a way >>>>> to try this out in gdb ? >>>> >>>> >>>> >>>> All those modes should be supported in x86. Try "watch", "rwatch" and >>>> "awatch". >>> >>> >>> how are hardware watch, rwatch and awatch implemented in gdb. make >>> call to ptrace apis and ptrace apis program some x86 registers >>> through a driver interfaces ? >>> >> >> ptrace calls really. GDB's x86 backend knows how to set those bits. >> >>>> >>>>> >>>>>> >>>>>> Regards, >>>>>> Luis >>>> >>>> >>>> >>