From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32188 invoked by alias); 2 Jul 2003 19:11:00 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 32162 invoked from network); 2 Jul 2003 19:10:59 -0000 Received: from unknown (HELO frothingslosh.sfbay.redhat.com) (66.187.237.200) by sources.redhat.com with SMTP; 2 Jul 2003 19:10:59 -0000 Received: from frothingslosh.sfbay.redhat.com (localhost.localdomain [127.0.0.1]) by frothingslosh.sfbay.redhat.com (8.12.8/8.12.8) with ESMTP id h62JAx2m002101 for ; Wed, 2 Jul 2003 12:10:59 -0700 Received: (from rth@localhost) by frothingslosh.sfbay.redhat.com (8.12.8/8.12.8/Submit) id h62JAxlk002099 for gdb@sources.redhat.com; Wed, 2 Jul 2003 12:10:59 -0700 X-Authentication-Warning: frothingslosh.sfbay.redhat.com: rth set sender to rth@redhat.com using -f Date: Wed, 02 Jul 2003 19:11:00 -0000 From: Richard Henderson To: gdb@sources.redhat.com Subject: Re: Dwarf unwinder problems with store.exp and preserved regs Message-ID: <20030702191059.GD1914@redhat.com> References: <20030701214429.GA3913@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20030701214429.GA3913@nevyn.them.org> User-Agent: Mutt/1.4i X-SW-Source: 2003-07/txt/msg00046.txt.bz2 On Tue, Jul 01, 2003 at 05:44:30PM -0400, Daniel Jacobowitz wrote: > However, GCC only emits information about the CFA, not about the default > saved-ness of registers. So we get: > > 168 /* Initialize newly allocated registers. */ > 169 memset (rs->reg + rs->num_regs, 0, (num_regs - rs->num_regs) * size); > > And 0 is UNDEFINED. So $ebx - a call-saved register on i386 - shows up as > undefined. I think this is your bug. > - Fix GCC. I -believe-, from reading the spec, that GCC is to blame for > not emiting this information. No, what GCC doesn't provide is clobber information. It *does* provide save information. GDB should be assuming the register is valid in the previous frame unless it sees DW_CFA_undefined. Leastwise, that's certainly what gcc's frame unwinder assumes, and I don't see anything that contradicts this in the standard. r~