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 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


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