From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27037 invoked by alias); 2 Apr 2002 22:03:02 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 26196 invoked from network); 2 Apr 2002 22:01:45 -0000 Received: from unknown (HELO nevyn.them.org) (128.2.145.6) by sources.redhat.com with SMTP; 2 Apr 2002 22:01:45 -0000 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 16sWLZ-000129-00; Tue, 02 Apr 2002 17:01:45 -0500 Date: Tue, 02 Apr 2002 14:03:00 -0000 From: Daniel Jacobowitz To: Doug Evans Cc: gdb@sources.redhat.com Subject: Re: STOPPED_BY_WATCHPOINT peculiarity Message-ID: <20020402170145.A3797@nevyn.them.org> Mail-Followup-To: Doug Evans , gdb@sources.redhat.com References: <200204022154.NAA10074@casey.transmeta.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200204022154.NAA10074@casey.transmeta.com> User-Agent: Mutt/1.3.23i X-SW-Source: 2002-04/txt/msg00009.txt.bz2 On Tue, Apr 02, 2002 at 01:54:47PM -0800, Doug Evans wrote: > Something is not right, or at least confusing, in watchpoint-land. > > This code in infrun.c is odd: > > /* It may be possible to simply continue after a watchpoint. */ > if (HAVE_CONTINUABLE_WATCHPOINT) > STOPPED_BY_WATCHPOINT (ecs->ws); > > STOPPED_BY_WATCHPOINT is a predicate. > Therefore at first glance this code is pointless. > > Things are slightly less confusing by recognizing that in the > process of computing STOPPED_BY_WATCHPOINT some debugging printf's > may get printed. e.g. grep for maint_show_dr in > i386-nat.c:i386_stopped_data_address. > > nm-i386.h: > #define STOPPED_BY_WATCHPOINT(W) (i386_stopped_data_address () != 0) > > Is that all there is to it? > > If so, a comment should be added, maybe something like > > - /* It may be possible to simply continue after a watchpoint. */ > + /* It may be possible to simply continue after a watchpoint. > + While at first glance this code is pointless, STOPPED_BY_WATCHPOINT > + is called in case there are any maintenance debugging printf's. */ > if (HAVE_CONTINUABLE_WATCHPOINT) > STOPPED_BY_WATCHPOINT (ecs->ws); What astonishing timing... I believe there is more going on here, and I was in the middle of looking at this code just a moment ago. See the test failure on i386-linux in gdb.c++/annota2.exp (watch a.x). We have a problem actually correctly detecting that we are stopped by a watchpoint. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer