PATCH: IA64: Don't relax branch in .init/.fini sections.

H. J. Lu hjl@lucon.org
Wed Jun 30 00:05:00 GMT 2004


On Tue, Jun 29, 2004 at 04:49:05PM -0700, Jim Wilson wrote:
> On Sat, 2004-06-26 at 22:53, H. J. Lu wrote:
> > 	* elfxx-ia64.c (elfNN_ia64_relax_section): Don't relax branch
> > 	in .init/.fini sections.
> 
> This looks OK to me.
> 
> You suggest using brl.  The gcc startup files deliberately use indirect

I will change that.

> branches to avoid this problem.  We load the function address into a
> register, and then branch on the register.  This also avoids use of brl
> which is a slow on an Itanium1.  If we can ignore Itanium1, then we can
> simplify the gcc startup code a little bit.

I think we can do it for gcc 3.4 and above.

> 
> The error message doesn't give any hint about which instruction can't be
> relocated.  Which means if you have lots of them you are screwed.  This

I will see what I can do.

> might be rare enough that we don't have to worry about it.  You didn't
> give any info on how the problem was detected, so I can't tell if this
> matters.


It came from icc. When I used icc to build a big application, linker
failed to issue an error. I got run-time failure instead.

Thanks.


H.J.



More information about the Binutils mailing list