This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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: ARM/thumb interworking confuses unwinder


On Thu, Jul 24, 2008 at 01:52:49PM +0100, Jonathan Larmour wrote:
> Does that mean that the other code generating stubs in
> elf32_thumb_to_arm_stub() is redundant and thus obsolete?

It handles several different kinds of relocations not supported by
the new code.

I strongly believe it should be removed and the old relocations
handled by the new code.  Having two ways to do it is too complex.

> > There are other stubs that can use 'lr' (eg plt ones, and
> > non-interworking aware ones). How do they deal with this issue?
> 
> Good question. Perhaps I should have more precisely said "can never work
> with C++ exceptions as currently implemented in GCC". It's possible that
> GCC's ARM EABI unwinder needs fixing. CodeSourcery did that work. Paging
> Daniel Jacobowitz... :-).

PLT ones are not related.  While they appear to use lr, they're not
returned through, so exceptions never pass through them.  The resolver
restores lr when it transfers control to the destination function.

I don't know about the non-interworking-aware ones.  I suspect they're
just broken; we'd have to generate new unwind information for them.

The comment at "Thumb->(non-interworking aware) ARM" is totally
mangled, I see... can't quite work out what it's saying.

-- 
Daniel Jacobowitz
CodeSourcery


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