From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25758 invoked by alias); 10 Sep 2003 19:53:07 -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 25751 invoked from network); 10 Sep 2003 19:53:06 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 10 Sep 2003 19:53:06 -0000 Received: from drow by nevyn.them.org with local (Exim 4.22 #1 (Debian)) id 19xB1W-0002lj-66; Wed, 10 Sep 2003 15:53:06 -0400 Date: Wed, 10 Sep 2003 19:53:00 -0000 From: Daniel Jacobowitz To: Richard Henderson Cc: gdb-patches@sources.redhat.com Subject: Re: [rfa/6.0] Better handle unspecified CFI values Message-ID: <20030910195306.GA10566@nevyn.them.org> Mail-Followup-To: Richard Henderson , gdb-patches@sources.redhat.com References: <3F593115.4030407@redhat.com> <20030906213351.GA1101@nevyn.them.org> <3F5D1AE7.7020306@redhat.com> <20030909033053.GA8904@nevyn.them.org> <20030910194754.GC15867@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20030910194754.GC15867@redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-09/txt/msg00204.txt.bz2 On Wed, Sep 10, 2003 at 12:47:54PM -0700, Richard Henderson wrote: > On Mon, Sep 08, 2003 at 11:30:53PM -0400, Daniel Jacobowitz wrote: > > We can only compute expressions > > describing a memory location where the register is saved, not computed > > values. > > False. See DW_CFA_expression. True. See DW_CFA_expression. 20. DW_CFA_expression The DW_CFA_expression instruction takes two operands: an unsigned LEB128 value representing a register number, and a DW_FORM_block value representing a DWARF expression. The required action is to establish the DWARF expression as the means by which the address in which the given register contents are found may be computed. The value of the CFA is pushed on the DWARF evaluation stack prior to execution of the DWARF expression. The DW_OP_call2, DW_OP_call4, DW_OP_call_ref and DW_OP_push_object_address DWARF operators (see Section 2.4.1) cannot be used in such a DWARF expression. It computes "the address in which the given register contents are found". That's not ambiguous, and that's precisely how GCC uses it: _Unwind_SetGRPtr (context, i, (void *) val); -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer