From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30628 invoked by alias); 11 Jan 2002 13:39:12 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 30584 invoked from network); 11 Jan 2002 13:39:07 -0000 Received: from unknown (HELO cerbere.u-strasbg.fr) (130.79.112.7) by sources.redhat.com with SMTP; 11 Jan 2002 13:39:07 -0000 Received: from laocoon (laocoon.u-strasbg.fr [130.79.112.72]) by cerbere.u-strasbg.fr (8.9.3/8.8.7) with ESMTP id OAA29993; Fri, 11 Jan 2002 14:38:50 +0100 Message-Id: <4.2.0.58.20020111143044.019c7e50@ics.u-strasbg.fr> X-Sender: muller@ics.u-strasbg.fr X-Mailer: QUALCOMM Windows Eudora Pro Version 4.2.0.58 Date: Fri, 11 Jan 2002 05:39:00 -0000 To: Eli Zaretskii , Mark Kettenis From: Pierre Muller Subject: Re: [RFA/RFC 2] Remove hardware break and watchpoints at program exit. Cc: gdb-patches@sources.redhat.com In-Reply-To: <2561-Fri11Jan2002143543+0200-eliz@is.elta.co.il> References: <4.2.0.58.20020111125745.0135ea48@ics.u-strasbg.fr> <4.2.0.58.20020111125745.0135ea48@ics.u-strasbg.fr> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit X-SW-Source: 2002-01/txt/msg00286.txt.bz2 At 13:35 11/01/2002 , Eli Zaretskii a écrit: > > Date: Fri, 11 Jan 2002 13:00:44 +0100 > > From: Pierre Muller > > > > In breakpoint_init_inferior > > I added code that conditionally removes hardware watch and breakpoint > > if the context is inf_exited, i.e. at exit of the debugged program. > >Thanks. I like this approach much better, especially because I never >understood why does GDB do certain cleanups when the debuggee exits, >but doesn't do other, similar cleanups. > > > I still kept the call to a generic hardware removal function > > and testing the i386 case, I could see that even though the dr_mirror > > array is zeored out, the dr_control_mirror and > > dr_status_mirror still aren't set to zero. > > For dr_control_register, this is due to an error in the I386_DR_DISABLE > > because that macro only resets the active bit, but not the size and type bits > > associated to that debug register. > >Why is this a problem? Once the active bit is off, the corresponding >debug register is inactive, and its value is not important. The code does already generate a claim for i386 linux: the linux code tries to write the dr registers using ptrace but as the process is already finished, this fails. See i386-linux-nt.c line 741. How could this be solved? By adding a test if (target_has_execution ) ptrace(....) If this is correct, the same code should also be used for i386-bsd-nat.c Pierre Muller Institut Charles Sadron 6,rue Boussingault F 67083 STRASBOURG CEDEX (France) mailto:muller@ics.u-strasbg.fr Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99