From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9363 invoked by alias); 3 Aug 2006 13:27:17 -0000 Received: (qmail 9339 invoked by uid 22791); 3 Aug 2006 13:27:16 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Thu, 03 Aug 2006 13:27:10 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1G8dE7-0005fY-3F; Thu, 03 Aug 2006 09:27:03 -0400 Date: Thu, 03 Aug 2006 13:27:00 -0000 From: Daniel Jacobowitz To: Andi Kleen Cc: Andreas Jaeger , Mark Kettenis , gdb@sourceware.org, libc-alpha@sourceware.org Subject: Re: Notes on a frame_unwind_address_in_block problem Message-ID: <20060803132702.GA21558@nevyn.them.org> Mail-Followup-To: Andi Kleen , Andreas Jaeger , Mark Kettenis , gdb@sourceware.org, libc-alpha@sourceware.org References: <20060706222157.GA1377@nevyn.them.org> <200608030511.46390.ak@suse.de> <20060803032136.GA7647@nevyn.them.org> <200608030529.13642.ak@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200608030529.13642.ak@suse.de> User-Agent: Mutt/1.5.11+cvs20060403 X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2006-08/txt/msg00019.txt.bz2 On Thu, Aug 03, 2006 at 05:29:13AM +0200, Andi Kleen wrote: > > There was a third problem other than the two I mentioned above but > > I'm afraid I can't remember what it was now. I'd have to try it again. > > I did work around both the uleb128 and sleb128 problems, and there's > > actually a signal frame marker in sufficiently recent gas, but I > > ran into another problem that made me give up. > > Which parts exactly of the signal frame does gas have trouble with? This is the same thing that required the complicated macros in i386. The problem is that the CFA is not at a fixed offset from the final stack pointer, and the saved registers are fixed relative to the final stack pointer - not the CFA. So every single register has a complicated expression, instead of just the CFA being complicated. They're not fixed relative to the CFA because the CFA is the address before any increased alignment. It's the round_down in get_stack(). So each register is "current sp plus offset", and there's no way to write that sort of expression directly from gas. -- Daniel Jacobowitz CodeSourcery