From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5820 invoked by alias); 9 Sep 2003 21:25: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 5782 invoked from network); 9 Sep 2003 21:25:10 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 9 Sep 2003 21:25:10 -0000 Received: from drow by nevyn.them.org with local (Exim 4.22 #1 (Debian)) id 19wpz1-0001V3-Ld; Tue, 09 Sep 2003 17:25:07 -0400 Date: Tue, 09 Sep 2003 21:25:00 -0000 From: Daniel Jacobowitz To: Elena Zannoni Cc: gdb-patches@sources.redhat.com, jimb@redhat.com Subject: Re: [rfa/6.0] Fix a thinko in dwarf2loc Message-ID: <20030909212507.GA5686@nevyn.them.org> Mail-Followup-To: Elena Zannoni , gdb-patches@sources.redhat.com, jimb@redhat.com References: <20030801193245.GA2529@nevyn.them.org> <20030817205822.GD11300@nevyn.them.org> <20030824164855.GA17841@nevyn.them.org> <20030907041237.GB10340@nevyn.them.org> <16222.17838.527612.509356@localhost.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <16222.17838.527612.509356@localhost.redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-09/txt/msg00177.txt.bz2 On Tue, Sep 09, 2003 at 05:27:10PM -0400, Elena Zannoni wrote: > Daniel Jacobowitz writes: > > On Sun, Aug 24, 2003 at 12:48:55PM -0400, Daniel Jacobowitz wrote: > > > On Sun, Aug 17, 2003 at 04:58:22PM -0400, Daniel Jacobowitz wrote: > > > > On Fri, Aug 01, 2003 at 03:32:45PM -0400, Daniel Jacobowitz wrote: > > > > > Any variable with DW_OP_reg* requires a frame to read it - what > > > > > symbol_read_needs_frame () really means is "is this variable meaningful when > > > > > the program is not running". > > > > > > > > > > This would show up in the testsuite, but GCC doesn't tend to put locals in > > > > > registers without optimization or register keywords everywhere. Symptom is > > > > > that a watchpoint was not deleted when we left its scope, since we thought > > > > > it was global. > > > > > > > > > > OK? > > > > > > > > Ping... > > > > > > > > [Does dwarf2loc fall under the maintenance umbrella of the dwarf2 > > > > reader?] > > > > > > Ping? I would like to fix this bug for 6.0. > > > > Jim, Elena? I hit this bug again in testing the > > deprecated_safe_get_selected_frame () patch. > > > > > > > 2003-08-01 Daniel Jacobowitz > > > > > > > > > > * dwarf2loc.c (dwarf2_loc_desc_needs_frame): Variables in a > > > > > register do need a frame. > > > > > > > > > > --- gdb-5.3.20030801/gdb/dwarf2loc.c.orig 2003-08-01 14:58:57.000000000 -0400 > > > > > +++ gdb-5.3.20030801/gdb/dwarf2loc.c 2003-08-01 15:00:05.000000000 -0400 > > > > > @@ -318,7 +318,7 @@ dwarf2_loc_desc_needs_frame (unsigned ch > > > > > > > > > > free_dwarf_expr_context (ctx); > > > > > > > > > > - return baton.needs_frame; > > > > > + return baton.needs_frame || ctx->in_reg; > > > > > } > > > > > > > Hmmm, the ctx just got freed, you cannot dereference it. Need to use a Eek, I'm embarassed. You are so right. > local variable. What you are really saying here is that the > needs_frame variable is not sufficient to describe what's needed. Can > the case be added, so that needs_frame becomes OK? Proabably you > need another need_frame_* function. No, I can't. The needs_frame_* functions are hooks for things which are external to the expression evaluator - concepts like "object" and "thread local storage address" which require information. But the evaluator won't actually try to read from the register when parsing a DW_OP_reg1; it just sets in_reg. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer