This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Notes on a frame_unwind_address_in_block problem


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]