From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5450 invoked by alias); 11 Sep 2003 17:17:10 -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 5443 invoked from network); 11 Sep 2003 17:17:09 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 11 Sep 2003 17:17:09 -0000 Received: from drow by nevyn.them.org with local (Exim 4.22 #1 (Debian)) id 19xV49-0002t6-1F for ; Thu, 11 Sep 2003 13:17:09 -0400 Date: Thu, 11 Sep 2003 17:17:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Subject: Re: [rfa/6.0] Fix a thinko in dwarf2loc Message-ID: <20030911171708.GA8447@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.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> <20030909212507.GA5686@nevyn.them.org> <16222.23051.280481.102836@localhost.redhat.com> <3F5E5B68.5020902@redhat.com> <20030911155039.GA31645@nevyn.them.org> <16224.45033.39860.763199@localhost.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <16224.45033.39860.763199@localhost.redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-09/txt/msg00222.txt.bz2 On Thu, Sep 11, 2003 at 01:24:57PM -0400, Elena Zannoni wrote: > Daniel Jacobowitz writes: > > On Tue, Sep 09, 2003 at 06:59:52PM -0400, Andrew Cagney wrote: > > > > > > > > > > + 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. > > > > > > > >Oh, ok, I guess save ctx->in_reg in a local variable then. > > > > > > > >elena > > > > > > Thanks for picking this up. So there's no confusion I'm also ok with > > > this on the branch. > > > > Thank you both. Checked in. > > Just for completeness, can you post the patch? > > thanks > elena Oops. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer 2003-09-11 Daniel Jacobowitz * dwarf2loc.c (dwarf2_loc_desc_needs_frame): Variables in a register do need a frame. Index: dwarf2loc.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2loc.c,v retrieving revision 1.12 diff -u -p -r1.12 dwarf2loc.c --- dwarf2loc.c 22 Jul 2003 18:24:42 -0000 1.12 +++ dwarf2loc.c 11 Sep 2003 14:57:16 -0000 @@ -304,6 +304,7 @@ dwarf2_loc_desc_needs_frame (unsigned ch { struct needs_frame_baton baton; struct dwarf_expr_context *ctx; + int in_reg; baton.needs_frame = 0; @@ -316,9 +317,11 @@ dwarf2_loc_desc_needs_frame (unsigned ch dwarf_expr_eval (ctx, data, size); + in_reg = ctx->in_reg; + free_dwarf_expr_context (ctx); - return baton.needs_frame; + return baton.needs_frame || in_reg; } static void