This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: ARM long branch stub: thumb
> > The "non-interworking aware" veneers are something completely different,
> > and documented to not work in many cases.
>
> Sorry, I'm still a bit confused. (I'll confess that I find all the
> interworking-related corner cases uneasy to understand as it is
> documented in so many places but each time from a different perspective)
>
> My intention is that the "long branch stubs" also support "short branch
> stubs" as they already handle Thumb/Arm mode switch. I think it would be
> more consistent to have only one scheme to insert all these stub variants.
>
> So... what do you mean by "completely different"? I think I missed the
> documentation which warns about the cases which don't work. Do you have
> a reference?
There are two kinds of veneers: (a) Those that occur as part of normal
interworking aware code, and (b) ugly hacks to allow use of crufty old
non-interworking aware code.
The ARM EABI requires code be interworking safe, so (b) only occurs for legacy
targets, usually when you're working with ancient third party binary only
libraries.
I don't know if anyone actually uses (b) any more. gcc has supported
generation of interworking safe code pretty much forever, and it's been free
on v5t cores for almost as long, so I'm tempted to rip it out and see if
anyone complains.
See also
http://gcc.gnu.org/viewcvs/trunk/gcc/config/arm/README-interworking?revision=138078
That file predates the EABI and hasn't been kept up to date, so might not
match the current implementation.
Paul