linux-mips
[Top] [All Lists]

Re: Error: Branch out of range

To: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Subject: Re: Error: Branch out of range
From: Ralf Baechle <ralf@oss.sgi.com>
Date: Thu, 16 Mar 2000 11:29:10 -0300
Cc: linux@cthulhu.engr.sgi.com
In-reply-to: <Pine.GSO.4.10.10003151603070.20855-100000@dandelion.sonytel.be>
References: <Pine.GSO.4.10.10003151603070.20855-100000@dandelion.sonytel.be>
Sender: owner-linuxmips@oss.sgi.com
On Wed, Mar 15, 2000 at 04:08:08PM +0100, Geert Uytterhoeven wrote:

> I'm trying to compile lmbench on Linux/MIPS(EL). Gcc (egcs-2.90.27 980315
> (egcs-1.0.2 release)) complains about

No, as from binutils (all versions) coplains.

> ../bin/linux/lat_ctx.s: Assembler messages:
> ../bin/linux/lat_ctx.s:4293: Error: Branch out of range
> ../bin/linux/lat_ctx.s:40459: Error: Branch out of range
> 
> At line 4293 it jumps to line 40460 using `j', which is obviously further then
> 32K instructions apart (and incompatible with -KPIC, which is always[*] used).
> 
> How can I fix this?

 - Fix the assembler.  Enjoy ...  lmbench is faik the only real world
   program which triggers this problem so I've never been very motivated to
   fix this ...
 - Get a newer version of lmbench which does no longer rely on such insane
   large loops.

> [*] Why is MIPS code always compiled PIC?

The calling convention for PIC code is to always have the address of the
callee in $25.  This implies that mixing PIC and non-PIC code is not
possible, therefore everything is PIC.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>