From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25910 invoked by alias); 5 May 2003 03:35:43 -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 25899 invoked from network); 5 May 2003 03:35:42 -0000 Received: from unknown (HELO localhost.redhat.com) (24.157.166.107) by sources.redhat.com with SMTP; 5 May 2003 03:35:42 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 2D97A2B2F; Sun, 4 May 2003 23:35:27 -0400 (EDT) Message-ID: <3EB5DBFF.6030009@redhat.com> Date: Mon, 05 May 2003 03:35:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030223 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Mark Kettenis Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH/i386newframe/RFC] DWARF CFI frame unwinder References: <200305042207.h44M7gNG023734@elgar.kettenis.dyndns.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-05/txt/msg00055.txt.bz2 Mark, fyi, > + case REG_SAVED_REG: > + *optimizedp = 0; > + *lvalp = lval_register; > + *addrp = 0; > + *realnump = DWARF2_REG_TO_REGNUM (cache->reg[regnum].loc.reg); > + if (valuep) > + { > + /* Read the value from the register. */ > + frame_unwind_register (next_frame, *realnump, valuep); > + } > + break; > + Set *addrp to the register offset hack (Otherwize something mysterious fails. What? I don't remember). Using the frame obstack for memory looks right. > +static CORE_ADDR > +dwarf_frame_base_address (struct frame_info *next_frame, void **this_cache) > +{ > + struct dwarf_frame_cache *cache = dwarf_frame_cache (next_frame, this_cache); > + > + return cache->cfa; > +} This isn't right. It should return DW_AT_frame_base. However, since dwarf2expr.c doesn't yet use these methods it doesn't [?] really matter. Only affects ``info frame''. I suspect things like execute_stack_op might need more cleanups. A dead target, or bad memory read, can throw an error. Looks like the interface works (and oh so much cleaner than the old code) :-) Andrew